nix config

almost at parity now, can dog food

Needs:
- surrond?
- diagnostics icons
- cmp still seems to shit the bed sometimes
- lspsaga breadcrumbs on lualine
- more which-key config!!
- tests on svelte / web dev

+184 -261
+11
home/profiles/nvim/config/fnl/conf/formatting.fnl
··· 1 + (import-macros {: do-req } :lib/macros) 2 + 3 + (do-req :conform :setup 4 + {:formatters_by_ft {:lua ["stylua"] 5 + :nix ["nixfmt"] 6 + ; :go ["goimports" "gofmt"] ; Go handled in special case 7 + :terraform ["terraform_fmt"] 8 + :sh ["shfmt"] 9 + :bazel ["buildifier"]} 10 + :format_on_save {:lsp_format "fallback" 11 + :timeout_ms 500}})
+9 -2
home/profiles/nvim/config/fnl/conf/init.fnl
··· 25 25 (nvim.opt :signcolumn "yes") 26 26 (nvim.opt :cursorline true) 27 27 28 - 29 28 (nvim.opt :lisp true) ; include - in word to move better in snake-case) 30 29 (nvim.g :sexp_filetypes "clojure,scheme,lisp,janet,fennel,yuck") ; include the lisps I use 31 30 ··· 36 35 (require :conf.mappings) 37 36 (require :conf.lsp) 38 37 (require :conf.plugins.cmp) 39 - ; (require :conf.formatting) 38 + (require :conf.formatting) 40 39 ; (require :conf.kitaab) 40 + 41 + ; Spelling 42 + (vim.api.nvim_create_autocmd ["BufRead" "BufNewFile"] 43 + {:pattern ["*.wiki" "*.txt" "*.md" "*.tex"] 44 + :command "setlocal spell"}) 45 + (vim.api.nvim_create_autocmd ["FileType"] 46 + {:pattern ["mail"] 47 + :command "setlocal spell"})
+32 -50
home/profiles/nvim/config/fnl/conf/lsp.fnl
··· 1 - ; (local lspfuzzy (require :lspfuzzy)) 1 + (import-macros {: do-req } :lib/macros) 2 2 (local lspkind (require :lspkind)) 3 3 (local lspconfig (require :lspconfig)) 4 + (local lspsaga (require :lspsaga)) 4 5 (local cmp (require :cmp)) 5 6 (local nvim (require :lib/nvim)) 7 + ; (local lspfuzzy (require :lspfuzzy)) 6 8 ; (local sg (require :sg)) 7 9 ; (local lsputil (require :lspconfig/util)) 10 + ; (local navic (require :nvim-navic)) 11 + 12 + (lspsaga.setup {:border_style "rounded" 13 + :code_action_icon "" 14 + :code_action_num_shortcut true 15 + :code_action_lightbulb { 16 + :enable false 17 + } 18 + ; show outline 19 + :show_outline { 20 + :win_position "right" 21 + :auto_enter true 22 + :auto_preview true 23 + :virt_text "┃" 24 + :jump_key "o" 25 + ; auto refresh when change buffer 26 + :auto_refresh true 27 + } 28 + }) 8 29 9 30 (tset vim.lsp.handlers 10 31 :textDocument/hover ··· 47 68 {:capabilities capabilities 48 69 :codelens {:generate true :gc_details true} 49 70 :semanticTokens true 50 - :flags { :debounce_text_changes 200} 71 + :flags {:debounce_text_changes 200} 51 72 :analyses {:unusedparams true 52 73 :unusedvariables true 53 74 :unusedwrite true ··· 66 87 :rangeVariableTypes true} 67 88 :on_attach on-attach}) 68 89 90 + (local lsps [:nil_ls :terraform_lsp :fennel_ls :tsserver]) 91 + (each [index lsp (ipairs lsps)] 92 + ((. (. lspconfig lsp) :setup) {})) 69 93 70 - ; # local servers = { 'clojure_lsp', 'terraform_lsp', 'zls', 'pyright', 'rust_analyzer', 'tsserver', 'lua_ls', 'nil_ls', 'gopls'} 71 - ; # for _, lsp in ipairs(servers) do 72 - ; # lspconfig[lsp].setup {} 73 - ; # on_attach = function(client, bufnr) 74 - ; # format.on_attach(client) 75 - ; # navic.attach(client, bufnr) 76 - ; # end, 77 - ; # capabilities = capabilities, 78 - ; # 79 - ; # end) 80 - ;; Diagnostics Config I don't yet understand 81 - ; Set Diagnostics 82 - ; local signs = { Error = " ", Warn = " ", Hint = " ", Info = " " } 83 - ; for type, icon in pairs(signs) do 84 - ; local hl = "DiagnosticSign" .. type 85 - ; vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl}) 86 - ; end 94 + ; null-ls 95 + (let [null-ls (require :null-ls)] 96 + (null-ls.setup {:sources [;null-ls.builtins.diagnostics.shellcheck 97 + null-ls.builtins.diagnostics.commitlint]})) 98 + ;null-ls.builtins.diagnostics.jsonlint]})) 99 + ;(null-ls.builtins.diagnostics.proselint.with {:filetypes ["vimwiki" "mail"]})]})) 87 100 88 - ; vim.g.diagnostics_active = true 89 - ; function _G.toggle_diagnostics() 90 - ; if vim.g.diagnostics_active then 91 - ; vim.g.diagnostics_active = false 92 - ; vim.lsp.diagnostic.clear(0) 93 - ; vim.lsp.handlers["textDocument/publishDiagnostics"] = function() end 94 - ; else 95 - ; vim.g.diagnostics_active = true 96 - ; vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with( 97 - ; vim.lsp.diagnostic.on_publish_diagnostics, { 98 - ; virtual_text = true, 99 - ; signs = true, 100 - ; underline = true, 101 - ; update_in_insert = false, 102 - ; } 103 - ; ) 104 - ; end 105 - ; end 106 - ; 107 - ; vim.diagnostic.config({ 108 - ; signs = true, 109 - ; update_in_insert = false, 110 - ; underline = false, 111 - ; severity_sort = true, 112 - ; float = { 113 - ; focusable = false, 114 - ; style = 'minimal', 115 - ; border = 'rounded', 116 - ; source = 'always', 117 - ; }, 118 - ; })
+11 -3
home/profiles/nvim/config/fnl/conf/mappings.fnl
··· 1 1 (local nvim (require :lib/nvim)) 2 + (import-macros {: do-req } :lib/macros) 3 + 2 4 (local wk (require :which-key)) 3 5 4 6 ;; Convenient way to indent stuff in visual mode ··· 30 32 (nvim.keymap [:n] "gt" ":BufferNext<CR>" {:silent true :noremap true}) 31 33 (nvim.keymap [:n] "gj" ":BufferPick<CR>" {:silent true :noremap true}) 32 34 (nvim.keymap [:n] "gb" ":Telescope buffers<CR>" {:silent true :noremap true}) 33 - (nvim.keymap [:n] "gq" ":BufferClosoe<CR>" {:silent true :noremap true}) 35 + (nvim.keymap [:n] "gq" ":BufferClose<CR>" {:silent true :noremap true}) 34 36 37 + ; Flash 38 + (vim.api.nvim_create_user_command "Flash" (fn [_] (do-req :flash :jump)) {}) 39 + (vim.api.nvim_create_user_command "FlashTreesitter" (fn [] (do-req :flash :treesitter)) {}) 40 + (nvim.keymap [:n] "f" "<cmd>Flash<CR>") 41 + (nvim.keymap [:n] "s" "<cmd>FlashTreesitter<CR>") 35 42 36 43 (local 37 44 normal-map-leader ··· 111 118 "Rename Symbol"] 112 119 :h [":Lspsaga hover_doc<CR>" 113 120 "Hover doc"] 114 - :o [":LSoutlineToggle<CR>" 121 + :o ["<cmd>AerialToggle!<CR>" 115 122 "Outline"] 116 - :t [":call v:lua.toggle_diagnostics()<CR>"]} 123 + :t [":LspDiagnostics 0" 124 + "Find Errors in Buffer"]} 117 125 ; Kitaab 118 126 "z" {:name "Kitaab" 119 127 :n [":ZettelNew<CR>"
+26
home/profiles/nvim/config/fnl/conf/music.fnl
··· 2 2 3 3 (nvim.g :tidal_target "terminal") 4 4 (nvim.g :scnvim_snippet_format "luasnip") 5 + 6 + ; -- supercollider 7 + ; local scnvim = require 'scnvim' 8 + ; local map = scnvim.map 9 + ; local map_expr = scnvim.map_expr 10 + ; scnvim.setup { 11 + ; keymaps = { 12 + ; ['<localleader>e'] = map('editor.send_line', {'i', 'n'}), 13 + ; ['<localleader>s'] = map_expr('CmdPeriod.run', {'i', 'n'}), 14 + ; ['<localleader>t'] = { 15 + ; map('editor.send_block', {'i', 'n'}), 16 + ; map('editor.send_selection', 'x'), 17 + ; }, 18 + ; ['<CR>'] = map('postwin.toggle'), 19 + ; ['<M-CR>'] = map('postwin.toggle', 'i'), 20 + ; ['<M-L>'] = map('postwin.clear', {'n', 'i'}), 21 + ; ['<C-k>'] = map('signature.show', {'n', 'i'}), 22 + ; ['<F12>'] = map('sclang.hard_stop', {'n', 'x', 'i'}), 23 + ; ['<leader>st'] = map('sclang.start'), 24 + ; ['<leader>sk'] = map('sclang.recompile'), 25 + ; ['<F1>'] = map_expr('s.boot'), 26 + ; ['<F2>'] = map_expr('s.meter'), 27 + ; } 28 + ; } 29 + ; -- You gotta run :SCNvimGenerateAssets for this first 30 + ; -- require("luasnip").add_snippets("supercollider", require("scnvim/utils").get_snippets())
+25 -2
home/profiles/nvim/config/fnl/conf/plugins.fnl
··· 1 1 (local nvim (require :lib/nvim)) 2 + (local navic (require :nvim-navic)) 2 3 3 - (local navic (require :nvim-navic)) 4 + (import-macros {: do-req } :lib/macros) 4 5 5 6 (let [lualine (require :lualine)] 6 7 (lualine.setup {:options {:theme "ayu"} 7 8 :sections {:lualine_c [:filename {1 navic.get_location 8 9 :cond navic.is_available}] 9 10 :lualine_y [(fn [] 10 - ; TODO broken? 11 + ; TODO broken 11 12 (let [msg "No Active Lsp" 12 13 buf_ft (vim.api.nvim_buf_get_option 0 "filetype") 13 14 clients (vim.lsp.get_active_clients)] ··· 19 20 :lualine_x [:filetype]}})) 20 21 21 22 (require :neo-tree) 23 + (do-req :gitsigns :setup) 24 + (do-req :marks :setup) 25 + (do-req :mini.pairs :setup) 26 + (do-req :mini.diff :setup) 27 + (do-req :mini.ai :setup) 28 + ;TODO (do-req :mini.surround :setup) 29 + (do-req :todo-comments :setup) 30 + (do-req :ibl :setup) 31 + 32 + (do-req :nvim-treesitter.configs :setup {:highlight {:enable true} 33 + :textobjects {:enable true} 34 + :indent {:enable true}}) 35 + (do-req :treesitter-context :setup {:max_lines 5}) 36 + 37 + (do-req :auto-session :setup {:log_level "info" 38 + :auto_session_suppress_dirs ["~/"]}) 39 + (nvim.opt :sessionoptions "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal") 40 + 41 + (do-req :aerial :setup {:on_attach (fn [bufnr] 42 + (do 43 + (vim.keymap.set "n" "{" "<cmd>AerialPrev<CR>" { :buffer bufnr}) 44 + (vim.keymap.set "n" "}" "<cmd>AerialNext<CR>" { :buffer bufnr})))})
+9 -35
home/profiles/nvim/config/fnl/conf/plugins/cmp.fnl
··· 11 11 (= (: (: cur-line :sub col col) :match "%s") 12 12 nil)))) 13 13 14 - (fn tab [fallback] 15 - (let [cmp (require :cmp) 16 - luasnip (require :luasnip)] 17 - (if (cmp.visible) 18 - (cmp.select_next_item) 19 - (let [available (luasnip.expand_or_jumpable)] 20 - (if (= (available) true) 21 - (luasnip.expand_or_jump) 22 - (if (has-words-before) 23 - (cmp.complete) 24 - (fallback))))))) 25 - 26 - (fn stab [fallback] 27 - (let [cmp (require :cmp) 28 - luasnip (require :luasnip)] 29 - (if (cmp.visible) 30 - (cmp.select_prev_item) 31 - (let [available (luasnip.jumpable -1)] 32 - (if (= (available) true) 33 - (luasnip.jump -1) 34 - (if (has-words-before) 35 - (cmp.complete) 36 - (fallback))))))) 37 - 38 - (let [lspkind (require :lspkind) 39 - luasnip_loaders (require :luasnip.loaders.from_vscode)] 40 - (luasnip_loaders.lazy_load) 41 - (cmp.setup {:formatting {:format lspkind.cmp_format} 42 - :snippet {:expand (fn [args] 43 - (let [luasnip (require :luasnip)] 44 - (luasnip.lsp_expand args.body)))} 14 + (let [lspkind (require :lspkind)] 15 + (cmp.setup {:formatting {:format lspkind.cmp_format 16 + :show_labelDetails true} 17 + ;:snippet {:expand (fn [args] 18 + ; (let [luasnip (require :luasnip)] 19 + ; (luasnip.lsp_expand args.body)) 45 20 :sources [{:name "buffer"} {:name "nvim_lsp"} 46 21 {:name "look"} {:name "path"} 47 22 {:name "calc"} {:name "spell"} 48 - {:name "cmp-conjure"} {:name "luasnip"} 49 23 {:name "tags"}] 50 24 :mapping {"<C-d>" (cmp.mapping.scroll_docs -4) 51 25 "<C-u>" (cmp.mapping.scroll_docs 4) 52 26 "<Up>" (cmp.mapping (cmp.mapping.select_prev_item) [:i :c]) 53 27 "<Down>" (cmp.mapping (cmp.mapping.select_next_item) [:i :c]) 54 28 "<C-g>" (cmp.mapping.close) 55 - "<CR>" (cmp.mapping.confirm {:select true}) 56 - "<Tab>" (cmp.mapping tab [:i :s]) 57 - "<S-Tab>" (cmp.mapping stab [:i :s])}})) 29 + "<CR>" (cmp.mapping.confirm {:select true})}})) 30 + ; "<Tab>" (cmp.mapping tab [:i :s]) 31 + ; "<S-Tab>" (cmp.mapping stab [:i :s])}}))
+24
home/profiles/nvim/config/fnl/conf/plugins/kitaab.fnl
··· 1 + ; Kitaab is why I'm so tied to vim. 2 + ; If only I could find a nice notes editor... 3 + 1 4 (local nvim (require :lib/nvim)) 5 + 6 + (import-macros {: do-req } :lib/macros) 2 7 3 8 (nvim.g :vimwiki_list [{:path "~/kitaab/vimwiki" 4 9 :auto_tags 1 ··· 9 14 :nix "nix" 10 15 :bash "sh"}}]) 11 16 (nvim.g :zettel_format "%y%m%d-%H%M") 17 + 18 + ; Custom functions 19 + (fn update_date [] 20 + (var written false) 21 + (let [time (os.date "%Y-%m-%d %H:%M") 22 + message (.. "%update " time) 23 + lines (vim.api.nvim_buf_get_lines 0 0 4 false)] 24 + (each [index line (ipairs lines)] 25 + (if (and (= (length line) 0) (not written)) 26 + (do 27 + (vim.api.nvim_buf_set_lines 0 (- index 1) index false [message ""]) 28 + (set written true))) 29 + (if (and (= index 4) (not written)) 30 + (vim.api.nvim_buf_set_lines 0 3 index false [message]))))) 31 + 32 + (vim.api.nvim_create_autocmd "BufWritePre" {:pattern ["*.wiki"] 33 + :callback update_date}) 34 + 35 + (do-req :hologram :setup {:auto_display false})
+6
home/profiles/nvim/config/fnl/lib/macros.fnl
··· 1 + (fn do-req [mod key ...] 2 + `(let [name# (require ,mod) 3 + fun# (. name# ,key)] 4 + (fun# ,...))) 5 + 6 + {: do-req}
+31 -169
home/profiles/nvim/default.nix
··· 22 22 { 23 23 home.sessionVariables.EDITOR = "nvim"; 24 24 home.shellAliases = { 25 + vim = "nvim"; 25 26 k = "cd ~/kitaab/vimwiki; vim -c :VimwikiIndex; cd $OLDPWD"; 26 27 # kitaab zettel 27 28 kz = "cd ~/kitaab/vimwiki; vim -c :VimwikiIndex -c :ZettelNew; cd $OLDPWD"; ··· 48 49 # filetype plugin on 49 50 50 51 # set shortmess+=c 51 - # " always show signcolumns 52 52 53 53 # " Pasting 54 54 # :map <leader>sy :!xclip -i<CR><CR> ··· 59 59 # lua <<EOF 60 60 61 61 62 - # local orig_util_open_floating_preview = vim.lsp.util.open_floating_preview 63 - # function vim.lsp.util.open_floating_preview(contents, syntax, opts, ...) 64 - # opts = opts or {} 65 - # opts.border = opts.border or 'rounded' 66 - # return orig_util_open_floating_preview(contents, syntax, opts, ...) 67 - # end 68 62 69 63 70 - # -- autopairs 71 - # require('nvim-autopairs').setup{} 72 - 73 - # -- marks 74 - # require('marks').setup{} 75 - 76 - # -- Setup nvim-cmp. 77 - 78 64 # local luasnip = require("luasnip") 79 65 # local lspkind = require("lspkind") 80 66 # local t = function(str) ··· 85 71 # return col == 0 or vim.fn.getline("."):sub(col, col):match("%s") ~= nil 86 72 # end 87 73 88 - # -- null-ls 89 - # -- being very janky 90 - # local null_ls = require("null-ls") 91 - # null_ls.setup({ 92 - # sources = { 93 - # null_ls.builtins.diagnostics.shellcheck, 94 - # null_ls.builtins.diagnostics.proselint.with({ filetypes = { "vimwiki", "mail", }, }), 95 - # null_ls.builtins.diagnostics.commitlint, 96 - # null_ls.builtins.diagnostics.jsonlint, 97 - # -- null_ls.builtins.code_actions.statix, 98 - # -- null_ls.builtins.diagnostics.clj_kondo, 99 - # -- null_ls.builtins.formatting.isort, 100 - # -- null_ls.builtins.formatting.black, 101 - # }, 102 - # }) 103 74 104 75 # -- Setup lspconfig 105 - # require("lsp-format").setup {} 106 76 # require("nvim-navic").setup {} 107 - # local format = require("lsp-format") 108 77 # local navic = require("nvim-navic") 109 78 110 79 # -- lspsaga, code_action lightbulb is annoying ··· 140 109 # }, 141 110 # }) 142 111 143 - 144 - # -- fennel-ls is bleeding edge 145 - # local lspconfig = require('lspconfig') 146 - # require("lspconfig.configs")["fennel-ls"] = { 147 - # default_config = { 148 - # cmd = {"fennel-ls"}, 149 - # filetypes = {"fennel"}, 150 - # root_dir = function(dir) return lspconfig.util.find_git_ancestor(dir) end, 151 - # settings = {} 152 - # } 153 - # } 154 - 155 - 156 112 # -- fennel-ls doesn't support gps 157 113 # lspconfig['fennel-ls'].setup { 158 114 # on_attach = function(client, bufnr) ··· 186 142 # -- }, 187 143 # -- } 188 144 189 - # require('gitsigns').setup { sign_priority=80 } 190 - 191 - # -- treesitter 192 - # require('nvim-treesitter.configs').setup { 193 - # -- parser_install_dir = "~/.local/share/nvim/site/parser/", 194 - # -- ensure_installed={'nix', 'clojure', 'python', 'fennel', 'lua', 'html', 'css', 'regex', 'supercollider', 'beancount', 'janet'}, 195 - # highlight = { enabled = true, additional_vim_regex_highting = true, }, 196 - # textobjects = { enabled = true }, 197 - # } 198 - # -- 'glsl' needs c++ compiler lol 199 - 200 145 # -- lualine 201 146 # local navic = require("nvim-navic") 202 147 # require('lualine').setup { ··· 226 171 # } 227 172 # } 228 173 229 - # -- nvim-lint 230 - # -- require('lint').linters_by_ft = { 231 - # -- markdown = {'vale'}, 232 - # -- } 233 - 234 - 235 - # -- Custom functions 236 - # function update_date() 237 - # local time = os.date("%Y-%m-%d %H:%M") 238 - # local message = "%update " .. time 239 - # local lines = vim.api.nvim_buf_get_lines(0, 0,4,false) 240 - # for i=1,4,1 do 241 - # if (lines[i]:len() == 0) then 242 - # vim.api.nvim_buf_set_lines(0, i-1, i, false, {message, ""}) 243 - # return 244 - # end 245 - # end 246 - # if (lines[4]:len() ~= 0) then 247 - # vim.api.nvim_buf_set_lines(0, 3, 4, false, {message}) 248 - # end 249 - # return 250 - # end 251 - 252 - # vim.api.nvim_create_autocmd( 253 - # "BufWritePre", 254 - # { pattern = { "*.wiki" }, callback = update_date} 255 - # ) 256 - 257 - # -- set spelling for text files 258 - # vim.api.nvim_create_autocmd( 259 - # { "BufRead", "BufNewFile" }, 260 - # { pattern = { "*.wiki", "*.txt", "*.md", "*.tex" }, 261 - # command = "setlocal spell" } 262 - # ) 263 - # vim.api.nvim_create_autocmd( 264 - # "FileType", 265 - # { pattern = { "mail" }, 266 - # command = "setlocal spell" } 267 - # ) 268 - 269 - # -- auto session 270 - # require('auto-session').setup { 271 - # log_level = 'info', 272 - # auto_session_suppress_dirs = {'~/'} 273 - # } 274 - # vim.o.sessionoptions="blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal" 275 - 276 - # require("which-key").setup{} 277 - # require('leap').set_default_keymaps() 278 - # 279 - # -- supercollider 280 - # local scnvim = require 'scnvim' 281 - # local map = scnvim.map 282 - # local map_expr = scnvim.map_expr 283 - # scnvim.setup { 284 - # keymaps = { 285 - # ['<localleader>e'] = map('editor.send_line', {'i', 'n'}), 286 - # ['<localleader>s'] = map_expr('CmdPeriod.run', {'i', 'n'}), 287 - # ['<localleader>t'] = { 288 - # map('editor.send_block', {'i', 'n'}), 289 - # map('editor.send_selection', 'x'), 290 - # }, 291 - # ['<CR>'] = map('postwin.toggle'), 292 - # ['<M-CR>'] = map('postwin.toggle', 'i'), 293 - # ['<M-L>'] = map('postwin.clear', {'n', 'i'}), 294 - # ['<C-k>'] = map('signature.show', {'n', 'i'}), 295 - # ['<F12>'] = map('sclang.hard_stop', {'n', 'x', 'i'}), 296 - # ['<leader>st'] = map('sclang.start'), 297 - # ['<leader>sk'] = map('sclang.recompile'), 298 - # ['<F1>'] = map_expr('s.boot'), 299 - # ['<F2>'] = map_expr('s.meter'), 300 - # } 301 - # } 302 - # -- You gotta run :SCNvimGenerateAssets for this first 303 - # -- require("luasnip").add_snippets("supercollider", require("scnvim/utils").get_snippets()) 304 174 305 175 # -- zen mode 306 176 # require('zen-mode').setup{ ··· 347 217 # } 348 218 # require('twilight').setup{} 349 219 350 - # -- hologram 351 - # require('hologram').setup{ 352 - # auto_display = false -- WIP automatic markdown image display, may be prone to breaking 353 - # } 354 220 355 221 # EOF 356 222 ··· 358 224 extraPackages = with pkgs; [ 359 225 # used to compile tree-sitter grammar 360 226 # python-with-my-packages 361 - nodejs 362 - clojure-lsp 363 - clojure 364 - clj-kondo 227 + # nodejs 228 + # clojure-lsp 229 + # clojure 230 + # clj-kondo 365 231 terraform-lsp 232 + nil 366 233 gopls 367 234 gcc 368 235 shellcheck 369 236 proselint 370 - statix 371 - nodePackages.typescript 372 - nodePackages.typescript-language-server 373 - luajitPackages.lua-lsp 237 + # statix 238 + # nodePackages.typescript 239 + # nodePackages.typescript-language-server 240 + # luajitPackages.lua-lsp 374 241 fennel-ls 375 242 # starpls-bin # TODO find this!! 376 243 ]; ··· 386 253 nvim-web-devicons 387 254 telescope-nvim 388 255 plenary-nvim 389 - nvim-navic 390 256 FTerm-nvim 391 257 barbar-nvim 392 - 393 - # TODO 394 - # neotree 395 258 neovim-ayu 396 259 rainbow_parentheses-vim 397 - vim-surround 398 - undotree 260 + auto-session 261 + which-key-nvim 262 + aerial-nvim 263 + todo-comments-nvim 264 + indent-blankline-nvim 399 265 400 - (nvim-treesitter.withPlugins (p: [ p.nix p.clojure p.fennel p.lua p.html p.css p.regex p.supercollider p.beancount p.markdown p.glsl p.yaml p.toml p.dockerfile p.json ])) 266 + # Tree sitter 267 + (nvim-treesitter.withPlugins (p: [ p.nix p.clojure p.fennel p.lua p.html p.css p.regex p.supercollider p.beancount p.markdown_inline p.markdown p.glsl p.yaml p.toml p.dockerfile p.json p.go ])) 401 268 nvim-treesitter-context 402 - auto-session 403 - which-key-nvim 404 - zen-mode-nvim 405 - twilight-nvim 406 - 407 - # TODO remove? 408 - vim-dasht 269 + nvim-treesitter-textobjects 270 + 271 + # TODO 272 + nvim-navic 273 + undotree 274 + marks-nvim 409 275 410 276 # language 411 277 vim-nix 412 278 emmet-vim 413 279 csv-vim 414 280 direnv-vim 415 - conjure 281 + # conjure 416 282 417 283 # kitaab stuff 418 284 vimwiki ··· 420 286 hologram-nvim 421 287 422 288 # lsp stuff 423 - # nvim-lint 424 - null-ls-nvim 425 289 nvim-lspconfig 426 290 nvim-cmp 427 291 cmp-nvim-lsp 428 292 cmp-treesitter 429 - nvim-lsp-ts-utils 430 - lspsaga-nvim 431 - cmp-conjure 293 + # cmp-conjure 432 294 cmp-buffer 433 295 cmp-path 434 296 cmp-spell 435 - nvim-autopairs 436 - cmp_luasnip 437 - luasnip 438 - lsp-format-nvim 439 - friendly-snippets 440 297 lspkind-nvim 298 + conform-nvim 299 + none-ls-nvim 300 + mini-nvim 301 + lspsaga-nvim 302 + # nvim-lspfuzzy 441 303 442 304 # git stuff 443 305 vim-fugitive ··· 454 316 # experimental 455 317 nvim-luapad 456 318 scnvim 457 - leap-nvim 319 + flash-nvim 458 320 vim-beancount 459 321 # vimtex 460 322 # custom