gopls configured, but cmp broken
This commit is contained in:
		
							parent
							
								
									7fab1f798c
								
							
						
					
					
						commit
						0709b64a71
					
				|  | @ -16,6 +16,15 @@ | ||||||
| (nvim.opt :showtabline 2) | (nvim.opt :showtabline 2) | ||||||
| (nvim.opt :expandtab true) | (nvim.opt :expandtab true) | ||||||
| (nvim.opt :autowriteall true) | (nvim.opt :autowriteall true) | ||||||
|  | (nvim.opt :cmdheight 2) | ||||||
|  | (nvim.opt :spelllang "en_gb") | ||||||
|  | (nvim.opt :ignorecase true) | ||||||
|  | (nvim.opt :smartcase true) | ||||||
|  | (nvim.opt :incsearch true) | ||||||
|  | (nvim.opt :updatetime 300) ; Diagnostics response time | ||||||
|  | (nvim.opt :signcolumn "yes") | ||||||
|  | (nvim.opt :cursorline true) | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| (nvim.opt :lisp true) ; include - in word to move better in snake-case) | (nvim.opt :lisp true) ; include - in word to move better in snake-case) | ||||||
| (nvim.g :sexp_filetypes "clojure,scheme,lisp,janet,fennel,yuck") ; include the lisps I use | (nvim.g :sexp_filetypes "clojure,scheme,lisp,janet,fennel,yuck") ; include the lisps I use | ||||||
|  | @ -26,4 +35,6 @@ | ||||||
| (require :conf.plugins) | (require :conf.plugins) | ||||||
| (require :conf.mappings) | (require :conf.mappings) | ||||||
| (require :conf.lsp) | (require :conf.lsp) | ||||||
| (require :conf.formatting) | (require :conf.plugins.cmp) | ||||||
|  | ; (require :conf.formatting) | ||||||
|  | ; (require :conf.kitaab) | ||||||
|  |  | ||||||
|  | @ -1,7 +1,118 @@ | ||||||
|  | ; (local lspfuzzy (require :lspfuzzy)) | ||||||
|  | (local lspkind (require :lspkind)) | ||||||
|  | (local lspconfig (require :lspconfig)) | ||||||
|  | (local cmp (require :cmp)) | ||||||
|  | (local nvim (require :lib/nvim)) | ||||||
|  | ; (local sg (require :sg)) | ||||||
|  | ; (local lsputil (require :lspconfig/util)) | ||||||
| 
 | 
 | ||||||
|  | (tset vim.lsp.handlers  | ||||||
|  |       :textDocument/hover  | ||||||
|  |       (vim.lsp.with vim.lsp.handlers.hover  | ||||||
|  |                     {:focusable false :border "rounded"})) | ||||||
|  | 
 | ||||||
|  | (tset vim.lsp.handlers | ||||||
|  |       :textDocument/signatureHelp | ||||||
|  |       (vim.lsp.with vim.lsp.handlers.signature_help | ||||||
|  |                     {:focusable false :border "rounded"})) | ||||||
|  | 
 | ||||||
|  | (local capabilities (let [cmp_nvim_lsp (require :cmp_nvim_lsp)] | ||||||
|  |                       (cmp_nvim_lsp.default_capabilities))) | ||||||
|  | 
 | ||||||
|  | (local formatting-augroup (nvim.augroup :LspFormatting)) | ||||||
|  | 
 | ||||||
|  | (fn goimports [wait-ms] | ||||||
|  |   (let [params (vim.lsp.util.make_range_params)  | ||||||
|  |          result (do | ||||||
|  |                  (tset params :context {:only [:source.organizeImports]}) | ||||||
|  |                  (vim.lsp.buf_request_sync 0 :textDocument/codeAction params wait-ms))] | ||||||
|  |        (each [_ res (pairs (or result {}))] | ||||||
|  |          (each [_ r (pairs (or res.result {}))] | ||||||
|  |            (if r.edit | ||||||
|  |                (vim.lsp.util.apply_workspace_edit r.edit "utf-16") | ||||||
|  |                (vim.lsp.buf.execute_command r.command)))) | ||||||
|  |    (vim.lsp.buf.format))) | ||||||
|  | 
 | ||||||
|  | (fn on-attach [client bufnr] | ||||||
|  |               (let [filetype (vim.api.nvim_buf_get_option 0 "filetype")] | ||||||
|  |                 (if (client.supports_method "textDocument/formatting") | ||||||
|  |                     (do (nvim.autocmd "BufWritePre" | ||||||
|  |                                       {:group formatting-augroup | ||||||
|  |                                        :buffer bufnr | ||||||
|  |                                        :callback (fn [_] (if (= filetype "go") | ||||||
|  |                                                              (goimports 2000) | ||||||
|  |                                                              (vim.lsp.buf.format {:bufnr bufnr})))}))))) | ||||||
|  | 
 | ||||||
|  | (lspconfig.gopls.setup  | ||||||
|  |   {:capabilities capabilities | ||||||
|  |    :codelens {:generate true :gc_details true} | ||||||
|  |    :semanticTokens true | ||||||
|  |    :flags { :debounce_text_changes 200} | ||||||
|  |    :analyses {:unusedparams true | ||||||
|  |               :unusedvariables true | ||||||
|  |               :unusedwrite true | ||||||
|  |               :nilness true | ||||||
|  |               :unusedwrite true | ||||||
|  |               :useany true} | ||||||
|  |    :completeUnimported true | ||||||
|  |    :staticcheck true | ||||||
|  |    :experimentalPostfixCompletions true | ||||||
|  |    :hints {:constantValues true | ||||||
|  |            :functionTypeParameters true    | ||||||
|  |            :assignVariablesTypes true | ||||||
|  |            :compositeLiteralTypes true | ||||||
|  |            :compositeLiteralFields true | ||||||
|  |            :parameterNames true | ||||||
|  |            :rangeVariableTypes true} | ||||||
|  |    :on_attach on-attach}) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ;  #    local servers = { 'clojure_lsp', 'terraform_lsp', 'zls', 'pyright', 'rust_analyzer', 'tsserver', 'lua_ls', 'nil_ls', 'gopls'} | ||||||
|  | ;  #    for _, lsp in ipairs(servers) do | ||||||
|  | ;  #      lspconfig[lsp].setup {} | ||||||
|  | ;  #        on_attach = function(client, bufnr) | ||||||
|  | ;  #          format.on_attach(client) | ||||||
|  | ;  #          navic.attach(client, bufnr) | ||||||
|  | ;  #        end, | ||||||
|  | ;  #        capabilities = capabilities, | ||||||
|  | ;  #       | ||||||
|  | ;  #    end) | ||||||
|  | ;; Diagnostics Config I don't yet understand | ||||||
| ; Set Diagnostics | ; Set Diagnostics | ||||||
| ; local signs = { Error = " ", Warn = " ", Hint = " ", Info = " " } | ; local signs = { Error = " ", Warn = " ", Hint = " ", Info = " " } | ||||||
| ; for type, icon in pairs(signs) do | ; for type, icon in pairs(signs) do | ||||||
| ; local hl = "DiagnosticSign" .. type | ; local hl = "DiagnosticSign" .. type | ||||||
| ; vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl}) | ; vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl}) | ||||||
| ; end | ; end | ||||||
|  | 
 | ||||||
|  | ; vim.g.diagnostics_active = true | ||||||
|  | ; function _G.toggle_diagnostics() | ||||||
|  | ;   if vim.g.diagnostics_active then | ||||||
|  | ;     vim.g.diagnostics_active = false | ||||||
|  | ;     vim.lsp.diagnostic.clear(0) | ||||||
|  | ;     vim.lsp.handlers["textDocument/publishDiagnostics"] = function() end | ||||||
|  | ;   else | ||||||
|  | ;     vim.g.diagnostics_active = true | ||||||
|  | ;     vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with( | ||||||
|  | ;       vim.lsp.diagnostic.on_publish_diagnostics, { | ||||||
|  | ;         virtual_text = true, | ||||||
|  | ;         signs = true, | ||||||
|  | ;         underline = true, | ||||||
|  | ;         update_in_insert = false, | ||||||
|  | ;       } | ||||||
|  | ;     ) | ||||||
|  | ;   end | ||||||
|  | ; end | ||||||
|  | ; | ||||||
|  | ; vim.diagnostic.config({ | ||||||
|  | ;   signs = true, | ||||||
|  | ;   update_in_insert = false, | ||||||
|  | ;   underline = false, | ||||||
|  | ;   severity_sort = true, | ||||||
|  | ;   float = { | ||||||
|  | ;     focusable = false, | ||||||
|  | ;     style = 'minimal', | ||||||
|  | ;     border = 'rounded', | ||||||
|  | ;     source = 'always', | ||||||
|  | ;   }, | ||||||
|  | ; }) | ||||||
|  |  | ||||||
|  | @ -5,13 +5,33 @@ | ||||||
| (nvim.keymap [:v] "<" "<gv" {:noremap true}) | (nvim.keymap [:v] "<" "<gv" {:noremap true}) | ||||||
| (nvim.keymap [:v] ">" ">gv" {:noremap true}) | (nvim.keymap [:v] ">" ">gv" {:noremap true}) | ||||||
| (nvim.keymap [:n] "<space>" "<NOP>" {:noremap true :silent true}) | (nvim.keymap [:n] "<space>" "<NOP>" {:noremap true :silent true}) | ||||||
|  | ;; Convenient way to move stuff in visual mode | ||||||
|  | (nvim.keymap [:v] "J" ":m '>+1<CR>gv=gv" {:noremap true}) | ||||||
|  | (nvim.keymap [:v] "K" ":m '>-2<CR>gv=gv" {:noremap true}) | ||||||
|  | ;; Convientent screen shifting  | ||||||
|  | (nvim.keymap [:n] "n" "nzzzv" {:noremap true}) | ||||||
|  | (nvim.keymap [:n] "N" "Nzzzv" {:noremap true}) | ||||||
|  | (nvim.keymap [:n] "J" "mzJ'z" {:noremap true}) | ||||||
|  | ; Fix Y | ||||||
|  | (nvim.keymap [:n] "Y" "y$") | ||||||
|  | ; Unmap Q | ||||||
|  | (nvim.keymap [] "Q" "<Nop>") | ||||||
| 
 | 
 | ||||||
|  | ; FTerm | ||||||
| (vim.api.nvim_create_user_command "FTermToggle" (fn [_]  | (vim.api.nvim_create_user_command "FTermToggle" (fn [_]  | ||||||
|                                                   ((-> (require :FTerm)  |                                                   ((-> (require :FTerm)  | ||||||
|                                                       (. :toggle))))  |                                                       (. :toggle))))  | ||||||
|                                   {:bang true}) |                                   {:bang true}) | ||||||
| (nvim.keymap [:t] "<TAB>" "<cmd>:FTermToggle<CR>") | (nvim.keymap [:t] "<TAB>" "<cmd>:FTermToggle<CR>") | ||||||
| (nvim.keymap [:n] "<TAB>" "<cmd>:FTermToggle<CR>" {:nnoremap true}) | (nvim.keymap [:n] "<TAB>" "<cmd>:FTermToggle<CR>" {:noremap true}) | ||||||
|  | 
 | ||||||
|  | ; Buffer Movement | ||||||
|  | (nvim.keymap [:n] "gT" ":BufferPrevious<CR>" {:silent true :noremap true})  | ||||||
|  | (nvim.keymap [:n] "gt" ":BufferNext<CR>" {:silent true :noremap true})  | ||||||
|  | (nvim.keymap [:n] "gj" ":BufferPick<CR>" {:silent true :noremap true})  | ||||||
|  | (nvim.keymap [:n] "gb" ":Telescope buffers<CR>" {:silent true :noremap true})  | ||||||
|  | (nvim.keymap [:n] "gq" ":BufferClosoe<CR>" {:silent true :noremap true})  | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| (local | (local | ||||||
|   normal-map-leader |   normal-map-leader | ||||||
|  | @ -23,6 +43,8 @@ | ||||||
|         "Quit"] |         "Quit"] | ||||||
|    "r" [":RainbowParenthesesToggleAll<CR>" |    "r" [":RainbowParenthesesToggleAll<CR>" | ||||||
|         "Toggle Rainbow Parens"] |         "Toggle Rainbow Parens"] | ||||||
|  |    "u" [":UndotreeToggle<CR>" | ||||||
|  |         "Toggle Undo Tree"] | ||||||
|    ; Telescope  |    ; Telescope  | ||||||
|    "f" {:name "Files" |    "f" {:name "Files" | ||||||
|         :f ["<cmd>Telescope find_files<cr>" |         :f ["<cmd>Telescope find_files<cr>" | ||||||
|  | @ -51,16 +73,17 @@ | ||||||
|               "Git Diff"] |               "Git Diff"] | ||||||
|          "h" ["" |          "h" ["" | ||||||
|               "Commit Hunk under Cursor"]} |               "Commit Hunk under Cursor"]} | ||||||
|    ;     nmap <leader>gl :diffget //3<CR> |          ; For handling merges | ||||||
|    ;     nmap <leader>gh :diffget //2<CR> |          ;     nmap <leader>gl :diffget //3<CR> | ||||||
|    ;     nnoremap <leader>gc :G commit -v -q %:p<CR> |          ;     nmap <leader>gh :diffget //2<CR> | ||||||
|  |          ;     nnoremap <leader>gc :G commit -v -q %:p<CR> | ||||||
|    ; Buffers |    ; Buffers | ||||||
|    "b" {:name "Buffer" |    "b" {:name "Buffer" | ||||||
|         :a ["" |         :b ["<cmd>:Telescope buffers<CR>" | ||||||
|              "Buffer Add"] |             "Buffer List"] | ||||||
|         :q ["" |         :q ["<cmd>:BufferClose<CR>" | ||||||
|              "Buffer Quit"] |              "Buffer Quit"] | ||||||
|         :n ["" |         :n ["<cmd>:BufferNext<CR>" | ||||||
|             "Buffer Next"] |             "Buffer Next"] | ||||||
|         :N ["<cmd>:tabp<CR>" |         :N ["<cmd>:tabp<CR>" | ||||||
|             "Buffer Previous"] |             "Buffer Previous"] | ||||||
|  | @ -89,8 +112,16 @@ | ||||||
|         :h [":Lspsaga hover_doc<CR>" |         :h [":Lspsaga hover_doc<CR>" | ||||||
|             "Hover doc"] |             "Hover doc"] | ||||||
|         :o [":LSoutlineToggle<CR>" |         :o [":LSoutlineToggle<CR>" | ||||||
|             "Outline"]} |             "Outline"] | ||||||
|  |         :t [":call v:lua.toggle_diagnostics()<CR>"]} | ||||||
|    ; Kitaab |    ; Kitaab | ||||||
|    "z" {:name "Kitaab"}}) |    "z" {:name "Kitaab" | ||||||
|  |         :n [":ZettelNew<CR>" | ||||||
|  |             "Zettel New"]} | ||||||
|  |    "v" {:name "Tabs" | ||||||
|  |         :v [":vnew<CR>" | ||||||
|  |             "Vertical Split"] | ||||||
|  |         :h [":new<CR>" | ||||||
|  |             "Horizontal Split"]}}) | ||||||
| 
 | 
 | ||||||
| (wk.register normal-map-leader {:prefix "<leader>"}) | (wk.register normal-map-leader {:prefix "<leader>"}) | ||||||
|  |  | ||||||
|  | @ -0,0 +1,4 @@ | ||||||
|  | (local nvim (require :lib/nvim)) | ||||||
|  | 
 | ||||||
|  | (nvim.g :tidal_target "terminal") | ||||||
|  | (nvim.g :scnvim_snippet_format "luasnip") | ||||||
|  | @ -1,7 +1,5 @@ | ||||||
| (local nvim (require :lib/nvim)) | (local nvim (require :lib/nvim)) | ||||||
| 
 | 
 | ||||||
| (nvim.g :tidal_target "terminal") |  | ||||||
| 
 |  | ||||||
| (local navic (require :nvim-navic)) | (local navic (require :nvim-navic)) | ||||||
| 
 | 
 | ||||||
| (let  [lualine (require :lualine)] | (let  [lualine (require :lualine)] | ||||||
|  | @ -9,6 +7,7 @@ | ||||||
|                   :sections {:lualine_c [:filename {1 navic.get_location  |                   :sections {:lualine_c [:filename {1 navic.get_location  | ||||||
|                                                     :cond navic.is_available}] |                                                     :cond navic.is_available}] | ||||||
|                              :lualine_y [(fn [] |                              :lualine_y [(fn [] | ||||||
|  |                                            ; TODO broken? | ||||||
|                                              (let [msg "No Active Lsp" |                                              (let [msg "No Active Lsp" | ||||||
|                                                    buf_ft (vim.api.nvim_buf_get_option 0 "filetype") |                                                    buf_ft (vim.api.nvim_buf_get_option 0 "filetype") | ||||||
|                                                    clients (vim.lsp.get_active_clients)] |                                                    clients (vim.lsp.get_active_clients)] | ||||||
|  |  | ||||||
							
								
								
									
										57
									
								
								home/profiles/nvim/config/fnl/conf/plugins/cmp.fnl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								home/profiles/nvim/config/fnl/conf/plugins/cmp.fnl
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,57 @@ | ||||||
|  | (local cmp (require :cmp)) | ||||||
|  | 
 | ||||||
|  | (fn has-words-before [] | ||||||
|  |   (let [(line col) (unpack (vim.api.nvim_win_get_cursor 0)) | ||||||
|  |         cur-line (. (vim.api.nvim_buf_get_lines 0 | ||||||
|  |                                           (- line 1) | ||||||
|  |                                           line | ||||||
|  |                                           true | ||||||
|  |                       1))] | ||||||
|  |     (and (not= col 0) | ||||||
|  |          (= (: (: cur-line :sub col col) :match "%s") | ||||||
|  |             nil)))) | ||||||
|  | 
 | ||||||
|  | (fn tab [fallback] | ||||||
|  |   (let [cmp (require :cmp) | ||||||
|  |         luasnip (require :luasnip)] | ||||||
|  |     (if (cmp.visible) | ||||||
|  |         (cmp.select_next_item) | ||||||
|  |         (let [available (luasnip.expand_or_jumpable)] | ||||||
|  |           (if (= (available) true) | ||||||
|  |               (luasnip.expand_or_jump) | ||||||
|  |               (if (has-words-before) | ||||||
|  |                   (cmp.complete) | ||||||
|  |                   (fallback))))))) | ||||||
|  | 
 | ||||||
|  | (fn stab [fallback] | ||||||
|  |   (let [cmp (require :cmp) | ||||||
|  |         luasnip (require :luasnip)] | ||||||
|  |     (if (cmp.visible) | ||||||
|  |         (cmp.select_prev_item) | ||||||
|  |         (let [available (luasnip.jumpable -1)] | ||||||
|  |           (if (= (available) true) | ||||||
|  |               (luasnip.jump -1) | ||||||
|  |               (if (has-words-before) | ||||||
|  |                   (cmp.complete) | ||||||
|  |                   (fallback))))))) | ||||||
|  | 
 | ||||||
|  | (let [lspkind (require :lspkind) | ||||||
|  |       luasnip_loaders (require :luasnip.loaders.from_vscode)] | ||||||
|  |   (luasnip_loaders.lazy_load) | ||||||
|  |   (cmp.setup {:formatting {:format lspkind.cmp_format} | ||||||
|  |               :snippet {:expand (fn [args] | ||||||
|  |                                   (let [luasnip (require :luasnip)] | ||||||
|  |                                     (luasnip.lsp_expand args.body)))} | ||||||
|  |               :sources [{:name "buffer"}      {:name "nvim_lsp"}  | ||||||
|  |                         {:name "look"}        {:name "path"} | ||||||
|  |                         {:name "calc"}        {:name "spell"} | ||||||
|  |                         {:name "cmp-conjure"} {:name "luasnip"} | ||||||
|  |                         {:name "tags"}] | ||||||
|  |               :mapping {"<C-d>" (cmp.mapping.scroll_docs -4) | ||||||
|  |                         "<C-u>" (cmp.mapping.scroll_docs 4) | ||||||
|  |                         "<Up>" (cmp.mapping (cmp.mapping.select_prev_item) [:i :c]) | ||||||
|  |                         "<Down>" (cmp.mapping (cmp.mapping.select_next_item) [:i :c])  | ||||||
|  |                         "<C-g>" (cmp.mapping.close) | ||||||
|  |                         "<CR>" (cmp.mapping.confirm {:select true}) | ||||||
|  |                         "<Tab>" (cmp.mapping tab [:i :s]) | ||||||
|  |                         "<S-Tab>" (cmp.mapping stab [:i :s])}})) | ||||||
							
								
								
									
										11
									
								
								home/profiles/nvim/config/fnl/conf/plugins/kitaab.fnl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								home/profiles/nvim/config/fnl/conf/plugins/kitaab.fnl
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,11 @@ | ||||||
|  | (local nvim (require :lib/nvim)) | ||||||
|  | 
 | ||||||
|  | (nvim.g :vimwiki_list [{:path "~/kitaab/vimwiki"  | ||||||
|  |                         :auto_tags 1  | ||||||
|  |                         :auto_diary_index 1  | ||||||
|  |                         :auto_generate_links 0  | ||||||
|  |                         :nested_syntaxes {:python "python"  | ||||||
|  |                                           :c++ "cpp"  | ||||||
|  |                                           :nix "nix"  | ||||||
|  |                                           :bash "sh"}}]) | ||||||
|  | (nvim.g :zettel_format "%y%m%d-%H%M") | ||||||
|  | @ -8,13 +8,13 @@ | ||||||
| 
 | 
 | ||||||
| (fn augroup [name ?opts] | (fn augroup [name ?opts] | ||||||
|   "Create autocommand group" |   "Create autocommand group" | ||||||
|   (vim.api.nvim_create_augroup name (or opts {}))) |   (vim.api.nvim_create_augroup name (or ?opts {}))) | ||||||
| 
 | 
 | ||||||
| (fn keymap [mode lhs rhs ?opts] | (fn keymap [mode lhs rhs ?opts] | ||||||
|   "Sets a global mapping for the given mode. |   "Sets a global mapping for the given mode. | ||||||
|   Ex: `(keymap [:n :i] ...)`" |   Ex: `(keymap [:n :i] ...)`" | ||||||
|   (let [string-mode (table.concat mode)] |   (let [string-mode (table.concat mode)] | ||||||
|     (vim.api.nvim_set_keymap string-mode lhs rhs (or opts {})))) |     (vim.api.nvim_set_keymap string-mode lhs rhs (or ?opts {})))) | ||||||
| 
 | 
 | ||||||
| (fn opt [key value] | (fn opt [key value] | ||||||
|   "Set a vim option" |   "Set a vim option" | ||||||
|  |  | ||||||
|  | @ -28,13 +28,17 @@ | ||||||
|     # kitaab get by tagged |     # kitaab get by tagged | ||||||
|     kt = "cd /home/anish/kitaab/vimwiki; eza *_index.wiki | fzf --preview 'bat --style=numbers --color=always --terminal-width -1 ./{}';cd $OLDPWD"; |     kt = "cd /home/anish/kitaab/vimwiki; eza *_index.wiki | fzf --preview 'bat --style=numbers --color=always --terminal-width -1 ./{}';cd $OLDPWD"; | ||||||
|   }; |   }; | ||||||
|   # Add %update to the highlight clause for vimwiki files | 
 | ||||||
|   home.file.".config/nvim/after/syntax/vimwiki.vim".text = '' |   home.file = { | ||||||
|     " match with %update |     # Add %update to the highlight clause for vimwiki files | ||||||
|     syntax match VimwikiPlaceholder /^\s*%update\ze\%(\s.*\)\?$/ nextgroup=VimwikiPlaceholderParam skipwhite |    # ".config/nvim/after/syntax/vimwiki.vim".text = '' | ||||||
|     " match with %link |    #   " match with %update | ||||||
|     syntax match VimwikiPlaceholder /^\s*%link\ze\%(\s.*\)\?$/ nextgroup=VimwikiPlaceholderParam skipwhite |    #   syntax match VimwikiPlaceholder /^\s*%update\ze\%(\s.*\)\?$/ nextgroup=VimwikiPlaceholderParam skipwhite | ||||||
|   ''; |    #   " match with %link | ||||||
|  |    #   syntax match VimwikiPlaceholder /^\s*%link\ze\%(\s.*\)\?$/ nextgroup=VimwikiPlaceholderParam skipwhite | ||||||
|  |    # ''; | ||||||
|  |     ".config/nvim".source = ./config; | ||||||
|  |   }; | ||||||
| 
 | 
 | ||||||
|   #environment.systemPackages = with customPlugins; [ tidal ]; |   #environment.systemPackages = with customPlugins; [ tidal ]; | ||||||
|   programs.neovim = { |   programs.neovim = { | ||||||
|  | @ -43,138 +47,17 @@ | ||||||
|     # extraConfig = '' |     # extraConfig = '' | ||||||
|   #    filetype plugin on |   #    filetype plugin on | ||||||
| 
 | 
 | ||||||
|   #    " set spell |  | ||||||
|   #    set spelllang=en_gb |  | ||||||
|   #    set ignorecase |  | ||||||
|   #    set smartcase |  | ||||||
|   #    set incsearch |  | ||||||
|   #    " if hidden is not set, TextEdit might fail. |  | ||||||
|   #    set hidden |  | ||||||
|   #    " Some servers have issues with backup files, see #649 |  | ||||||
|   #    set nobackup |  | ||||||
|   #    set nowritebackup |  | ||||||
|   #    " Better display for messages |  | ||||||
|   #    set cmdheight=2 |  | ||||||
|   #    " You will have bad experience for diagnostic messages when it's default 4000. |  | ||||||
|   #    set updatetime=300 |  | ||||||
|   #    " don't give |ins-completion-menu| messages. |  | ||||||
|   #    set shortmess+=c |   #    set shortmess+=c | ||||||
|   #    " always show signcolumns |   #    " always show signcolumns | ||||||
|   #    set signcolumn=yes |  | ||||||
|   #    " highlight row |  | ||||||
|   #    set cursorline |  | ||||||
| 
 | 
 | ||||||
|   #    let g:conjure#filetype#fennel = "conjure.client.fennel.stdio" |  | ||||||
|   #    " we only use fennel with love; no we don't... |  | ||||||
|   #    let g:conjure#client#fennel#stdio#command = "fennel"  |  | ||||||
|   #    " let g:conjure#extract#tree_sitter#enabled = true |  | ||||||
|   #    map <localleader>lt :ConjureLogToggle<CR> |  | ||||||
| 
 |  | ||||||
|   #    let g:rainbow_active = 0 |  | ||||||
|   #    autocmd BufReadPost,BufNewFile c,clj,cljs RainbowParenthesesToggleAll |  | ||||||
| 
 |  | ||||||
|   #    " general commands |  | ||||||
|   #    nnoremap <BS> :noh<CR> |  | ||||||
|   #    map Q <Nop> |  | ||||||
|   #    nnoremap Y y$ |  | ||||||
|   #    nnoremap <leader>n :vnew<CR> |  | ||||||
|   #    " center moving |  | ||||||
|   #    nnoremap n nzzzv |  | ||||||
|   #    nnoremap N Nzzzv |  | ||||||
|   #    nnoremap J mzJ'z |  | ||||||
|   #    " undo points |  | ||||||
|   #    inoremap , ,<c-g>u |  | ||||||
|   #    inoremap . .<c-g>u |  | ||||||
|   #    inoremap ? ?<c-g>u |  | ||||||
|   #    inoremap ! !<c-g>u |  | ||||||
|   #    inoremap ) )<c-g>u |  | ||||||
|   #    inoremap [ [<c-g>u |  | ||||||
|   #    inoremap ] ]<c-g>u |  | ||||||
|   #    inoremap { {<c-g>u |  | ||||||
|   #    inoremap ( (<c-g>u |  | ||||||
|   #    inoremap } }<c-g>u |  | ||||||
|   #    " moving text |  | ||||||
|   #    vnoremap J :m '>+1<CR>gv=gv |  | ||||||
|   #    vnoremap K :m '>-2<CR>gv=gv |  | ||||||
|   #    inoremap <c-j> <esc>:m .+1<CR>== |  | ||||||
|   #    inoremap <c-k> <esc>:m .-2<CR>== |  | ||||||
|   #    nnoremap <leader>j <esc>:m .+1<CR>== |  | ||||||
|   #    nnoremap <leader>k <esc>:m .-2<CR>== |  | ||||||
|   #    " Pasting  |   #    " Pasting  | ||||||
|   #    :map <leader>sy :!xclip -i<CR><CR> |   #    :map <leader>sy :!xclip -i<CR><CR> | ||||||
|   #    :vmap <leader>sy "*y |   #    :vmap <leader>sy "*y | ||||||
|   #    :map <leader>sp :r!xclip -o<CR> |   #    :map <leader>sp :r!xclip -o<CR> | ||||||
| 
 | 
 | ||||||
|   #    " barbar |  | ||||||
|   #    nnoremap <silent> gT :BufferPrevious<CR> |  | ||||||
|   #    nnoremap <silent> gt :BufferNext<CR> |  | ||||||
|   #    nnoremap <silent> gj :BufferPick<CR> |  | ||||||
|   #    nnoremap <silent> gq :BufferClose<CR> |  | ||||||
| 
 |  | ||||||
|   #    " kitaab |  | ||||||
|   #    map <leader>cz :VimwikiIndex<CR>:ZettelNew |  | ||||||
|   #    map <leader>zs :ZettelSearch<CR> |  | ||||||
|   #    map <leader>zn :ZettelNew<CR> |  | ||||||
|   #    map <leader>zo :ZettelOpen<CR> |  | ||||||
|   #    map <leader>zf :Telescope oldfiles only_cwd=true<CR> |  | ||||||
|   #    map <leader>wt :VimwikiMakeTomorrowDiaryNote |  | ||||||
|   #    map <leader>wd :VimwikiMakeYesterdayDiaryNote |  | ||||||
|   #    map <leader>zm :ZenMode<CR>:setlocal nospell<CR> |  | ||||||
|   #    let g:vimwiki_list = [{ 'path': '~/kitaab/vimwiki', 'auto_tags': 1, 'auto_diary_index': 1, 'auto_generate_links': 0, 'nested_syntaxes': {'python': 'python', 'c++': 'cpp', 'nix': 'nix', 'bash': 'sh'} }] |  | ||||||
|   #    let g:sync_taskwarrior = 0 |  | ||||||
|   #    let g:zettel_format = "%y%m%d-%H%M" |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|   #    let g:scnvim_snippet_format = "luasnip" |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|   #    " lua config  |   #    " lua config  | ||||||
|   #    lua <<EOF |   #    lua <<EOF | ||||||
|   #    vim.g.diagnostics_active = true |  | ||||||
|   #    function _G.toggle_diagnostics() |  | ||||||
|   #      if vim.g.diagnostics_active then |  | ||||||
|   #        vim.g.diagnostics_active = false |  | ||||||
|   #        vim.lsp.diagnostic.clear(0) |  | ||||||
|   #        vim.lsp.handlers["textDocument/publishDiagnostics"] = function() end |  | ||||||
|   #      else |  | ||||||
|   #        vim.g.diagnostics_active = true |  | ||||||
|   #        vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with( |  | ||||||
|   #          vim.lsp.diagnostic.on_publish_diagnostics, { |  | ||||||
|   #            virtual_text = true, |  | ||||||
|   #            signs = true, |  | ||||||
|   #            underline = true, |  | ||||||
|   #            update_in_insert = false, |  | ||||||
|   #          } |  | ||||||
|   #        ) |  | ||||||
|   #      end |  | ||||||
|   #    end |  | ||||||
| 
 | 
 | ||||||
|   #    vim.diagnostic.config({ |  | ||||||
|   #      signs = true, |  | ||||||
|   #      update_in_insert = false, |  | ||||||
|   #      underline = false, |  | ||||||
|   #      severity_sort = true, |  | ||||||
|   #      float = { |  | ||||||
|   #        focusable = false, |  | ||||||
|   #        style = 'minimal', |  | ||||||
|   #        border = 'rounded', |  | ||||||
|   #        source = 'always', |  | ||||||
|   #      }, |  | ||||||
|   #    }) |  | ||||||
| 
 |  | ||||||
|   #    vim.lsp.handlers['textDocument/hover'] = vim.lsp.with( |  | ||||||
|   #      vim.lsp.handlers.hover, |  | ||||||
|   #      { |  | ||||||
|   #        border = 'rounded', |  | ||||||
|   #      } |  | ||||||
|   #    ) |  | ||||||
| 
 |  | ||||||
|   #    vim.lsp.handlers['textDocument/signatureHelp'] = vim.lsp.with( |  | ||||||
|   #      vim.lsp.handlers.signature_help, |  | ||||||
|   #      { |  | ||||||
|   #        border = 'rounded', |  | ||||||
|   #      } |  | ||||||
|   #    ) |  | ||||||
| 
 | 
 | ||||||
|   #    local orig_util_open_floating_preview = vim.lsp.util.open_floating_preview |   #    local orig_util_open_floating_preview = vim.lsp.util.open_floating_preview | ||||||
|   #    function vim.lsp.util.open_floating_preview(contents, syntax, opts, ...) |   #    function vim.lsp.util.open_floating_preview(contents, syntax, opts, ...) | ||||||
|  | @ -184,8 +67,6 @@ | ||||||
|   #    end |   #    end | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|   #    vim.api.nvim_set_keymap('n', '<leader>vt', ':call v:lua.toggle_diagnostics()<CR>',  {noremap = true, silent = true}) |  | ||||||
| 
 |  | ||||||
|   #    -- autopairs |   #    -- autopairs | ||||||
|   #    require('nvim-autopairs').setup{} |   #    require('nvim-autopairs').setup{} | ||||||
| 
 | 
 | ||||||
|  | @ -193,15 +74,9 @@ | ||||||
|   #    require('marks').setup{} |   #    require('marks').setup{} | ||||||
| 
 | 
 | ||||||
|   #    -- Setup nvim-cmp. |   #    -- Setup nvim-cmp. | ||||||
|   #    local has_words_before = function() |  | ||||||
|   #      local line, col = unpack(vim.api.nvim_win_get_cursor(0)) |  | ||||||
|   #      return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil |  | ||||||
|   #    end |  | ||||||
| 
 | 
 | ||||||
|   #    local luasnip = require("luasnip") |   #    local luasnip = require("luasnip") | ||||||
|   #    local lspkind = require("lspkind") |   #    local lspkind = require("lspkind") | ||||||
|   #    local cmp = require('cmp') |  | ||||||
|   #    local cmp_autopairs = require('nvim-autopairs.completion.cmp') |  | ||||||
|   #    local t = function(str) |   #    local t = function(str) | ||||||
|   #        return vim.api.nvim_replace_termcodes(str, true, true, true) |   #        return vim.api.nvim_replace_termcodes(str, true, true, true) | ||||||
|   #    end |   #    end | ||||||
|  | @ -209,61 +84,6 @@ | ||||||
|   #        local col = vim.fn.col(".") - 1 |   #        local col = vim.fn.col(".") - 1 | ||||||
|   #        return col == 0 or vim.fn.getline("."):sub(col, col):match("%s") ~= nil |   #        return col == 0 or vim.fn.getline("."):sub(col, col):match("%s") ~= nil | ||||||
|   #    end |   #    end | ||||||
|   #    cmp.setup { |  | ||||||
|   #        formatting = { |  | ||||||
|   #            format = lspkind.cmp_format({ |  | ||||||
|   #              mode = 'symbol_text',  |  | ||||||
|   #              maxwidth = 50,  |  | ||||||
|   #          }) |  | ||||||
|   #        }, |  | ||||||
|   #        mapping = { |  | ||||||
|   #            ['<C-p>'] = cmp.mapping.select_prev_item(), |  | ||||||
|   #            ['<C-n>'] = cmp.mapping.select_next_item(), |  | ||||||
|   #            ['<C-d>'] = cmp.mapping.scroll_docs(-4), |  | ||||||
|   #            ['<C-f>'] = cmp.mapping.scroll_docs(4), |  | ||||||
|   #            ['<C-Space>'] = cmp.mapping.complete(), |  | ||||||
|   #            ['<C-e>'] = cmp.mapping.close(), |  | ||||||
|   #            ['<CR>'] = cmp.mapping.confirm({ |  | ||||||
|   #                behavior = cmp.ConfirmBehavior.Insert, |  | ||||||
|   #                select = true |  | ||||||
|   #            }), |  | ||||||
|   #            ["<Tab>"] = cmp.mapping(function(fallback)   |  | ||||||
|   #              if cmp.visible() then   |  | ||||||
|   #                  cmp.select_next_item()   |  | ||||||
|   #              elseif luasnip.expand_or_jumpable() then |  | ||||||
|   #                luasnip.expand_or_jump() |  | ||||||
|   #              elseif has_words_before() then |  | ||||||
|   #                cmp.complete() |  | ||||||
|   #              else |  | ||||||
|   #                  fallback()   |  | ||||||
|   #              end |  | ||||||
|   #            end, {"i", "s"}), |  | ||||||
|   #            ["<S-Tab>"] = cmp.mapping(function(fallback)   |  | ||||||
|   #              if cmp.visible() then   |  | ||||||
|   #                  cmp.select_prev_item()   |  | ||||||
|   #              elseif luasnip.jumpable(-1) then |  | ||||||
|   #                luasnip.jump(-1) |  | ||||||
|   #              else   |  | ||||||
|   #                  fallback()   |  | ||||||
|   #              end   |  | ||||||
|   #            end, { "i", "s" }), |  | ||||||
|   #        }, |  | ||||||
|   #        snippet = { |  | ||||||
|   #          expand = function(args) |  | ||||||
|   #            require'luasnip'.lsp_expand(args.body) |  | ||||||
|   #          end |  | ||||||
|   #        }, |  | ||||||
|   #        sources = { |  | ||||||
|   #            {name = 'buffer'}, {name = 'nvim_lsp'},  |  | ||||||
|   #            {name = "look"}, {name = "path"}, |  | ||||||
|   #            {name = "calc"}, {name = "spell"}, |  | ||||||
|   #            {name = 'cmp-conjure'}, {name = "luasnip"},  |  | ||||||
|   #            {name = 'tags'} |  | ||||||
|   #        }, |  | ||||||
|   #        completion = {completeopt = 'menu,menuone,noinsert'} |  | ||||||
|   #    } |  | ||||||
|   #    cmp.event:on( 'confirm_done', cmp_autopairs.on_confirm_done({  map_char = { tex = ' ' } })) |  | ||||||
|   #    require("luasnip.loaders.from_vscode").lazy_load() |  | ||||||
| 
 | 
 | ||||||
|   #    -- null-ls |   #    -- null-ls | ||||||
|   #    -- being very janky |   #    -- being very janky | ||||||
|  | @ -320,7 +140,6 @@ | ||||||
|   #      }, |   #      }, | ||||||
|   #    }) |   #    }) | ||||||
| 
 | 
 | ||||||
|   #    capabilities = require('cmp_nvim_lsp').default_capabilities() |  | ||||||
| 
 | 
 | ||||||
|   #    -- fennel-ls is bleeding edge |   #    -- fennel-ls is bleeding edge | ||||||
|   #    local lspconfig = require('lspconfig') |   #    local lspconfig = require('lspconfig') | ||||||
|  | @ -333,16 +152,6 @@ | ||||||
|   #      } |   #      } | ||||||
|   #    } |   #    } | ||||||
| 
 | 
 | ||||||
|   #    local servers = { 'clojure_lsp', 'terraform_lsp', 'zls', 'pyright', 'rust_analyzer', 'tsserver', 'lua_ls', 'nil_ls', 'gopls'} |  | ||||||
|   #    for _, lsp in ipairs(servers) do |  | ||||||
|   #      lspconfig[lsp].setup { |  | ||||||
|   #        on_attach = function(client, bufnr) |  | ||||||
|   #          format.on_attach(client) |  | ||||||
|   #          navic.attach(client, bufnr) |  | ||||||
|   #        end, |  | ||||||
|   #        capabilities = capabilities, |  | ||||||
|   #      } |  | ||||||
|   #    end |  | ||||||
| 
 | 
 | ||||||
|   #    -- fennel-ls doesn't support gps |   #    -- fennel-ls doesn't support gps | ||||||
|   #    lspconfig['fennel-ls'].setup { |   #    lspconfig['fennel-ls'].setup { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue