Telescope 官方 README 建議不要追 master 版本,我也真的踩過雷,所以一直停在 0.1.8,18 個月前的東西了。
前幾天終於釋出 0.1.9,變動列出來很長:
Release v0.1.9 · nvim-telescope/telescope.nvim
(我也貢獻了一個 PR)
光看標記為 feat 的就要花些時間了,本篇選幾個列出來。
新增 actions.select_tab_drop
選擇檔案後要怎麼開啟,身為分頁使用者當然是用 tab drop 啊。
這個 2022 年就實作的東西一直沒有釋出,我用自己寫的 function 代用很久,終於能換掉了。
除了一些檔案類 picker 能直接設定 mappings 例如 ['<CR>'] = 'select_tab_drop' 這樣,在一些 LSP picker 也能用 jump_type = 'tab drop' 達到相當效果(#2218、#2751)。
顯示 * 表示正在搜尋
就是搜尋框後面會多一個顯示,跑完就會消失 (#2637)。
新增 actions.delete_buffer
給 buffers picker 用的,預設按鍵是 <M-d>。
(#3145)
新事件 TelescopeResumePost
原來 telescope 有幾個自訂 User 事件 (autocmd),doc 沒寫,只有 README 有提到。
但應該是 plugin 開發者比較有機會用到。
(#2433)
插入 <cWORD>、<cfile> 等
以前在 picker 輸入框裡想用 <C-R><C-W>(貼上游標文字)或 <C-R>%(目前檔案路徑)會發現貼不出東西,現在特別加了幾個預設 mapping 來做這些事。
(#3134 等)
新增「bcommits_range」 picker
以前雖然有 bcommits picker 可以列出目前檔案的歷史,但沒辦法針對「特定幾行」或「目前這一行」比較精準地追溯,現在新增 bcommits_range 滿足你的願望,#2398。
不過預設動作只有 checkout 或者打開 diff,我的習慣還是用 vim-gitdiffall 這老東西:
※這個範例用到我自己寫的 vim function,所以不能真的拿來用,僅供參考gitdiff = function(bufnr)
-- Refer to builtin: actions.git_checkout_current_buffer
local cwd = action_state.get_current_picker(bufnr).cwd
local selection = action_state.get_selected_entry()
actions.close(bufnr)
local fugitive_path = vim.fn.FugitivePath(selection.current_file)
local display_name = vim.fn.fnamemodify(fugitive_path, ':.')
local command = string.format("tabnew %s | silent GitDiff @%s", display_name, selection.value)
vim.cmd(command)
end,
gitdiffall = function(bufnr)
local cwd = action_state.get_current_picker(bufnr).cwd
local selection = action_state.get_selected_entry()
actions.close(bufnr)
local toplevel = vim.fn.eval("fugitive#repo().tree()")
vim.fn.TmuxNewWindow({
text = "gitdiffall @" .. selection.value,
title = '⎇',
directory = toplevel
})
end,