diff --git a/flake.nix b/flake.nix index 0bc34f6..297fe03 100644 --- a/flake.nix +++ b/flake.nix @@ -34,6 +34,10 @@ zsh # terminal requires it git curl # needed to fetch titles from urls + zk # lsp for markdown notes + terraform-ls # terraform lsp + tflint # terraform linter + nodePackages.bash-language-server # bash lsp ]; neovim-augmented = recursiveMerge [ pkgs.neovim-unwrapped @@ -61,7 +65,71 @@ packages.myPlugins = with pkgs.vimPlugins; { start = with pkgs.vimPlugins; [ # Common dependencies of other plugins - popup-nvim # dependency of some other plugins + plenary-nvim # dependency of some other plugins + todo-comments-nvim # highlight TODO comments + nvim-treesitter # syntax highlight + undotree # better vim file edit history + nvim-surround # .... updated lua-based alternative to tpope's surround + comment-nvim # code commenter + crates-nvim # inline intelligence for Cargo.toml + nvim-lspconfig # LSP for intilligent coding + null-ls-nvim # formatting and linting via lsp system + lspsaga-nvim + trouble-nvim # navigate all warnings and errors in quickfix-like window + fidget-nvim # show lsp status in bottom right but not status line + neodev-nvim # help for neovim lua api + lsp-format-nvim + SchemaStore-nvim # json schemas + # vim-fugitive # git control + + # UI + onedarkpro-nvim # colorscheme + ir_black # colorscheme for basic terminals + telescope-nvim # da best popup fuzzy finder + telescope-fzy-native-nvim # with fzy gives better results + telescope-frecency-nvim # and frecency comes in handy too + nvim-colorizer-lua # color over CSS like #00ff00 + nvim-web-devicons # makes things pretty; used by many plugins below + nvim-tree-lua # file navigator + gitsigns-nvim # git status in gutter + symbols-outline-nvim # navigate the current file better + lualine-nvim # nice status bar at bottom + vim-bbye # fix bdelete buffer stuff needed with bufferline + bufferline-nvim + indent-blankline-nvim # visual indent + toggleterm-nvim # better terminal management + nvim-treesitter.withAllGrammars # better code coloring + # playground # treesitter playground + nvim-treesitter-textobjects # jump around and select based on syntax (class, function, etc.) + nvim-treesitter-context # keep current block header (func defn or whatever) on first line + lf-vim + + # Autocompletion + nvim-cmp # generic autocompleter + cmp-nvim-lsp # use lsp as source for completions + cmp-nvim-lua # makes vim config editing better with completions + cmp-buffer # any text in open buffers + cmp-path # complete paths + cmp-cmdline # completing in :commands + cmp-emoji # complete :emojis: + cmp-nvim-lsp-signature-help # help complete function call by showing args + cmp-npm # complete node packages in package.json + nvim-autopairs # balances parens as you type + nvim-ts-autotag # balance or rename html + vim-emoji # TODO: redundant now? + luasnip # snippets driver + cmp_luasnip # snippets completion + friendly-snippets # actual library of snippets used by luasnip + zk-nvim # lsp for a folder of notes for searching/linking/etc + true-zen-nvim # distraction free, width constrained writing mode + + nui-nvim # UI Component Library for Neovim + gitsigns-nvim # git file changes + project-nvim + vim-tmux-navigator # navigate vim and tmux panes together + impatient-nvim # speeds startup times by caching lua bytecode + which-key-nvim # WhichKey is a lua plugin for Neovim 0.5 that displays a popup with possible key bindings of the command you started typing + diffview-nvim # git diff viewer ]; opt = with pkgs.vimPlugins; [ # grammar check diff --git a/init.lua b/init.lua index 54f6bce..2bc4d3b 100644 --- a/init.lua +++ b/init.lua @@ -1,19 +1,19 @@ -- Neovide needs this defined very early -if vim.fn.has('mac') == 1 then - vim.opt.guifont = "Hasklug Nerd Font:h18" -else - vim.opt.guifont = "Hasklug Nerd Font:h9" -end --- require('impatient') --- require('impatient').enable_profile() --- require('pwnvim.filetypes').config() --- require('pwnvim.options').defaults() --- require('pwnvim.options').gui() --- require('pwnvim.mappings') --- require('pwnvim.abbreviations') --- require('pwnvim.plugins').ui() --- require('pwnvim.plugins').diagnostics() --- require('pwnvim.plugins').telescope() --- require('pwnvim.plugins').completions() --- require('pwnvim.plugins').notes() --- require('pwnvim.plugins').misc() +-- if vim.fn.has('mac') == 1 then +-- vim.opt.guifont = "Hasklug Nerd Font:h18" +-- else +-- vim.opt.guifont = "Hasklug Nerd Font:h9" +-- end +require('impatient') +require('impatient').enable_profile() +require('pwnvim.filetypes').config() +require('pwnvim.options').defaults() +require('pwnvim.options').gui() +require('pwnvim.mappings') +require('pwnvim.abbreviations') +require('pwnvim.plugins').ui() +require('pwnvim.plugins').diagnostics() +require('pwnvim.plugins').telescope() +require('pwnvim.plugins').completions() +require('pwnvim.plugins').notes() +require('pwnvim.plugins').misc() diff --git a/pwnvim/filetypes.lua b/pwnvim/filetypes.lua index 1301d9f..cf601ca 100644 --- a/pwnvim/filetypes.lua +++ b/pwnvim/filetypes.lua @@ -30,15 +30,15 @@ M.config = function() group = filetypes }) autocmd("FileType", { pattern = { "c", "ruby", "php", "php3", "perl", "python", "mason", "vim", "sh", "zsh", "scala", "javascript", - "javascriptreact", "typescript", "typescriptreact", "html", "svelte", "css", "nix" }, + "javascriptreact", "typescript", "typescriptreact", "html", "svelte", "css", "nix", "terraform" }, callback = function() require('pwnvim.options').programming() end, group = filetypes }) autocmd("FileType", { pattern = { "lua", "xml" }, callback = function() require('pwnvim.filetypes').lua() end, group = filetypes }) autocmd("FileType", { pattern = { "md", "markdown", "vimwiki" }, callback = function() require('pwnvim.markdown').setup() end, group = filetypes }) - autocmd("FileType", - { pattern = { "rust" }, callback = function() require('pwnvim.filetypes').rust() end, group = filetypes }) +-- autocmd("FileType", +-- { pattern = { "rust" }, callback = function() require('pwnvim.filetypes').rust() end, group = filetypes }) autocmd("FileType", { pattern = { "Outline" }, command = "setlocal nospell", group = filetypes }) @@ -49,29 +49,29 @@ M.config = function() callback = function() require('pwnvim.filetypes').page() end }) end -M.rust = function() - require('pwnvim.options').programming() - require('pwnvim.options').fourspaceindent() - vim.bo.makeprg = "cargo" - vim.cmd("compiler cargo") - vim.g.rustfmt_autosave = 1 - vim.g.rust_fold = 1 - vim.api.nvim_exec([[ - augroup rustquickfix - autocmd! - autocmd BufReadPost quickfix setlocal foldmethod=expr - autocmd BufReadPost quickfix setlocal foldexpr=getline(v:lnum)[0:1]=='\|\|' - autocmd BufEnter quickfix setlocal foldexpr=getline(v:lnum)[0:1]=='\|\|' - autocmd BufReadPost quickfix setlocal foldlevel=0 - augroup END - ]], false) -end +-- M.rust = function() +-- require('pwnvim.options').programming() +-- require('pwnvim.options').fourspaceindent() +-- vim.bo.makeprg = "cargo" +-- vim.cmd("compiler cargo") +-- vim.g.rustfmt_autosave = 1 +-- vim.g.rust_fold = 1 +-- vim.api.nvim_exec([[ +-- augroup rustquickfix +-- autocmd! +-- autocmd BufReadPost quickfix setlocal foldmethod=expr +-- autocmd BufReadPost quickfix setlocal foldexpr=getline(v:lnum)[0:1]=='\|\|' +-- autocmd BufEnter quickfix setlocal foldexpr=getline(v:lnum)[0:1]=='\|\|' +-- autocmd BufReadPost quickfix setlocal foldlevel=0 +-- augroup END +-- ]], false) +-- end -M.c = function() - require('pwnvim.options').programming() - require('pwnvim.options').fourspaceindent() - vim.bo.makeprg = "make" -end +-- M.c = function() +-- require('pwnvim.options').programming() +-- require('pwnvim.options').fourspaceindent() +-- vim.bo.makeprg = "make" +-- end M.lua = function() require('pwnvim.options').programming() diff --git a/pwnvim/markdown.lua b/pwnvim/markdown.lua index 421e103..1886923 100644 --- a/pwnvim/markdown.lua +++ b/pwnvim/markdown.lua @@ -115,22 +115,22 @@ M.setup = function() -- auto_display = true -- WIP automatic markdown image display, may be prone to breaking -- } -- end - vim.cmd('packadd clipboard-image.nvim') - require 'clipboard-image'.setup { - default = { - img_name = function() - vim.fn.inputsave() - local name = vim.fn.input({ prompt = "Name: " }) - -- TODO: swap spaces out for dashes - vim.fn.inputrestore() - return os.date('%Y-%m-%d') .. "-" .. name - end, - img_dir = { "%:p:h", "%:t:r:s?$?_attachments?" }, - img_dir_txt = "%:t:r:s?$?_attachments?", - -- TODO: can I put the name as the title somehow? - affix = "![](%s)", - } - } + -- vim.cmd('packadd clipboard-image.nvim') + -- require 'clipboard-image'.setup { + -- default = { + -- img_name = function() + -- vim.fn.inputsave() + -- local name = vim.fn.input({ prompt = "Name: " }) + -- -- TODO: swap spaces out for dashes + -- vim.fn.inputrestore() + -- return os.date('%Y-%m-%d') .. "-" .. name + -- end, + -- img_dir = { "%:p:h", "%:t:r:s?$?_attachments?" }, + -- img_dir_txt = "%:t:r:s?$?_attachments?", + -- -- TODO: can I put the name as the title somehow? + -- affix = "![](%s)", + -- } + -- } -- I have historically always used spaces for indents wherever possible including markdown diff --git a/pwnvim/options.lua b/pwnvim/options.lua index 44d77e5..4ac8d89 100644 --- a/pwnvim/options.lua +++ b/pwnvim/options.lua @@ -338,11 +338,11 @@ M.gui = function() -- vim.opt.guifont = "Liga DejaVuSansMono Nerd Font:h16" -- vim.opt.guifont = "FiraCode Nerd Font:h16" -- no italics -- if vim.loop.os_uname().sysname == "Darwin" then - if vim.fn.has('mac') == 1 then - vim.opt.guifont = "Hasklug Nerd Font:h18" - else - vim.opt.guifont = "Hasklug Nerd Font:h9" - end + -- if vim.fn.has('mac') == 1 then + -- vim.opt.guifont = "Hasklug Nerd Font:h18" + -- else + -- vim.opt.guifont = "Hasklug Nerd Font:h9" + -- end vim.g.neovide_transparency = 0.92 vim.g.neovide_cursor_animation_length = 0.01 @@ -420,8 +420,8 @@ M.programming = function() -- Load direnv when we're in a programming file as we may want -- the nix environment provided. Run explicitly since the autocmds -- might not otherwise fire. - vim.cmd('packadd direnv.vim') - vim.cmd('DirenvExport') + -- vim.cmd('packadd direnv.vim') + -- vim.cmd('DirenvExport') end return M diff --git a/pwnvim/plugins.lua b/pwnvim/plugins.lua index e0a6381..2aba571 100644 --- a/pwnvim/plugins.lua +++ b/pwnvim/plugins.lua @@ -310,7 +310,6 @@ M.diagnostics = function() } } } - lspconfig.svelte.setup { on_attach = attached, capabilities = capabilities } lspconfig.tailwindcss.setup { on_attach = attached, capabilities = capabilities, @@ -351,6 +350,8 @@ M.diagnostics = function() }, capabilities = capabilities } + lspconfig.terraformls.setup { on_attach = attached, capabilities = capabilities } -- terraform lsp + lspconfig.tflint.setup { on_attach = attached, capabilities = capabilities } -- terraform lsp require 'lspsaga'.init_lsp_saga({ use_saga_diagnostic_sign = not SimpleUI,