commit 1a31b6a161f7286267e456950b45b82edeb59c69
parent 9c1b0c7e5a87f0423ba73907d37028e92b67eb7d
Author: Tomas Nemec <owl@gtms.dev>
Date: Thu, 9 May 2024 10:50:18 +0200
update
Diffstat:
14 files changed, 345 insertions(+), 261 deletions(-)
diff --git a/after/plugin/lsp.lua b/after/plugin/lsp.lua
@@ -11,110 +11,87 @@ local function keymap(client, buf)
-- client.server_capabilities.semanticTokensProvider = nil
+ local prefix = 'gl'
+
if client.supports_method('textDocument/definition') then
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opt 'LSP Definition')
- vim.keymap.set('n', 'crd', vim.lsp.buf.definition, opt 'LSP Definition')
+ vim.keymap.set('n', prefix .. 'd', vim.lsp.buf.definition, opt 'LSP Definition')
end
if client.supports_method('textDocument/typeDefinition') then
- vim.keymap.set('n', 'crt', vim.lsp.buf.type_definition, opt 'LSP Type Definition')
+ vim.keymap.set('n', prefix .. 't', vim.lsp.buf.type_definition, opt 'LSP Type Definition')
end
if client.supports_method('callHierarchy/incomingCalls') then
- vim.keymap.set('n', 'cri', vim.lsp.buf.incoming_calls, opt 'LSP Incoming calls')
+ vim.keymap.set('n', prefix .. 'i', vim.lsp.buf.incoming_calls, opt 'LSP Incoming calls')
+ vim.keymap.set('n', ']e', vim.lsp.buf.incoming_calls, opt 'LSP Incoming calls')
end
if client.supports_method('callHierarchy/outgoingCalls') then
- vim.keymap.set('n', 'cro', vim.lsp.buf.outgoing_calls, opt 'LSP Outgoing calls')
+ vim.keymap.set('n', prefix .. 'o', vim.lsp.buf.outgoing_calls, opt 'LSP Outgoing calls')
+ vim.keymap.set('n', '[e', vim.lsp.buf.outgoing_calls, opt 'LSP Outgoing calls')
end
if client.supports_method('textDocument/implementation') then
- vim.keymap.set('n', 'crm', vim.lsp.buf.implementation, opt 'LSP Implementation')
- vim.keymap.set('i', '<c-w><c-m>', function()
+ vim.keymap.set('n', prefix .. 'm', vim.lsp.buf.implementation, opt 'LSP Implementation')
+ vim.keymap.set('i', '<c-r><c-m>', function()
vim.cmd.split()
vim.lsp.buf.implementation()
- end, opt('LSP Implementation (Split)'))
+ end, opt 'LSP Implementation (Split)')
end
if client.supports_method('textDocument/signatureHelp') then
- vim.keymap.set({ 'n', 'i' }, '<c-s>', vim.lsp.buf.signature_help, opt('LSP Signature Help'))
+ vim.keymap.set({ 'n', 'i' }, '<c-s>', vim.lsp.buf.signature_help, opt 'LSP Signature Help')
end
if client.supports_method('textDocument/references') then
- vim.keymap.set('n', 'crf', function()
- vim.lsp.buf.references({ includeDeclaration = false })
- end, opt('LSP References'))
-
- vim.keymap.set('n', '[I', function()
- vim.lsp.buf.references({ includeDeclaration = false }, {
- on_list = function(opts)
- local curr_filename = vim.api.nvim_buf_get_name(opts.context.bufnr)
- opts.items = vim.tbl_filter(function(item)
- return item.filename == curr_filename
- end, opts.items)
-
- if #opts.items == 0 then
- vim.notify('No references in current file')
- return
- end
-
- opts.title = 'References (Current File)'
- vim.fn.setloclist(0, {}, ' ', opts)
- vim.api.nvim_command('botright lopen')
- end
- })
- end, opt('LSP References (Current File)'))
-
- vim.keymap.set('n', ']I', function()
- vim.lsp.buf.references({ includeDeclaration = false }, {
- on_list = function(opts)
- local curr_filename = vim.api.nvim_buf_get_name(opts.context.bufnr)
- local curr_lnum = opts.context.params.position.line
- opts.items = vim.tbl_filter(function(item)
- return item.filename == curr_filename and item.lnum > curr_lnum
- end, opts.items)
-
- if #opts.items == 0 then
- vim.notify('No references after current line')
- return
- end
-
- opts.title = 'References (After Current Line)'
- vim.fn.setloclist(0, {}, ' ', opts)
- vim.api.nvim_command('botright lopen')
- end
- })
- end, opt('LSP References (After Current Line)'))
+ local rhs = {
+ all = function() require 'tms.lsp.references'.all { includeDeclaration = false } end,
+ curr_file = function()
+ require 'tms.lsp.references'.all { includeDeclaration = false, loclist = true, curr_file = true }
+ end,
+ after_line = function()
+ require 'tms.lsp.references'.all { includeDeclaration = false, loclist = true, after_line = true }
+ end,
+ }
+
+ vim.keymap.set('n', prefix .. 'f', rhs.all, opt 'LSP References')
+ vim.keymap.set('n', '[<c-i>', rhs.all, opt 'LSP References')
+ vim.keymap.set('n', '[I', rhs.curr_file, opt 'LSP References in Current File')
+ vim.keymap.set('n', ']I', rhs.after_line, opt 'LSP References Below')
+ vim.keymap.set('n', '[i', require 'tms.lsp.references'.prev, opt 'LSP Previous Reference')
+ vim.keymap.set('n', ']i', require 'tms.lsp.references'.next, opt 'LSP Next Reference')
end
if client.supports_method('textDocument/codeAction') then
- vim.keymap.set({ 'n', 'v' }, 'cra', vim.lsp.buf.code_action, opt('LSP Code Actions'))
+ vim.keymap.set({ 'n', 'v' }, prefix .. 'a', vim.lsp.buf.code_action, opt 'LSP Code Actions')
end
if client.supports_method('textDocument/documentHighlight') then
- vim.keymap.set('n', '<leader>k', vim.lsp.buf.document_highlight, opt('LSP Highlight'))
+ vim.keymap.set('n', '<leader>k', vim.lsp.buf.document_highlight, opt 'LSP Highlight')
vim.api.nvim_create_autocmd('CursorMoved',
{ group = lsp_group, buffer = buf, callback = vim.lsp.buf.clear_references })
end
if client.supports_method('textDocument/inlayHint') then
- vim.keymap.set('n', 'crh', function()
+ vim.keymap.set('n', prefix .. 'h', function()
vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled())
- end, opt('LSP Inlay hints'))
+ end, opt 'LSP Inlay hints')
end
if client.supports_method('textDocument/rename') then
- vim.keymap.set('n', 'crn', vim.lsp.buf.rename, opt('LSP Rename'))
+ vim.keymap.set('n', 'cd', vim.lsp.buf.rename, opt 'LSP Rename (Change Definition)')
+ vim.keymap.set('n', prefix .. 'n', vim.lsp.buf.rename, opt 'LSP Rename')
end
if client.supports_method('typeHierarchy/supertypes') then
- vim.keymap.set('n', 'crp', function()
+ vim.keymap.set('n', prefix .. 'p', function()
vim.lsp.buf.typehierarchy('supertypes')
end, opt 'LSP Supertypes (Parents)')
end
if client.supports_method('typeHierarchy/subtypes') then
- vim.keymap.set('n', 'crc', function()
+ vim.keymap.set('n', prefix .. 'c', function()
vim.lsp.buf.typehierarchy('subtypes')
end, opt 'LSP Subtypes (Children)')
end
diff --git a/after/plugin/telescope.lua b/after/plugin/telescope.lua
@@ -2,77 +2,69 @@ if not pcall(require, 'telescope') then
return
end
-local telescope = require 'telescope'
-local actions = require 'telescope.actions'
+require 'telescope'.setup {
+ defaults = require 'telescope.themes'.get_dropdown({
+ layout_config = { width = 120 }
+ }),
+ pickers = {
+ git_status = {
+ previewer = false,
+ }
+ }
-telescope.setup {
- defaults = { mappings = { i = { ['<esc>'] = actions.close, ['<c-y>'] = actions.select_default } } },
- extensions = { fzy_native = { override_generic_sorter = false, override_file_sorter = true } },
+ -- defaults = { mappings = { i = { ['<esc>'] = actions.close, ['<c-y>'] = actions.select_default } } },
+ -- extensions = { fzy_native = { override_generic_sorter = false, override_file_sorter = true } },
}
-- extensions
-pcall(telescope.load_extension, 'fzy_native')
-pcall(telescope.load_extension, 'dap')
-pcall(telescope.load_extension, 'zk')
-pcall(telescope.load_extension, 'git_worktree')
-pcall(telescope.load_extension, 'advanced_git_search')
+-- pcall(telescope.load_extension, 'fzy_native')
+-- pcall(telescope.load_extension, 'dap')
+pcall(require('telescope').load_extension, 'zk')
+pcall(require('telescope').load_extension, 'git_worktree')
+pcall(require('telescope').load_extension, 'advanced_git_search')
-local l = require 'tms.p.telescope'.L
-
-local function builtin(name, theme)
- return function()
- require 'telescope.builtin'[name](theme)
- end
-end
-
-vim.keymap.set('n', '<space>q', builtin('quickfix', l.dd_large()), { desc = 'Telescope Quickfix' })
-vim.keymap.set('n', '<space>k', builtin('keymaps', l.dd_large()), { desc = 'Telescope Keymaps' })
-vim.keymap.set('n', '<space>o', builtin('oldfiles'), { desc = 'Telescope Old Files' })
-vim.keymap.set('n', '<space>s', builtin('spell_suggest', l.dd()), { desc = 'Telescope Spell Suggest' })
-vim.keymap.set('n', '<space>t', builtin('treesitter'), { desc = 'Telescope Treesitter' })
-vim.keymap.set('n', '<space>c', builtin('git_status', l.dd_large()), { desc = 'Telescope Git Status' })
-vim.keymap.set('n', '<space>e', builtin('grep_string'), { desc = 'Telescope Grep String' })
-vim.keymap.set('n', '<space>l', function()
- require 'telescope.builtin'['current_buffer_fuzzy_find'](l.dd_large_noprev())
-end, { desc = 'Telescope Buffer Lines' })
-vim.keymap.set('n', '<space>b', builtin('buffers', l.dd_large()), { desc = 'Telescope Buffers' })
-vim.keymap.set('n', '<space>h', builtin('help_tags'), { desc = 'Telescope Help Tags' })
-vim.keymap.set('n', '<space>d', builtin('diagnostics', l.dd_large()), { desc = 'Telescope Diagnostics' })
-vim.keymap.set('n', '<space>f', builtin('find_files', l.dd_large_noprev()), { desc = 'Telescope Find Files' })
-vim.keymap.set('n', '<space>F', function()
- require 'telescope.builtin'.find_files(l.dd_large_noprev({ no_ignore = true, hidden = true }))
-end, { desc = 'Telescope Find All Files' })
-
-vim.keymap.set('n', '<space>P', function()
- require 'telescope.builtin'.reloader(l.dd_noprev())
-end, { desc = 'Telescope Reloader' })
-
-vim.keymap.set('n', '<space>wo', function()
- require 'telescope'.extensions.git_worktree.git_worktrees()
-end, { desc = 'Telescope Git Worktree List' })
-
-vim.keymap.set('n', '<space>wi', function()
- require 'telescope'.extensions.git_worktree.create_git_worktree()
-end, { desc = 'Telescope Git Worktree Create' })
+local rhs = {
+ find_all_files = function()
+ require 'telescope.builtin'.find_files { no_ignore = true, hidden = true }
+ end,
+ find_dotfiles = function()
+ require 'telescope.builtin'.find_files({
+ prompt_title = 'dotfiles',
+ cwd = '~/.config/nvim',
+ previewer = false,
+ })
+ end,
+}
-vim.keymap.set('n', '<space>n', function()
- require 'telescope.builtin'.find_files(require 'telescope.themes'.get_dropdown {
- prompt_title = 'dotfiles',
- cwd = '~/.config/nvim',
- previewer = false,
- })
-end, { desc = 'Telescope Dotfiles' })
+vim.keymap.set('n', '<space>q', require 'telescope.builtin'.quickfix, { desc = 'Telescope Quickfix' })
+vim.keymap.set('n', '<space>Q', require 'telescope.builtin'.loclist, { desc = 'Telescope Loclist' })
+vim.keymap.set('n', '<space>k', require 'telescope.builtin'.keymaps, { desc = 'Telescope Keymaps' })
+vim.keymap.set('n', '<space>o', require 'telescope.builtin'.oldfiles, { desc = 'Telescope Old Files' })
+vim.keymap.set('n', '<space>s', require 'telescope.builtin'.spell_suggest, { desc = 'Telescope Spell Suggest' })
+vim.keymap.set('n', '<space>t', require 'telescope.builtin'.treesitter, { desc = 'Telescope Treesitter' })
+vim.keymap.set('n', '<space>c', require 'telescope.builtin'.git_status, { desc = 'Telescope Git Status' })
+vim.keymap.set('n', '<space>e', require 'telescope.builtin'.grep_string, { desc = 'Telescope Grep String' })
+vim.keymap.set('n', '<space>l', require 'telescope.builtin'.current_buffer_fuzzy_find,
+ { desc = 'Telescope Buffer Lines' })
+vim.keymap.set('n', '<space>b', require 'telescope.builtin'.buffers, { desc = 'Telescope Buffers' })
+vim.keymap.set('n', '<space>h', require 'telescope.builtin'.help_tags, { desc = 'Telescope Help Tags' })
+vim.keymap.set('n', '<space>d', require 'telescope.builtin'.diagnostics, { desc = 'Telescope Diagnostics' })
+vim.keymap.set('n', '<space>f', require 'telescope.builtin'.find_files, { desc = 'Telescope Find Files' })
+vim.keymap.set('n', '<space>F', rhs.find_all_files, { desc = 'Telescope Find All Files' })
+vim.keymap.set('n', '<space>P', require 'telescope.builtin'.reloader, { desc = 'Telescope Reloader' })
+vim.keymap.set('n', '<space>wo', require 'telescope'.extensions.git_worktree.git_worktrees,
+ { desc = 'Telescope Git Worktree List' })
+vim.keymap.set('n', '<space>wi', require 'telescope'.extensions.git_worktree.create_git_worktree,
+ { desc = 'Telescope Git Worktree Create' })
+vim.keymap.set('n', '<space>n', rhs.find_dotfiles, { desc = 'Telescope Dotfiles' })
local group = vim.api.nvim_create_augroup('user-telescope', {})
vim.api.nvim_create_autocmd('LspAttach', {
group = group,
callback = function()
- vim.keymap.set('n', '<space>m', function()
- require 'telescope.builtin'.lsp_document_symbols(l.dd_large())
- end, { desc = 'Telescope Lsp Document Symbols' })
-
- vim.keymap.set('n', '<space>M', function()
- require 'telescope.builtin'.lsp_dynamic_workspace_symbols()
- end, { desc = 'Telescope LSP Dynamic Workspace Symbols' })
+ vim.keymap.set('n', '<space>m', require 'telescope.builtin'.lsp_document_symbols,
+ { desc = 'Telescope Lsp Document Symbols' })
+ vim.keymap.set('n', '<space>M', require 'telescope.builtin'.lsp_dynamic_workspace_symbols,
+ { desc = 'Telescope LSP Dynamic Workspace Symbols' })
end,
})
diff --git a/ftplugin/dart.lua b/ftplugin/dart.lua
@@ -3,6 +3,7 @@ vim.opt_local.commentstring = '//%s'
vim.opt_local.includeexpr = [[v:lua.require('tms.ft.dart.package').package_path(v:fname)]]
vim.opt_local.isfname:append { ':' }
vim.opt_local.iskeyword:append { '$' }
+vim.opt_local.include = [[^import\s*]]
vim.opt_local.textwidth = 80
vim.opt_local.shiftwidth = 2
vim.opt_local.formatoptions:remove('t')
diff --git a/init.lua b/init.lua
@@ -6,3 +6,5 @@ vim.cmd.colorscheme('tms')
require('tms.options')
require('tms.keymap')
require('tms.autocmd')
+
+vim.g.type_fmt_loaded = true
diff --git a/lua/tms/ft/dart/package.lua b/lua/tms/ft/dart/package.lua
@@ -73,14 +73,14 @@ function M.package_name()
return nil
end
return name
-
end
function M.package_path(uri)
if not string.find(uri, 'package:') then
return nil
end
- local package_name = string.match(uri, '^package:(.+)/.*')
+
+ local package_name = string.match(uri, '^package:([^/.]+)/.*')
if not package_name then
return nil
end
@@ -92,7 +92,7 @@ function M.package_path(uri)
local package_paths = packages[package_name]
if not package_paths then
- vim.notify('no package mapping for ' .. package_name, vim.log.levels.ERROR)
+ -- vim.print('no package mapping for ' .. package_name)
return nil
end
local package_lib = package_paths.lib
diff --git a/lua/tms/keymap.lua b/lua/tms/keymap.lua
@@ -28,19 +28,19 @@ vim.keymap.set('t', '<a-r>', '<c-\\><c-n>', {})
vim.keymap.set('n', '<c-w><c-v>', '<cmd>vnew<cr>', {})
vim.keymap.set('n', '<c-w><c-s>', '<cmd>new<cr>', {})
-- line movement
-vim.keymap.set('n', '<c-j>', ':m .+1<cr>==', {})
-vim.keymap.set('n', '<c-k>', ':m .-2<cr>==', {})
-vim.keymap.set('i', '<c-j>', '<esc>:m .+1<cr>==', {})
-vim.keymap.set('i', '<c-k>', '<esc>:m .-2<cr>==', {})
-vim.keymap.set('v', '<c-j>', ':m \'>+1<cr>gv=gv', {})
-vim.keymap.set('v', '<c-k>', ':m \'<-2<cr>gv=gv', {})
+-- vim.keymap.set('n', '<c-j>', ':m .+1<cr>==', {})
+-- vim.keymap.set('n', '<c-k>', ':m .-2<cr>==', {})
+-- vim.keymap.set('i', '<c-j>', '<esc>:m .+1<cr>==', {})
+-- vim.keymap.set('i', '<c-k>', '<esc>:m .-2<cr>==', {})
+-- vim.keymap.set('v', '<c-j>', ':m \'>+1<cr>gv=gv', {})
+-- vim.keymap.set('v', '<c-k>', ':m \'<-2<cr>gv=gv', {})
-- quickfix/loclist
-vim.keymap.set('n', '<leader>q', '<cmd>call ToggleList("Quickfix List", "c")<cr>', {})
-vim.keymap.set('n', '<leader>Q', '<cmd>cexpr []|cclose<cr>', {})
-vim.keymap.set('n', '<leader>l', '<cmd>call ToggleList("Location List", "l")<cr>', {})
-vim.keymap.set('n', '<leader>L', '<cmd>lexpr []|lclose<cr>', {})
+vim.keymap.set('n', '<leader>q', require 'tms.quickfix'.toggle_qflist, { desc = "Toggel Quickfix list" })
+vim.keymap.set('n', '<leader>Q', require 'tms.quickfix'.clear_qflist, { desc = "Clear Quickfix List" })
+vim.keymap.set('n', '<leader>l', require 'tms.quickfix'.toggle_loclist, { desc = "Toggle Location List" })
+vim.keymap.set('n', '<leader>L', require 'tms.quickfix'.clear_loclist, { desc = "Clear Location list" })
-- file operation
-vim.keymap.set('n', 'cp', require'tms.p.rename_file'.rename_file, { desc = 'Rename File (Change Path)' })
+vim.keymap.set('n', 'cp', require 'tms.p.rename_file'.rename_file, { desc = 'Rename File (Change Path)' })
-- remap double usage
vim.keymap.set('n', 'y.', 'yy', {})
vim.keymap.set('n', 'z.', 'mmz.`m', {})
diff --git a/lua/tms/lsp/references.lua b/lua/tms/lsp/references.lua
@@ -0,0 +1,120 @@
+local M = {}
+
+local function set_list(opts)
+ opts = opts or {}
+
+ return function(o)
+ if opts.loclist then
+ vim.fn.setloclist(0, {}, ' ', { title = o.title, items = o.items })
+ vim.api.nvim_command('botright lopen')
+ else
+ vim.fn.setqflist({}, ' ', { title = o.title, items = o.items })
+ vim.api.nvim_command('botright copen')
+ end
+ end
+end
+
+local function after_line_list(opts)
+ opts = opts or {}
+
+ return function(o)
+ local curr_filename = vim.api.nvim_buf_get_name(o.context.bufnr)
+ local curr_lnum = vim.fn.getcurpos()[2]
+ o.items = vim.tbl_filter(function(item)
+ return item.filename == curr_filename and item.lnum > curr_lnum
+ end, o.items)
+
+ if #o.items == 0 then
+ vim.notify('No references after current line')
+ return
+ end
+
+ o.title = 'References (After Current Line)'
+ set_list(opts)(o)
+ end
+end
+
+local function curr_file_list(opts)
+ opts = opts or {}
+
+ return function(o)
+ local curr_filename = vim.api.nvim_buf_get_name(o.context.bufnr)
+ o.items = vim.tbl_filter(function(item)
+ return item.filename == curr_filename
+ end, o.items)
+
+ if #o.items == 0 then
+ vim.notify('No references in current file')
+ return
+ end
+
+ o.title = 'References (Current File)'
+ set_list(opts)(o)
+ end
+end
+
+local function prev(opts)
+ opts = opts or {}
+ return function(o)
+ local curr_filename = vim.api.nvim_buf_get_name(o.context.bufnr)
+ local curr_lnum = vim.fn.getcurpos()[2]
+
+ o.items = vim.tbl_filter(function(item)
+ return item.filename == curr_filename and item.lnum < curr_lnum
+ end, o.items)
+
+ if #o.items == 0 then
+ vim.notify('No Previous References')
+ return
+ end
+
+ local client = assert(vim.lsp.get_client_by_id(o.context.client_id))
+ vim.lsp.util.jump_to_location(o.items[#o.items].user_data, client.offset_encoding)
+ end
+end
+
+local function next(opts)
+ opts = opts or {}
+ return function(o)
+ local curr_filename = vim.api.nvim_buf_get_name(o.context.bufnr)
+ local curr_lnum = vim.fn.getcurpos()[2]
+
+ vim.print(curr_lnum)
+ vim.print(o)
+ o.items = vim.tbl_filter(function(item)
+ return item.filename == curr_filename and item.lnum > curr_lnum
+ end, o.items)
+ vim.print(o)
+
+ if #o.items == 0 then
+ vim.notify('No Following References')
+ return
+ end
+
+ local client = assert(vim.lsp.get_client_by_id(o.context.client_id))
+ vim.lsp.util.jump_to_location(o.items[1].user_data, client.offset_encoding)
+ end
+end
+
+
+function M.prev(opts)
+ vim.lsp.buf.references(opts, { on_list = prev(opts) })
+end
+
+function M.next(opts)
+ vim.lsp.buf.references(opts, { on_list = next(opts) })
+end
+
+function M.all(opts)
+ opts = opts or {}
+
+ if opts.curr_file then
+ vim.lsp.buf.references(opts, { on_list = curr_file_list(opts) })
+ elseif opts.after_line then
+ vim.lsp.buf.references(opts, { on_list = after_line_list(opts) })
+ else
+ vim.lsp.buf.references(opts, { on_list = set_list(opts) })
+ end
+end
+
+return M
diff --git a/lua/tms/p/telescope.lua b/lua/tms/p/telescope.lua
@@ -1,41 +1,13 @@
-local themes = require('telescope.themes')
-local actions = require('telescope.actions')
-local action_set = require('telescope.actions.set')
-local action_state = require('telescope.actions.state')
-local pickers = require('telescope.pickers')
-local finders = require('telescope.finders')
-local sorters = require('telescope.sorters')
-
local M = {}
-local L = {}
-M.L = L
-
-function L.dd(opts)
- opts = opts or {}
- return themes.get_dropdown(opts)
-end
-
-function L.dd_noprev(opts)
- opts = opts or {}
- opts.previewer = false
- return themes.get_dropdown(opts)
-end
-
-function L.dd_large(opts)
- opts = opts or {}
- opts.layout_config = { width = 120 }
- return themes.get_dropdown(opts)
-end
-
-function L.dd_large_noprev(opts)
- opts = opts or {}
- opts.previewer = false
- opts.layout_config = { width = 120 }
- return themes.get_dropdown(opts)
-end
-
function M.mail_address()
+ local actions = require('telescope.actions')
+ local action_set = require('telescope.actions.set')
+ local action_state = require('telescope.actions.state')
+ local pickers = require('telescope.pickers')
+ local finders = require('telescope.finders')
+ local sorters = require('telescope.sorters')
+
pickers.new {
results_title = 'Adresses',
finder = finders.new_oneshot_job({ 'mates', 'email-query' }),
diff --git a/lua/tms/quickfix.lua b/lua/tms/quickfix.lua
@@ -0,0 +1,37 @@
+local M = {}
+
+function M.clear_loclist()
+ vim.fn.setloclist(0, {}, 'r')
+end
+
+function M.clear_qflist()
+ vim.fn.setqflist({}, 'r')
+end
+
+function M.toggle_loclist()
+ local wins = vim.fn.getwininfo()
+ local qf_open = vim.tbl_contains(wins, function(win)
+ return win.loclist == 1
+ end, { predicate = true })
+
+ if qf_open then
+ vim.cmd.lclose()
+ else
+ vim.cmd [[silent! lwindow]]
+ end
+end
+
+function M.toggle_qflist()
+ local wins = vim.fn.getwininfo()
+ local qf_open = vim.tbl_contains(wins, function(win)
+ return win.quickfix == 1
+ end, { predicate = true })
+
+ if qf_open then
+ vim.cmd.cclose()
+ else
+ vim.cmd [[botright cwindow]]
+ end
+end
+
+return M
diff --git a/lua/tms/toggle.lua b/lua/tms/toggle.lua
@@ -1,7 +1,9 @@
local M = {}
+local keymap_prefix = 'yo';
+
function M.option(letter, option, mode)
- vim.keymap.set('n', 'yo' .. letter, function()
+ vim.keymap.set('n', keymap_prefix .. letter, function()
local scope
if mode == 'local' then
scope = vim.opt_local
@@ -25,7 +27,7 @@ function M.option(letter, option, mode)
end
function M.fn(letter, fn, desc)
- vim.keymap.set('n', 'yo' .. letter, function()
+ vim.keymap.set('n', keymap_prefix .. letter, function()
fn()
end, { desc = 'Toggle ' .. desc })
end
diff --git a/plugin/diagnostic.lua b/plugin/diagnostic.lua
@@ -1,38 +1,18 @@
-vim.diagnostic.config({ virtual_text = false, underline = false, float = { border = 'single' }, severity_sort = true })
+vim.diagnostic.config({
+ virtual_text = false,
+ underline = false,
+ float = { border = 'single' },
+ severity_sort = true
+})
--- local d = {
--- next = function()
--- vim.diagnostic.goto_next({ float = false })
--- end,
--- prev = function()
--- vim.diagnostic.goto_prev({ float = false })
--- end,
--- open = function()
--- vim.diagnostic.open_float()
--- end,
--- open_cursor = function()
--- vim.diagnostic.open_float({ scope = 'cursor' })
--- end,
--- ll = function()
--- vim.diagnostic.setloclist()
--- end,
--- ql = function()
--- vim.diagnostic.setqflist()
--- end,
--- ql_error = function()
--- vim.diagnostic.setqflist({ severity = vim.diagnostic.severity.ERROR })
--- end,
--- }
+local rhs = {
+ local_errors = function() vim.diagnostic.setloclist { severity = vim.diagnostic.severity.ERROR } end,
+ all_errors = function() vim.diagnostic.setqflist { severity = vim.diagnostic.severity.ERROR } end,
+}
--- local o = function(desc)
--- return { desc = desc, silent = true }
--- end
-
--- vim.keymap.set('n', 'gww', d.open, o('Diagnostic Open for Line'))
--- vim.keymap.set('n', 'gw.', d.open, o('Diagnostic Open for Line'))
--- vim.keymap.set('n', 'gwc', d.open_cursor, o('Diagnostic Open for Cursor'))
--- vim.keymap.set('n', 'gwl', d.ll, o('Diagnostic to Location List'))
--- vim.keymap.set('n', 'gwq', d.ql_error, o('Diagnostic of Error to Quickfix List'))
--- vim.keymap.set('n', 'gwQ', d.ql, o('Diagnostic to Quickfix List'))
--- vim.keymap.set('n', '<c-l><c-d>', d.next, o('Diagnostic Next'))
--- vim.keymap.set('n', '<c-h><c-d>', d.prev, o('Diagnostic Previous'))
+vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = "Previous Diagnostic" })
+vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = "Next Diagnostic" })
+vim.keymap.set('n', '[<c-d>', vim.diagnostic.setqflist, { desc = "All Diagnostic" })
+vim.keymap.set('n', '[D', rhs.all_errors, { desc = "All Errors" })
+vim.keymap.set('n', ']<c-d>', vim.diagnostic.setloclist, { desc = "Local Diagnostic" })
+vim.keymap.set('n', ']D', rhs.local_errors, { desc = "Local Errors" })
diff --git a/plugin/quickfix.vim b/plugin/quickfix.vim
@@ -1,26 +0,0 @@
-function! GetBufferList()
- redir =>buflist
- silent! ls!
- redir END
- return buflist
-endfunction
-
-function! ToggleList(bufname, pfx)
- let buflist = GetBufferList()
- for bufnum in map(filter(split(buflist, '\n'), 'v:val =~ "'.a:bufname.'"'), 'str2nr(matchstr(v:val, "\\d\\+"))')
- if bufwinnr(bufnum) != -1
- exec(a:pfx.'close')
- return
- endif
- endfor
- if a:pfx == 'l' && len(getloclist(0)) == 0
- echohl ErrorMsg
- echo "Location List is Empty."
- return
- endif
- let winnr = winnr()
- exec(a:pfx.'open')
- if winnr() != winnr
- wincmd p
- endif
-endfunction
diff --git a/plugin/snippet.lua b/plugin/snippet.lua
@@ -1,17 +1,17 @@
vim.keymap.set({ 'i', 's' }, '<c-l>', function()
- if vim.snippet.jumpable(1) then
+ if vim.snippet.active() then
vim.snippet.jump(1)
end
end, { desc = 'Snippet Jump Forward' })
vim.keymap.set({ 'i', 's' }, '<c-h>', function()
- if vim.snippet.jumpable(-1) then
+ if vim.snippet.active() then
vim.snippet.jump(-1)
end
end, { desc = 'Snippet Jump Forward' })
vim.keymap.set({ 'i', 's' }, '<c-e>', function()
if vim.snippet.active() then
- vim.snippet.exit()
+ vim.snippet.stop()
end
end, { desc = 'Snippet Exit' })
diff --git a/plugin/unimpaired.lua b/plugin/unimpaired.lua
@@ -1,28 +1,55 @@
-- remap ] and [
-vim.keymap.set('n', '<c-l><c-q>', '<cmd>cnext<cr>')
-vim.keymap.set('n', '<c-h><c-q>', '<cmd>cprev<cr>')
-vim.keymap.set('n', '<c-l>q', '<cmd>clast<cr>')
-vim.keymap.set('n', '<c-h>q', '<cmd>cfirst<cr>')
-vim.keymap.set('n', '<c-l><c-a>', '<cmd>next<cr>')
-vim.keymap.set('n', '<c-h><c-a>', '<cmd>prev<cr>')
-vim.keymap.set('n', '<c-l>a', '<cmd>last<cr>')
-vim.keymap.set('n', '<c-h>a', '<cmd>first<cr>')
-vim.keymap.set('n', '<c-l><c-b>', '<cmd>bnext<cr>')
-vim.keymap.set('n', '<c-h><c-b>', '<cmd>bprev<cr>')
-vim.keymap.set('n', '<c-l>b', '<cmd>blast<cr>')
-vim.keymap.set('n', '<c-h>b', '<cmd>bfirst<cr>')
-vim.keymap.set('n', '<c-l><c-l>', '<cmd>lnext<cr>')
-vim.keymap.set('n', '<c-h><c-l>', '<cmd>lprev<cr>')
-vim.keymap.set('n', '<c-l>l', '<cmd>llast<cr>')
-vim.keymap.set('n', '<c-h>l', '<cmd>lfirst<cr>')
-vim.keymap.set('n', '<c-l><c-t>', '<cmd>tnext<cr>')
-vim.keymap.set('n', '<c-h><c-t>', '<cmd>tprev<cr>')
-vim.keymap.set('n', '<c-l>t', '<cmd>tlast<cr>')
-vim.keymap.set('n', '<c-h>t', '<cmd>tfirst<cr>')
-vim.keymap.set('n', '<c-l><c-s>', ']s')
-vim.keymap.set('n', '<c-h><c-s>', '[s')
-vim.keymap.set('n', '<c-l>s', ']S')
-vim.keymap.set('n', '<c-h>s', '[S')
+-- vim.keymap.set('n', '<c-l><c-q>', '<cmd>cnext<cr>')
+-- vim.keymap.set('n', '<c-h><c-q>', '<cmd>cprev<cr>')
+-- vim.keymap.set('n', '<c-l>q', '<cmd>clast<cr>')
+-- vim.keymap.set('n', '<c-h>q', '<cmd>cfirst<cr>')
+-- vim.keymap.set('n', '<c-l><c-a>', '<cmd>next<cr>')
+-- vim.keymap.set('n', '<c-h><c-a>', '<cmd>prev<cr>')
+-- vim.keymap.set('n', '<c-l>a', '<cmd>last<cr>')
+-- vim.keymap.set('n', '<c-h>a', '<cmd>first<cr>')
+-- vim.keymap.set('n', '<c-l><c-b>', '<cmd>bnext<cr>')
+-- vim.keymap.set('n', '<c-h><c-b>', '<cmd>bprev<cr>')
+-- vim.keymap.set('n', '<c-l>b', '<cmd>blast<cr>')
+-- vim.keymap.set('n', '<c-h>b', '<cmd>bfirst<cr>')
+-- vim.keymap.set('n', '<c-l><c-l>', '<cmd>lnext<cr>')
+-- vim.keymap.set('n', '<c-h><c-l>', '<cmd>lprev<cr>')
+-- vim.keymap.set('n', '<c-l>l', '<cmd>llast<cr>')
+-- vim.keymap.set('n', '<c-h>l', '<cmd>lfirst<cr>')
+-- vim.keymap.set('n', '<c-l><c-t>', '<cmd>tnext<cr>')
+-- vim.keymap.set('n', '<c-h><c-t>', '<cmd>tprev<cr>')
+-- vim.keymap.set('n', '<c-l>t', '<cmd>tlast<cr>')
+-- vim.keymap.set('n', '<c-h>t', '<cmd>tfirst<cr>')
+-- vim.keymap.set('n', '<c-l><c-s>', ']s')
+-- vim.keymap.set('n', '<c-h><c-s>', '[s')
+-- vim.keymap.set('n', '<c-l>s', ']S')
+-- vim.keymap.set('n', '<c-h>s', '[S')
+
+-- vim.keymap.set('n', ']q', '<cmd>cnext<cr>')
+-- vim.keymap.set('n', '[q', '<cmd>cprev<cr>')
+-- vim.keymap.set('n', ']q', '<cmd>cnfile<cr>')
+-- vim.keymap.set('n', '[q', '<cmd>cpfile<cr>')
+-- vim.keymap.set('n', ']Q', '<cmd>clast<cr>')
+-- vim.keymap.set('n', '[Q', '<cmd>cfirst<cr>')
+-- vim.keymap.set('n', ']a', '<cmd>next<cr>')
+-- vim.keymap.set('n', '[a', '<cmd>prev<cr>')
+-- vim.keymap.set('n', ']A', '<cmd>last<cr>')
+-- vim.keymap.set('n', '[A', '<cmd>first<cr>')
+-- vim.keymap.set('n', ']b', '<cmd>bnext<cr>')
+-- vim.keymap.set('n', '[b', '<cmd>bprev<cr>')
+-- vim.keymap.set('n', ']B', '<cmd>blast<cr>')
+-- vim.keymap.set('n', '[B', '<cmd>bfirst<cr>')
+-- vim.keymap.set('n', ']l', '<cmd>lnext<cr>')
+-- vim.keymap.set('n', '[l', '<cmd>lprev<cr>')
+-- vim.keymap.set('n', ']L', '<cmd>llast<cr>')
+-- vim.keymap.set('n', '[L', '<cmd>lfirst<cr>')
+-- vim.keymap.set('n', ']t', '<cmd>tnext<cr>')
+-- vim.keymap.set('n', '[t', '<cmd>tprev<cr>')
+-- vim.keymap.set('n', ']T', '<cmd>tlast<cr>')
+-- vim.keymap.set('n', '[T', '<cmd>tfirst<cr>')
+-- vim.keymap.set('n', ']<c-s>', ']s')
+-- vim.keymap.set('n', '[<c-s>', '[s')
+-- vim.keymap.set('n', ']s', ']S')
+-- vim.keymap.set('n', '[s', '[S')
local toggle = require('tms.toggle')
toggle.option('c', 'cursorline', 'local')
@@ -33,5 +60,5 @@ toggle.option('l', 'list', 'local')
toggle.option('n', 'number', 'local')
toggle.option('r', 'relativenumber', 'local')
toggle.option('s', 'spell', 'local')
-toggle.option('w', 'wrap', 'local')
+-- toggle.option('w', 'wrap', 'local')
toggle.option('d', 'cmdheight', 'global')