feat(nvim): tablines and potential for job management

std
Hung 2023-06-05 09:04:08 -07:00
parent d58acd7bc2
commit ba993d16f5
2 changed files with 55 additions and 11 deletions

View File

@ -62,11 +62,11 @@
"utils": "utils" "utils": "utils"
}, },
"locked": { "locked": {
"lastModified": 1683779844, "lastModified": 1685948350,
"narHash": "sha256-sIeOU0GsCeQEn5TpqE/jFRN4EGsPsjqVRsPdrzIDABM=", "narHash": "sha256-1FldJ059so0X/rScdbIiOlQbjjSNCCTdj2cUr5pHU4A=",
"owner": "serokell", "owner": "serokell",
"repo": "deploy-rs", "repo": "deploy-rs",
"rev": "c80189917086e43d49eece2bd86f56813500a0eb", "rev": "65211db63ba1199f09b4c9f27e5eba5ec50d76ac",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@ -1,5 +1,4 @@
-- What: Mono-file nvim configuration file Why: Easy to see through everything without needing to navigate thru files -- What: Mono-file nvim configuration file Why: Easy to see through everything without needing to navigate thru files Features:
-- Features:
-- - LSP -- - LSP
-- - Auto-complete (in insert mode: ctrl-space, navigate w/ Tab+S-Tab, confirm: Enter) -- - Auto-complete (in insert mode: ctrl-space, navigate w/ Tab+S-Tab, confirm: Enter)
-- - <leader>df to format document -- - <leader>df to format document
@ -174,6 +173,8 @@ vim.opt.backup = false
vim.opt.undodir = vim.fn.stdpath('state') .. '/.vim/undodir' vim.opt.undodir = vim.fn.stdpath('state') .. '/.vim/undodir'
vim.opt.undofile = true vim.opt.undofile = true
vim.opt.completeopt = 'menuone,noselect' vim.opt.completeopt = 'menuone,noselect'
-- vim.opt.clipboard = "unnamedplus" -- vim.opt.clipboard = "unnamedplus"
-- more aggressive swap file writing. ThePrimeagen believes higher number -- more aggressive swap file writing. ThePrimeagen believes higher number
-- leads to low DX -- leads to low DX
@ -356,6 +357,46 @@ remap('n', '<leader>zg', function()
vim.cmd(":ZkGrep") vim.cmd(":ZkGrep")
end, { desc = '[Z]ettelkasten [G]rep' }) end, { desc = '[Z]ettelkasten [G]rep' })
-- tab management {{{
-- Jump to specific tab with <C-t>[number]
for i = 1, 9 do
vim.api.nvim_set_keymap('n', '<C-t>' .. i, ':tabn ' .. i .. '<CR>', { noremap = true, silent = true })
end
-- Show tab number in tab display
vim.o.showtabline = 1
vim.o.tabline = '%!v:lua.my_tabline()'
function _G.my_tabline()
local s = ''
for i = 1, vim.fn.tabpagenr('$') do
if i == vim.fn.tabpagenr() then
s = s .. '%' .. i .. 'T%#TabLineSel#'
else
s = s .. '%' .. i .. 'T%#TabLine#'
end
local tab = vim.fn.gettabinfo(i)[1]
local tabbuf = tab.variables.buffers
local bufname = "<unknown>"
if tabbuf then
bufname = tabbuf[tab.curwin].name
end
-- Canonicalize tab/buf name
s = s .. ' ' .. i .. ' ' .. vim.fn.fnamemodify(bufname, ':t')
if i ~= vim.fn.tabpagenr('$') then
s = s .. '%#TabLine#|%#TabLine#'
end
end
return s .. '%T%#TabLineFill#%='
end
-- Close all tabs except the first one
vim.api.nvim_set_keymap('n', '<C-t>x', ':tabdo if tabpagenr() > 1 | tabclose | endif<CR>',
{ noremap = true, silent = true })
-- }}}
-- treesitter -- treesitter
require 'treesitter-context' require 'treesitter-context'
require('nvim-treesitter.configs').setup { require('nvim-treesitter.configs').setup {
@ -496,6 +537,7 @@ local on_attach = function(client, bufnr)
nmap('<C-k>', vim.lsp.buf.signature_help, 'Signature Documentation') nmap('<C-k>', vim.lsp.buf.signature_help, 'Signature Documentation')
-- Lesser used LSP functionality -- Lesser used LSP functionality
nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration') nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
nmap('gtd', vim.lsp.buf.type_definition, '[G]oto [T]ype [D]efinition') nmap('gtd', vim.lsp.buf.type_definition, '[G]oto [T]ype [D]efinition')
nmap('<leader>D', vim.lsp.buf.type_definition, 'Type [D]efinition') nmap('<leader>D', vim.lsp.buf.type_definition, 'Type [D]efinition')
@ -622,8 +664,8 @@ require("mason").setup({
PATH = "append", PATH = "append",
}) })
require('mason-lspconfig').setup({ require('mason-lspconfig').setup({
ensure_installed = servers, -- ensure_installed = servers,
automatic_installation = true automatic_installation = false
}) })
local inlay_hint_tsjs = { local inlay_hint_tsjs = {
@ -661,7 +703,9 @@ require('mason-lspconfig').setup_handlers({
library = vim.api.nvim_get_runtime_file('', true) library = vim.api.nvim_get_runtime_file('', true)
}, },
telemetry = { enable = false }, telemetry = { enable = false },
hint = { enable = true, }, hint = {
enable = true,
},
format = { format = {
enable = true, enable = true,
defaultConfig = { defaultConfig = {
@ -783,7 +827,7 @@ require("rust-tools").setup {
-- default: true -- default: true
auto = false, auto = false,
-- Only show inlay hints for the current line -- Only show inlay hints for the current line
only_current_line = false, only_current_line = true,
-- whether to show parameter hints with the inlay hints or not -- whether to show parameter hints with the inlay hints or not
-- default: true -- default: true
show_parameter_hints = true, show_parameter_hints = true,
@ -801,8 +845,8 @@ require("rust-tools").setup {
right_align = false, right_align = false,
-- padding from the right if right_align is true -- padding from the right if right_align is true
right_align_padding = 7, right_align_padding = 7,
-- The color of the hints -- The color of the hints use `:highlight` for a pick-and-choose menu
highlight = "Comment", highlight = "NonText",
}, },
-- options same as lsp hover / vim.lsp.util.open_floating_preview() -- options same as lsp hover / vim.lsp.util.open_floating_preview()
hover_actions = { hover_actions = {