From 074e229d5fad6ab3442001f731eeef8fd50bdf30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kier=C3=A1n=20Meinhardt?= Date: Sun, 9 Jul 2023 16:32:57 +0200 Subject: [PATCH] feat: follow nvim-cmp tutorial, initialize vim-obsidian --- configs/packages.nix | 2 +- flake.nix | 1 + lib/vim/init.lua | 53 +++++++++++++++++++++------------------ lib/vim/init.vim | 14 +++++------ packages/obsidian-vim.nix | 17 +++++++++++++ packages/vim.nix | 1 + 6 files changed, 55 insertions(+), 33 deletions(-) create mode 100644 packages/obsidian-vim.nix diff --git a/configs/packages.nix b/configs/packages.nix index 6cfdda6..e8e0ca7 100644 --- a/configs/packages.nix +++ b/configs/packages.nix @@ -224,7 +224,7 @@ in { niveumPackages.kpaste config.nur.repos.mic92.ircsink - (haskellPackages.ghcWithPackages (hs: [ + (haskellPackages.ghcWithHoogle (hs: [ hs.text hs.lens hs.bytestring diff --git a/flake.nix b/flake.nix index 8afa4ce..c3e890a 100644 --- a/flake.nix +++ b/flake.nix @@ -321,6 +321,7 @@ untilport = pkgs.callPackage packages/untilport.nix {}; vg = pkgs.callPackage packages/vg.nix {}; vim = pkgs.callPackage packages/vim.nix {niveumPackages = self.packages.${system};}; + obsidian-vim = pkgs.callPackage packages/obsidian-vim.nix {}; vimPlugins-cheat-sh-vim = pkgs.callPackage packages/vimPlugins/cheat-sh.nix {}; vimPlugins-icalendar-vim = pkgs.callPackage packages/vimPlugins/icalendar-vim.nix {}; vimPlugins-jq-vim = pkgs.callPackage packages/vimPlugins/jq-vim.nix {}; diff --git a/lib/vim/init.lua b/lib/vim/init.lua index af7b9dd..10cc121 100644 --- a/lib/vim/init.lua +++ b/lib/vim/init.lua @@ -1,6 +1,11 @@ local cmp = require'cmp' cmp.setup({ + snippet = { + expand = function(args) { + require("luasnip").lsp_expand(args.body) + }, + }, mapping = cmp.mapping.preset.insert({ [''] = cmp.mapping.scroll_docs(-4), [''] = cmp.mapping.scroll_docs(4), @@ -10,56 +15,55 @@ cmp.setup({ }), sources = cmp.config.sources({ { name = 'nvim_lsp' }, + { name = 'luasnip' }, }, { { name = 'buffer' }, }) }) --- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). -cmp.setup.cmdline({ '/', '?' }, { - mapping = cmp.mapping.preset.cmdline(), - sources = { - { name = 'buffer' } - } -}) +-- -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). +-- cmp.setup.cmdline({ '/', '?' }, { +-- mapping = cmp.mapping.preset.cmdline(), +-- sources = { +-- { name = 'buffer' } +-- } +-- }) --- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). -cmp.setup.cmdline(':', { - mapping = cmp.mapping.preset.cmdline(), - sources = cmp.config.sources({ - { name = 'path' } - }, { - { name = 'cmdline' } - }) -}) -local capabilities = require('cmp_nvim_lsp').default_capabilities() +-- -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). +-- cmp.setup.cmdline(':', { +-- mapping = cmp.mapping.preset.cmdline(), +-- sources = cmp.config.sources({ +-- { name = 'path' } +-- }) +-- }) +local capabilities = require('cmp_nvim_lsp').default_capabilities(vim.lsp.protocol.make_client_capabilities()) local opts = { noremap=true, silent=true } vim.keymap.set('n', 'e', vim.diagnostic.open_float, opts) -vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts) -vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts) +vim.keymap.set('n', 'dn', vim.diagnostic.goto_prev, opts) +vim.keymap.set('n', 'dp', vim.diagnostic.goto_next, opts) vim.keymap.set('n', 'q', vim.diagnostic.setloclist, opts) -- Use an on_attach function to only map the following keys -- after the language server attaches to the current buffer local on_attach = function(client, bufnr) -- Enable completion triggered by - vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') - + -- vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') -- Mappings. -- See `:help vim.lsp.*` for documentation on any of the below functions local bufopts = { noremap=true, silent=true, buffer=bufnr } vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts) vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts) + vim.keymap.set('n', 'gt', vim.lsp.buf.type_definition, bufopts) vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts) vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts) vim.keymap.set('n', '', vim.lsp.buf.signature_help, bufopts) + vim.keymap.set('n', 'f', vim.lsp.buf.format, bufopts) vim.keymap.set('n', 'wa', vim.lsp.buf.add_workspace_folder, bufopts) vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder, bufopts) vim.keymap.set('n', 'wl', function() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end, bufopts) - vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, bufopts) vim.keymap.set('n', 'rn', vim.lsp.buf.rename, bufopts) vim.keymap.set('n', 'ca', vim.lsp.buf.code_action, bufopts) vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts) @@ -72,17 +76,18 @@ local lsp_flags = { } language_servers = { + clangd = {},` pyright = {}, -- pyright tsserver = {}, -- typescript-language-server elmls = {}, -- elm-language-server - -- denols = {}, -- deno built in + denols = {}, -- deno built in -- bashls = {}, -- bash-language-server hls = {}, -- haskell-language-server html = {}, -- vscode-langservers-extracted jsonls = {}, -- vscode-langservers-extracted nil_ls = {}, -- github:oxalica/nil -- rnix = {}, -- rnix-lsp - -- jqls = {}, -- jq-lsp + jqls = {}, -- jq-lsp rust_analyzer = { ["rust-analyzer"] = {} }, eslint = {}, -- volar? vls? diff --git a/lib/vim/init.vim b/lib/vim/init.vim index 7ce9203..44aca68 100644 --- a/lib/vim/init.vim +++ b/lib/vim/init.vim @@ -7,6 +7,7 @@ nnoremap :FZF nnoremap :Rg let g:fzf_layout = { 'down': '~15%' } + colorscheme dim " transparent background hi Normal guibg=NONE ctermbg=NONE @@ -47,19 +48,21 @@ set number set path+=** set splitbelow splitright set wildmenu wildmode=longest,list,full -set shortmess+=aI +set shortmess+=ac set nowritebackup noswapfile set mouse=a set showmatch set encoding=utf8 ffs=unix,dos,mac set smartindent set wrap -set nohlsearch +set hlsearch set clipboard=unnamedplus set nopaste set list listchars=tab:⇥\ ,extends:❯,precedes:❮,nbsp:␣,trail:· showbreak=¬ set foldlevelstart=30 +nnoremap :set nohlsearch + iabbrev ddate =strftime("%F") iabbrev dtime =strftime("%F %T") @@ -155,14 +158,9 @@ autocmd bufreadpost * \ endif autocmd bufreadpre * setlocal foldmethod=indent -set completeopt=noinsert,menuone,noselect +set completeopt=menu,menuone,noselect set complete+=kspell -let g:haskell_enable_quantification = 1 -let g:haskell_enable_recursivedo = 1 -let g:haskell_enable_arrowsyntax = 1 -let g:haskell_enable_pattern_synonyms = 1 - let g:pandoc#syntax#conceal#use = 0 let g:pandoc#modules#disabled = [] let g:pandoc#spell#default_langs = ['en', 'de'] diff --git a/packages/obsidian-vim.nix b/packages/obsidian-vim.nix new file mode 100644 index 0000000..b60dd41 --- /dev/null +++ b/packages/obsidian-vim.nix @@ -0,0 +1,17 @@ +{ + neovim, + vimPlugins, + vault ? "~/cloud/syncthing/obsidian/", + ... +}: +neovim.override { + configure = { + customRC = '' + let g:vimwiki_list = [{'path': '${vault}', + \ 'syntax': 'markdown', 'ext': '.md'}] + ''; + packages.nvim.start = [ + vimPlugins.vimwiki + ]; + }; +} diff --git a/packages/vim.nix b/packages/vim.nix index 6ddb5a3..c4ca910 100644 --- a/packages/vim.nix +++ b/packages/vim.nix @@ -19,6 +19,7 @@ cmp-path cmp-nvim-lsp cmp-cmdline + luasnip fzf-vim fzfWrapper