Skip to content

Commit

Permalink
Cycle previewers
Browse files Browse the repository at this point in the history
  • Loading branch information
Conni2461 committed Feb 12, 2021
1 parent 0999599 commit 3f37238
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 20 deletions.
14 changes: 13 additions & 1 deletion lua/telescope/actions/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,9 @@ local do_close = function(prompt_bufnr, keepinsert)
local original_win_id = picker.original_win_id

if picker.previewer then
picker.previewer:teardown()
for _, v in ipairs(picker.all_previewers) do
v:teardown()
end
end

actions.close_pum(prompt_bufnr)
Expand Down Expand Up @@ -333,6 +335,16 @@ actions.open_qflist = function(_)
vim.cmd [[copen]]
end

actions.cycle_previewers_next = function(prompt_bufnr)
local picker = actions.get_current_picker(prompt_bufnr)
picker:cycle_previewers(1)
end

actions.cycle_previewers_prev = function(prompt_bufnr)
local picker = actions.get_current_picker(prompt_bufnr)
picker:cycle_previewers(-1)
end

-- ==================================================
-- Transforms modules and sets the corect metatables.
-- ==================================================
Expand Down
8 changes: 8 additions & 0 deletions lua/telescope/builtin/git.lua
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@ git.commits = function(opts)
entry_maker = opts.entry_maker or make_entry.gen_from_git_commits(opts),
},
previewer = previewers.git_commit_diff_to_parent.new(opts),
alt_previewers = {
previewers.git_commit_diff_to_head.new(opts),
previewers.git_commit_diff_as_was.new(opts),
},
sorter = conf.file_sorter(opts),
attach_mappings = function()
actions.goto_file_selection_edit:replace(actions.git_checkout)
Expand All @@ -66,6 +70,10 @@ git.bcommits = function(opts)
entry_maker = opts.entry_maker or make_entry.gen_from_git_commits(opts),
},
previewer = previewers.git_commit_diff_to_parent.new(opts),
alt_previewers = {
previewers.git_commit_diff_to_head.new(opts),
previewers.git_commit_diff_as_was.new(opts),
},
sorter = conf.file_sorter(opts),
attach_mappings = function()
actions.goto_file_selection_edit:replace(actions.git_checkout_current_buffer)
Expand Down
3 changes: 3 additions & 0 deletions lua/telescope/mappings.lua
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ mappings.default_mappings = config.values.default_mappings or {
["<C-u>"] = actions.preview_scrolling_up,
["<C-d>"] = actions.preview_scrolling_down,

["<C-s>"] = actions.cycle_previewers_next,
["<C-a>"] = actions.cycle_previewers_prev,

-- TODO: When we implement multi-select, you can turn this back on :)
-- ["<Tab>"] = actions.add_selection,
},
Expand Down
26 changes: 26 additions & 0 deletions lua/telescope/pickers.lua
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,11 @@ function Picker:new(opts)

finder = opts.finder,
sorter = opts.sorter,

previewer = opts.previewer,
all_previewers = opts.alt_previewers or {},
current_previewer_index = 1,

default_selection_index = opts.default_selection_index,

cwd = opts.cwd,
Expand Down Expand Up @@ -127,6 +131,7 @@ function Picker:new(opts)
preview_cutoff = get_default(opts.preview_cutoff, config.values.preview_cutoff),
}, self)

table.insert(obj.all_previewers, 1, obj.previewer)

obj.scroller = p_scroller.create(
get_default(opts.scroll_strategy, config.values.scroll_strategy),
Expand Down Expand Up @@ -748,6 +753,27 @@ function Picker:set_selection(row)
end
end

function Picker:cycle_previewers(next)
local size = table.getn(self.all_previewers)
if size == 1 then return end

local status = state.get_status(self.prompt_bufnr)

self.current_previewer_index = self.current_previewer_index + next
if self.current_previewer_index > size then self.current_previewer_index = 1 end
if self.current_previewer_index < 1 then self.current_previewer_index = size end

self.previewer = self.all_previewers[self.current_previewer_index]

if status.preview_win and self.previewer then
self:_increment("previewed")

self.previewer:preview(
self._selection_entry,
status
)
end
end

function Picker:entry_adder(index, entry, _, insert)
local row = self:get_row(index)
Expand Down
41 changes: 22 additions & 19 deletions lua/telescope/previewers/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -8,26 +8,29 @@ previewers.new = function(...)
return Previewer:new(...)
end

previewers.new_termopen_previewer = term_previewer.new_termopen_previewer
previewers.cat = term_previewer.cat
previewers.vimgrep = term_previewer.vimgrep
previewers.qflist = term_previewer.qflist
previewers.new_termopen_previewer = term_previewer.new_termopen_previewer
previewers.cat = term_previewer.cat
previewers.vimgrep = term_previewer.vimgrep
previewers.qflist = term_previewer.qflist

previewers.new_buffer_previewer = buffer_previewer.new_buffer_previewer
previewers.buffer_previewer_maker = buffer_previewer.file_maker
previewers.vim_buffer_cat = buffer_previewer.cat
previewers.vim_buffer_vimgrep = buffer_previewer.vimgrep
previewers.vim_buffer_qflist = buffer_previewer.qflist
previewers.git_branch_log = buffer_previewer.git_branch_log
previewers.git_commit_diff = buffer_previewer.git_commit_diff
previewers.git_file_diff = buffer_previewer.git_file_diff
previewers.ctags = buffer_previewer.ctags
previewers.builtin = buffer_previewer.builtin
previewers.help = buffer_previewer.help
previewers.man = buffer_previewer.man
previewers.autocommands = buffer_previewer.autocommands
previewers.highlights = buffer_previewer.highlights
previewers.display_content = buffer_previewer.display_content
previewers.new_buffer_previewer = buffer_previewer.new_buffer_previewer
previewers.buffer_previewer_maker = buffer_previewer.file_maker
previewers.vim_buffer_cat = buffer_previewer.cat
previewers.vim_buffer_vimgrep = buffer_previewer.vimgrep
previewers.vim_buffer_qflist = buffer_previewer.qflist
previewers.git_branch_log = buffer_previewer.git_branch_log
previewers.git_commit_diff = buffer_previewer.git_commit_diff
previewers.git_commit_diff_to_parent = buffer_previewer.git_commit_diff_to_parent
previewers.git_commit_diff_to_head = buffer_previewer.git_commit_diff_to_head
previewers.git_commit_diff_as_was = buffer_previewer.git_commit_diff_as_was
previewers.git_file_diff = buffer_previewer.git_file_diff
previewers.ctags = buffer_previewer.ctags
previewers.builtin = buffer_previewer.builtin
previewers.help = buffer_previewer.help
previewers.man = buffer_previewer.man
previewers.autocommands = buffer_previewer.autocommands
previewers.highlights = buffer_previewer.highlights
previewers.display_content = buffer_previewer.display_content

previewers.Previewer = Previewer

Expand Down

0 comments on commit 3f37238

Please sign in to comment.