diff --git a/doc/telescope.txt b/doc/telescope.txt index 7bc2062..1cf5c91 100644 --- a/doc/telescope.txt +++ b/doc/telescope.txt @@ -659,9 +659,12 @@ builtin.buffers({opts}) *builtin.buffers()* {only_cwd} (boolean) if true, only show buffers in the current working directory (default false) - {sort_lastused} (boolean) if true, sort the shown buffers so - that the last used one is selected + {sort_lastused} (boolean) Sorts current and last buffer to the + top and selects the lastused (default false) + {sort_mru} (boolean) Sorts all buffers after most recent + used. Not just the current and last + one (default false) {bufnr_width} (number) Defines the width of the buffer numbers in front of the filenames diff --git a/lua/telescope/builtin/init.lua b/lua/telescope/builtin/init.lua index 0c2c461..0bb1dc3 100644 --- a/lua/telescope/builtin/init.lua +++ b/lua/telescope/builtin/init.lua @@ -248,7 +248,8 @@ builtin.reloader = require('telescope.builtin.internal').reloader ---@field show_all_buffers boolean: if true, show all buffers, including unloaded buffers (default true) ---@field ignore_current_buffer boolean: if true, don't show the current buffer in the list (default false) ---@field only_cwd boolean: if true, only show buffers in the current working directory (default false) ----@field sort_lastused boolean: if true, sort the shown buffers so that the last used one is selected (default false) +---@field sort_lastused boolean: Sorts current and last buffer to the top and selects the lastused (default false) +---@field sort_mru boolean: Sorts all buffers after most recent used. Not just the current and last one (default false) ---@field bufnr_width number: Defines the width of the buffer numbers in front of the filenames builtin.buffers = require('telescope.builtin.internal').buffers diff --git a/lua/telescope/builtin/internal.lua b/lua/telescope/builtin/internal.lua index a874016..ad6293c 100644 --- a/lua/telescope/builtin/internal.lua +++ b/lua/telescope/builtin/internal.lua @@ -593,6 +593,11 @@ internal.buffers = function(opts) return true end, vim.api.nvim_list_bufs()) if not next(bufnrs) then return end + if opts.sort_mru then + table.sort(bufnrs, function(a, b) + return vim.fn.getbufinfo(a)[1].lastused > vim.fn.getbufinfo(b)[1].lastused + end) + end local buffers = {} local default_selection_idx = 1