aboutsummaryrefslogtreecommitdiff
path: root/nvim
diff options
context:
space:
mode:
Diffstat (limited to 'nvim')
-rw-r--r--nvim/autocmd.vim2
-rw-r--r--nvim/completion.lua21
-rw-r--r--nvim/init.vim3
-rw-r--r--nvim/keymaps.vim16
-rw-r--r--nvim/lsp.lua60
-rw-r--r--nvim/plugins.vim174
-rw-r--r--nvim/settings.vim3
-rw-r--r--nvim/statusline.vim9
8 files changed, 111 insertions, 177 deletions
diff --git a/nvim/autocmd.vim b/nvim/autocmd.vim
index f5db72c..fb718c8 100644
--- a/nvim/autocmd.vim
+++ b/nvim/autocmd.vim
@@ -1,3 +1,3 @@
1autocmd FileType html,css EmmetInstall 1"autocmd FileType html,css EmmetInstall
2"autocmd VimEnter * NERDTree | wincmd p 2"autocmd VimEnter * NERDTree | wincmd p
3"autocmd BufEnter * if winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif 3"autocmd BufEnter * if winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif
diff --git a/nvim/completion.lua b/nvim/completion.lua
new file mode 100644
index 0000000..d477367
--- /dev/null
+++ b/nvim/completion.lua
@@ -0,0 +1,21 @@
1vim.api.nvim_create_autocmd("LspAttach", {
2 callback = function(ev)
3 local client = vim.lsp.get_client_by_id(ev.data.client_id)
4 if client and client:supports_method("textDocument/completion") then
5 vim.lsp.completion.enable(true, client.id, ev.buf, { autotrigger = true })
6 end
7
8 if client and not client:supports_method('textDocument/willSaveWaitUntil') and client:supports_method('textDocument/formatting') then
9 vim.api.nvim_create_autocmd('BufWritePre', {
10 group = vim.api.nvim_create_augroup('my.lsp', {clear=false}),
11 buffer = ev.buf,
12 callback = function()
13 vim.lsp.buf.format({ bufnr = ev.buf, id = client.id, timeout_ms = 1000 })
14 end,
15 })
16 end
17 end,
18})
19
20vim.o.winborder = 'rounded'
21
diff --git a/nvim/init.vim b/nvim/init.vim
index c3fd02c..96ecac9 100644
--- a/nvim/init.vim
+++ b/nvim/init.vim
@@ -4,4 +4,5 @@ source $HOME/.config/nvim/autocmd.vim
4source $HOME/.config/nvim/keymaps.vim 4source $HOME/.config/nvim/keymaps.vim
5source $HOME/.config/nvim/plugins.vim 5source $HOME/.config/nvim/plugins.vim
6source $HOME/.config/nvim/colorscheme.vim 6source $HOME/.config/nvim/colorscheme.vim
7 7source $HOME/.config/nvim/lsp.lua
8source $HOME/.config/nvim/completion.lua
diff --git a/nvim/keymaps.vim b/nvim/keymaps.vim
index 2c1d65b..2aff916 100644
--- a/nvim/keymaps.vim
+++ b/nvim/keymaps.vim
@@ -24,18 +24,9 @@ map k gk
24"map $ g$ 24"map $ g$
25"map 0 g0 25"map 0 g0
26 26
27" Vernünftige Tastenbelegungen für Autocomplete
28inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>"
29inoremap <expr> <Tab> pumvisible() ? "\<C-y>" : "\<Tab>"
30inoremap <expr> <Esc> pumvisible() ? "\<C-e>" : "\<Esc>"
31inoremap <expr> <C-j> pumvisible() ? "\<C-n>" : "\<Down>"
32inoremap <expr> <C-k> pumvisible() ? "\<C-p>" : "\<Up>"
33
34" Funktionstasten 27" Funktionstasten
35nnoremap <silent> <F4> :NvimTreeToggle<CR> 28nnoremap <silent> <F4> :NvimTreeToggle<CR>
36nnoremap <silent> <F5> :make<CR> 29nnoremap <silent> <F5> :make<CR>
37nnoremap <silent> <F7> :MundoToggle<CR>
38nnoremap <silent> <F8> :TagbarToggle<CR>
39 30
40" Telescope 31" Telescope
41nnoremap <leader>ff <cmd>Telescope find_files<cr> 32nnoremap <leader>ff <cmd>Telescope find_files<cr>
@@ -45,6 +36,12 @@ nnoremap <leader>fh <cmd>Telescope help_tags<cr>
45 36
46" LSP Keybindings 37" LSP Keybindings
47lua << EOF 38lua << EOF
39vim.keymap.set("i", "<c-space>", function() vim.lsp.completion.get() end)
40
41-- map <cr> to <c-y> when the popup menu is visible
42vim.keymap.set("i", "<cr>", "pumvisible() ? '<c-y>' : '<cr>'", { expr = true })
43
44--[[
48vim.keymap.set('n', '<space>e', vim.diagnostic.open_float) 45vim.keymap.set('n', '<space>e', vim.diagnostic.open_float)
49vim.keymap.set('n', '[d', vim.diagnostic.goto_prev) 46vim.keymap.set('n', '[d', vim.diagnostic.goto_prev)
50vim.keymap.set('n', ']d', vim.diagnostic.goto_next) 47vim.keymap.set('n', ']d', vim.diagnostic.goto_next)
@@ -75,4 +72,5 @@ vim.api.nvim_create_autocmd('LspAttach', {
75 end, opts) 72 end, opts)
76 end, 73 end,
77}) 74})
75]]
78EOF 76EOF
diff --git a/nvim/lsp.lua b/nvim/lsp.lua
new file mode 100644
index 0000000..299dedc
--- /dev/null
+++ b/nvim/lsp.lua
@@ -0,0 +1,60 @@
1vim.lsp.config.clangd = {
2 cmd = { '/usr/local/bin/clangd19', '--background-index', '--function-arg-placeholders' },
3 root_markers = { 'compile_commands.json', 'compile_flags.txt' },
4 filetypes = { 'c', 'cpp' },
5}
6
7vim.lsp.config.lua_ls = {
8 settings = {
9 Lua = {
10 runtime = {
11 version = 'LuaJIT',
12 },
13 diagnostics = {
14 globals = {'vim'},
15 },
16 workspace = {
17 library = vim.api.nvim_get_runtime_file("", true),
18 },
19 telemetry = {
20 enable = false,
21 },
22 },
23 }
24}
25
26local project_library_path = "/home/t/.local/lib/node_modules"
27local ng_cmd = {"ngserver", "--stdio", "--tsProbeLocations", project_library_path , "--ngProbeLocations", project_library_path}
28
29vim.lsp.config.angularls = {
30 cmd = ng_cmd,
31 on_new_config = function(new_config,new_root_dir)
32 new_config.cmd = ng_cmd
33 end,
34}
35
36vim.lsp.config.markdown_oxide = {
37 on_attach = on_attach,
38 cmd = {
39 'markdown-oxide'
40 }
41}
42
43vim.lsp.enable({
44 'clangd',
45 'lua_ls',
46 'angularls',
47 'cssls',
48 'html',
49 'ts_ls',
50 'vimls',
51 'jsonls',
52 'gopls',
53 'markdown_oxid'
54})
55
56vim.diagnostic.config({
57 virtual_text = true,
58 virtual_lines = true
59})
60
diff --git a/nvim/plugins.vim b/nvim/plugins.vim
index 572eeb5..fe7b8f6 100644
--- a/nvim/plugins.vim
+++ b/nvim/plugins.vim
@@ -6,31 +6,21 @@ endif
6 6
7" vim-plug 7" vim-plug
8call plug#begin() 8call plug#begin()
9 Plug 'mattn/emmet-vim' 9 Plug 'neovim/nvim-lspconfig'
10 10
11 Plug 'nvim-tree/nvim-web-devicons' 11 Plug 'nvim-tree/nvim-web-devicons'
12 Plug 'nvim-tree/nvim-tree.lua' 12 Plug 'nvim-tree/nvim-tree.lua'
13 13
14 Plug 'preservim/tagbar'
15 Plug 'romainl/vim-cool' 14 Plug 'romainl/vim-cool'
16 Plug 'simnalamburt/vim-mundo' 15
17 Plug 'tpope/vim-repeat' 16 Plug 'tpope/vim-repeat'
18 Plug 'tpope/vim-surround' 17 Plug 'tpope/vim-surround'
18
19 Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} 19 Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
20 Plug 'neovim/nvim-lspconfig' 20
21 Plug 'windwp/nvim-autopairs' 21 Plug 'windwp/nvim-autopairs'
22 Plug 'windwp/nvim-ts-autotag' 22 Plug 'windwp/nvim-ts-autotag'
23 23
24 Plug 'hrsh7th/nvim-cmp'
25 Plug 'L3MON4D3/LuaSnip'
26 Plug 'saadparwaiz1/cmp_luasnip'
27 Plug 'rafamadriz/friendly-snippets'
28
29 Plug 'hrsh7th/cmp-nvim-lsp'
30 Plug 'hrsh7th/cmp-buffer'
31 " Plug 'hrsh7th/cmp-path'
32 " Plug 'hrsh7th/cmp-cmdline'
33
34 Plug 'lewis6991/gitsigns.nvim' 24 Plug 'lewis6991/gitsigns.nvim'
35 25
36 Plug 'RRethy/vim-illuminate' 26 Plug 'RRethy/vim-illuminate'
@@ -39,23 +29,12 @@ call plug#begin()
39 Plug 'nvim-lua/plenary.nvim' 29 Plug 'nvim-lua/plenary.nvim'
40 Plug 'nvim-telescope/telescope.nvim' 30 Plug 'nvim-telescope/telescope.nvim'
41 31
42 "Plug 'cocopon/iceberg.vim' 32 " Colorscheme
43 Plug 'tomasiser/vim-code-dark' 33 Plug 'tomasiser/vim-code-dark'
44call plug#end() 34call plug#end()
45 35
46" EMMET
47let g:user_emmet_install_global=0
48let g:user_emmet_leader_key='<C-y>'
49
50" Tagbar
51let g:tagbar_ctags_bin='/usr/local/bin/uctags'
52
53" Vimundo
54let g:mundo_right=1
55let g:mundo_width=40
56let g:mundo_preview_height=30
57
58lua << EOF 36lua << EOF
37
59-- nvim-tree 38-- nvim-tree
60vim.g.loaded_netrw = 1 39vim.g.loaded_netrw = 1
61vim.g.loaded_netrwPlugin = 1 40vim.g.loaded_netrwPlugin = 1
@@ -69,6 +48,9 @@ require("nvim-tree").setup({
69 }, 48 },
70 renderer = { 49 renderer = {
71 group_empty = true, 50 group_empty = true,
51 indent_markers = {
52 enable = true,
53 },
72 }, 54 },
73 filters = { 55 filters = {
74 dotfiles = true, 56 dotfiles = true,
@@ -89,131 +71,11 @@ require('nvim-treesitter.configs').setup {
89} 71}
90 72
91require('nvim-autopairs').setup() 73require('nvim-autopairs').setup()
92require('nvim-ts-autotag').setup()
93
94local capabilities = require('cmp_nvim_lsp').default_capabilities()
95capabilities.textDocument.completion.completionItem.snippetSupport = true
96
97local lspconfig = require('lspconfig')
98
99lspconfig.clangd.setup{
100 cmd = { 'clangd15' },
101 capabilities = capabilities
102}
103
104lspconfig.lua_ls.setup{
105 settings = {
106 Lua = {
107 runtime = {
108 version = 'LuaJIT',
109 },
110 diagnostics = {
111 globals = {'vim'},
112 },
113 workspace = {
114 library = vim.api.nvim_get_runtime_file("", true),
115 },
116 telemetry = {
117 enable = false,
118 },
119 },
120 },
121 capabilities = capabilities
122}
123
124lspconfig.cssls.setup{
125 capabilities = capabilities
126}
127
128lspconfig.html.setup{
129 capabilities = capabilities
130}
131
132lspconfig.ts_ls.setup{
133 capabilities = capabilities
134}
135 74
136lspconfig.vimls.setup{ 75require('nvim-ts-autotag').setup()
137 capabilities = capabilities
138}
139
140lspconfig.jsonls.setup{
141 capabilities = capabilities
142}
143
144lspconfig.gopls.setup{
145 capabilities = capabilities
146}
147
148local project_library_path = "/home/t/.local/lib/node_modules"
149local ng_cmd = {"ngserver", "--stdio", "--tsProbeLocations", project_library_path , "--ngProbeLocations", project_library_path}
150
151lspconfig.angularls.setup{
152 capabilities = capabilities,
153 cmd = ng_cmd,
154 on_new_config = function(new_config,new_root_dir)
155 new_config.cmd = ng_cmd
156 end,
157}
158
159lspconfig.markdown_oxide.setup{
160 capabilities = capabilities,
161 on_attach = on_attach,
162 cmd = {
163 'markdown-oxide'
164 }
165}
166 76
167require('gitsigns').setup() 77require('gitsigns').setup()
168 78
169require("luasnip.loaders.from_vscode").lazy_load()
170
171local cmp = require('cmp')
172
173cmp.setup{
174 snippet = {
175 expand = function(args)
176 require('luasnip').lsp_expand(args.body)
177 end,
178 },
179 window = {
180 completion = cmp.config.window.bordered(),
181 documentation = cmp.config.window.bordered(),
182 },
183 mapping = cmp.mapping.preset.insert{
184 ['<C-b>'] = cmp.mapping.scroll_docs(-4),
185 ['<C-f>'] = cmp.mapping.scroll_docs(4),
186 ['<C-Space>'] = cmp.mapping.complete(),
187 ['<C-e>'] = cmp.mapping.abort(),
188 ['<CR>'] = cmp.mapping.confirm({ select = true }),
189 },
190 sources = cmp.config.sources{
191 {
192 name = 'nvim_lsp',
193 option = {
194 markdown_oxide = {
195 keyword_pattern = [[\(\k\| \|\/\|#\)\+]]
196 }
197 }
198 },
199 {
200 name = 'luasnip'
201 },
202 },
203 {
204 {
205 name = 'buffer'
206 },
207 }
208}
209
210local cmp_autopairs = require('nvim-autopairs.completion.cmp')
211cmp.event:on(
212 'confirm_done',
213 cmp_autopairs.on_confirm_done()
214)
215
216-- default configuration
217require('illuminate').configure({ 79require('illuminate').configure({
218 -- providers: provider used to get references in the buffer, ordered by priority 80 -- providers: provider used to get references in the buffer, ordered by priority
219 providers = { 81 providers = {
@@ -260,7 +122,7 @@ require('illuminate').configure({
260 -- If nil, vim-illuminate will be disabled for large files. 122 -- If nil, vim-illuminate will be disabled for large files.
261 large_file_overrides = nil, 123 large_file_overrides = nil,
262 -- min_count_to_highlight: minimum number of matches required to perform highlighting 124 -- min_count_to_highlight: minimum number of matches required to perform highlighting
263 min_count_to_highlight = 1, 125 min_count_to_highlight = 2,
264 -- should_enable: a callback that overrides all other settings to 126 -- should_enable: a callback that overrides all other settings to
265 -- enable/disable illumination. This will be called a lot so don't do 127 -- enable/disable illumination. This will be called a lot so don't do
266 -- anything expensive in it. 128 -- anything expensive in it.
@@ -270,18 +132,20 @@ require('illuminate').configure({
270}) 132})
271 133
272-- change the highlight style 134-- change the highlight style
273vim.api.nvim_set_hl(0, "IlluminatedWordText", { link = "CursorLine" }) 135
274vim.api.nvim_set_hl(0, "IlluminatedWordRead", { link = "CursorLine" }) 136vim.api.nvim_set_hl(0, "IlluminatedWordText", { link = "MatchParen" })
275vim.api.nvim_set_hl(0, "IlluminatedWordWrite", { link = "CursorLine" }) 137vim.api.nvim_set_hl(0, "IlluminatedWordRead", { link = "MatchParen" })
138vim.api.nvim_set_hl(0, "IlluminatedWordWrite", { link = "MatchParen" })
276 139
277--- auto update the highlight style on colorscheme change 140--- auto update the highlight style on colorscheme change
278vim.api.nvim_create_autocmd({ "ColorScheme" }, { 141vim.api.nvim_create_autocmd({ "ColorScheme" }, {
279 pattern = { "*" }, 142 pattern = { "*" },
280 callback = function(ev) 143 callback = function(ev)
281 vim.api.nvim_set_hl(0, "IlluminatedWordText", { link = "CursorLine" }) 144 vim.api.nvim_set_hl(0, "IlluminatedWordText", { link = "MatchParen" })
282 vim.api.nvim_set_hl(0, "IlluminatedWordRead", { link = "CursorLine" }) 145 vim.api.nvim_set_hl(0, "IlluminatedWordRead", { link = "MatchParen" })
283 vim.api.nvim_set_hl(0, "IlluminatedWordWrite", { link = "CursorLine" }) 146 vim.api.nvim_set_hl(0, "IlluminatedWordWrite", { link = "MatchParen" })
284 end 147 end
285}) 148})
149
286EOF 150EOF
287 151
diff --git a/nvim/settings.vim b/nvim/settings.vim
index 75fc258..604e5ca 100644
--- a/nvim/settings.vim
+++ b/nvim/settings.vim
@@ -52,7 +52,7 @@ set foldlevel=1000
52set foldcolumn=0 52set foldcolumn=0
53 53
54" Autovervollständigung 54" Autovervollständigung
55set completeopt=longest,menuone 55set completeopt=longest,menuone,noselect,popup
56 56
57" externe Programme 57" externe Programme
58set makeprg=gmake 58set makeprg=gmake
@@ -77,4 +77,3 @@ set undoreload=10000
77syntax enable 77syntax enable
78filetype plugin indent on 78filetype plugin indent on
79 79
80
diff --git a/nvim/statusline.vim b/nvim/statusline.vim
index 2928a5b..069e632 100644
--- a/nvim/statusline.vim
+++ b/nvim/statusline.vim
@@ -22,15 +22,6 @@ let g:currentmode={
22 22
23set laststatus=2 23set laststatus=2
24set statusline= 24set statusline=
25set statusline+=%#NormalColor#%{(g:currentmode[mode()]=='n')?'\ \ normal\ ':''}
26set statusline+=%#InsertColor#%{(g:currentmode[mode()]=='i')?'\ \ insert\ ':''}
27set statusline+=%#ReplaceColor#%{(g:currentmode[mode()]=='r')?'\ \ replace\ ':''}
28set statusline+=%#ReplaceColor#%{(g:currentmode[mode()]=='rv')?'\ \ v-replace\ ':''}
29set statusline+=%#VisualColor#%{(g:currentmode[mode()]=='v')?'\ \ visual\ ':''}
30set statusline+=%#VisualColor#%{(g:currentmode[mode()]=='vl')?'\ \ v-line\ ':''}
31set statusline+=%#VisualColor#%{(g:currentmode[mode()]=='vb')?'\ \ v-block\ ':''}
32set statusline+=%#NormalColor#%{(g:currentmode[mode()]=='c')?'\ \ command\ ':''}
33set statusline+=%#NormalColor#%{(g:currentmode[mode()]=='f')?'\ \ finder\ ':''}
34set statusline+=%#PmenuSel# 25set statusline+=%#PmenuSel#
35set statusline+=%{StatuslineGit()} 26set statusline+=%{StatuslineGit()}
36set statusline+=%#Statusline# 27set statusline+=%#Statusline#