kamecha / traqVimPractice

Unofficial traQ Vim/Neovim plugin.
MIT License
7 stars 0 forks source link

メッセージ検索機能 #94

Open kamecha opened 4 months ago

kamecha commented 4 months ago

簡素な検索機能を提供する :Traq message search -in=general -from=kamecha うんこ みたいな感じのインターフェースにしたい

ただ取得してきたメッセージをどのように表示するのか、どうするのかはまだ未定 ひとまずdduを使わない方法で実装して、ddu使うとより便利になる感じにしたい

39

↑これとちょっと違うけど似てる

kamecha commented 4 months ago

ひとまず、該当メッセージから対象チャンネルを開くやつ実装しないとダメそう

kamecha commented 3 months ago

39

↑これとちょっと似てる感じ&選択用UIを別途提供するのも面倒

だからひとまずdduのソースとして、実装

クエリはsourceのparamsとする感じでいこう

後々vim.ui.selectとかがvimでも汎用的に使えればそっちも作る感じで

kamecha commented 3 months ago

vim.ui.selectはvimにないし、popup_menu()はneovimには無い

だからffソースを作った後に、独自viewを作る感じにする

既存のメッセージdraw用関数も流用できそう

自作viewは↓みたいな手法もある(kuuさん作)

function s:callback()
  let winid = b:id
  echomsg getline('.')
  tabclose
  call win_gotoid(winid)
endfunction

function s:select(list)
  let winid = win_getid()
  tabnew
  let b:id = winid
  setlocal buftype=nofile
  setlocal bufhidden=hide
  setlocal noswapfile
  call setline(1, a:list)
  nnoremap <buffer> <CR> <Cmd>call <SID>callback()<CR>
endfunction

call s:select(['unko', 'buri'])