Initial import

This commit is contained in:
Jan Hamal Dvořák 2024-05-23 08:33:22 +02:00
commit 0b69607589
36 changed files with 2472 additions and 0 deletions

21
.gitmodules vendored Normal file
View file

@ -0,0 +1,21 @@
[submodule "bundle/fidget.nvim"]
path = bundle/fidget.nvim
url = https://github.com/j-hui/fidget.nvim.git
[submodule "bundle/fzf-lua"]
path = bundle/fzf-lua
url = https://github.com/ibhagwan/fzf-lua.git
[submodule "bundle/haskell-vim"]
path = bundle/haskell-vim
url = https://github.com/neovimhaskell/haskell-vim.git
[submodule "bundle/html5.vim"]
path = bundle/html5.vim
url = https://github.com/othree/html5.vim.git
[submodule "bundle/nvim-treesitter"]
path = bundle/nvim-treesitter
url = https://github.com/nvim-treesitter/nvim-treesitter.git
[submodule "bundle/nvim-web-devicons"]
path = bundle/nvim-web-devicons
url = https://github.com/nvim-tree/nvim-web-devicons.git
[submodule "bundle/vim-table-mode"]
path = bundle/vim-table-mode
url = https://github.com/dhruvasagar/vim-table-mode.git

1
after/syntax/c.vim Normal file
View file

@ -0,0 +1 @@
syn keyword cOperator assert

347
autoload/pathogen.vim Normal file
View file

@ -0,0 +1,347 @@
" pathogen.vim - path option manipulation
" Maintainer: Tim Pope <http://tpo.pe/>
" Version: 2.3
" Install in ~/.vim/autoload (or ~\vimfiles\autoload).
"
" For management of individually installed plugins in ~/.vim/bundle (or
" ~\vimfiles\bundle), adding `execute pathogen#infect()` to the top of your
" .vimrc is the only other setup necessary.
"
" The API is documented inline below.
if exists("g:loaded_pathogen") || &cp
finish
endif
let g:loaded_pathogen = 1
" Point of entry for basic default usage. Give a relative path to invoke
" pathogen#interpose() (defaults to "bundle/{}"), or an absolute path to invoke
" pathogen#surround(). Curly braces are expanded with pathogen#expand():
" "bundle/{}" finds all subdirectories inside "bundle" inside all directories
" in the runtime path.
function! pathogen#infect(...) abort
for path in a:0 ? filter(reverse(copy(a:000)), 'type(v:val) == type("")') : ['bundle/{}']
if path =~# '^\%({\=[$~\\/]\|{\=\w:[\\/]\).*[{}*]'
call pathogen#surround(path)
elseif path =~# '^\%([$~\\/]\|\w:[\\/]\)'
call s:warn('Change pathogen#infect('.string(path).') to pathogen#infect('.string(path.'/{}').')')
call pathogen#surround(path . '/{}')
elseif path =~# '[{}*]'
call pathogen#interpose(path)
else
call s:warn('Change pathogen#infect('.string(path).') to pathogen#infect('.string(path.'/{}').')')
call pathogen#interpose(path . '/{}')
endif
endfor
call pathogen#cycle_filetype()
if pathogen#is_disabled($MYVIMRC)
return 'finish'
endif
return ''
endfunction
" Split a path into a list.
function! pathogen#split(path) abort
if type(a:path) == type([]) | return a:path | endif
if empty(a:path) | return [] | endif
let split = split(a:path,'\\\@<!\%(\\\\\)*\zs,')
return map(split,'substitute(v:val,''\\\([\\,]\)'',''\1'',"g")')
endfunction
" Convert a list to a path.
function! pathogen#join(...) abort
if type(a:1) == type(1) && a:1
let i = 1
let space = ' '
else
let i = 0
let space = ''
endif
let path = ""
while i < a:0
if type(a:000[i]) == type([])
let list = a:000[i]
let j = 0
while j < len(list)
let escaped = substitute(list[j],'[,'.space.']\|\\[\,'.space.']\@=','\\&','g')
let path .= ',' . escaped
let j += 1
endwhile
else
let path .= "," . a:000[i]
endif
let i += 1
endwhile
return substitute(path,'^,','','')
endfunction
" Convert a list to a path with escaped spaces for 'path', 'tag', etc.
function! pathogen#legacyjoin(...) abort
return call('pathogen#join',[1] + a:000)
endfunction
" Turn filetype detection off and back on again if it was already enabled.
function! pathogen#cycle_filetype() abort
if exists('g:did_load_filetypes')
filetype off
filetype on
endif
endfunction
" Check if a bundle is disabled. A bundle is considered disabled if its
" basename or full name is included in the list g:pathogen_disabled.
function! pathogen#is_disabled(path) abort
if a:path =~# '\~$'
return 1
endif
let sep = pathogen#slash()
let blacklist = map(
\ get(g:, 'pathogen_blacklist', get(g:, 'pathogen_disabled', [])) +
\ pathogen#split($VIMBLACKLIST),
\ 'substitute(v:val, "[\\/]$", "", "")')
return index(blacklist, fnamemodify(a:path, ':t')) != -1 || index(blacklist, a:path) != -1
endfunction "}}}1
" Prepend the given directory to the runtime path and append its corresponding
" after directory. Curly braces are expanded with pathogen#expand().
function! pathogen#surround(path) abort
let sep = pathogen#slash()
let rtp = pathogen#split(&rtp)
let path = fnamemodify(a:path, ':p:?[\\/]\=$??')
let before = filter(pathogen#expand(path), '!pathogen#is_disabled(v:val)')
let after = filter(reverse(pathogen#expand(path.sep.'after')), '!pathogen#is_disabled(v:val[0:-7])')
call filter(rtp, 'index(before + after, v:val) == -1')
let &rtp = pathogen#join(before, rtp, after)
return &rtp
endfunction
" For each directory in the runtime path, add a second entry with the given
" argument appended. Curly braces are expanded with pathogen#expand().
function! pathogen#interpose(name) abort
let sep = pathogen#slash()
let name = a:name
if has_key(s:done_bundles, name)
return ""
endif
let s:done_bundles[name] = 1
let list = []
for dir in pathogen#split(&rtp)
if dir =~# '\<after$'
let list += reverse(filter(pathogen#expand(dir[0:-6].name.sep.'after'), '!pathogen#is_disabled(v:val[0:-7])')) + [dir]
else
let list += [dir] + filter(pathogen#expand(dir.sep.name), '!pathogen#is_disabled(v:val)')
endif
endfor
let &rtp = pathogen#join(pathogen#uniq(list))
return 1
endfunction
let s:done_bundles = {}
" Invoke :helptags on all non-$VIM doc directories in runtimepath.
function! pathogen#helptags() abort
let sep = pathogen#slash()
for glob in pathogen#split(&rtp)
for dir in map(split(glob(glob), "\n"), 'v:val.sep."/doc/".sep')
if (dir)[0 : strlen($VIMRUNTIME)] !=# $VIMRUNTIME.sep && filewritable(dir) == 2 && !empty(split(glob(dir.'*.txt'))) && (!filereadable(dir.'tags') || filewritable(dir.'tags'))
silent! execute 'helptags' pathogen#fnameescape(dir)
endif
endfor
endfor
endfunction
command! -bar Helptags :call pathogen#helptags()
" Execute the given command. This is basically a backdoor for --remote-expr.
function! pathogen#execute(...) abort
for command in a:000
execute command
endfor
return ''
endfunction
" Section: Unofficial
function! pathogen#is_absolute(path) abort
return a:path =~# (has('win32') ? '^\%([\\/]\|\w:\)[\\/]\|^[~$]' : '^[/~$]')
endfunction
" Given a string, returns all possible permutations of comma delimited braced
" alternatives of that string. pathogen#expand('/{a,b}/{c,d}') yields
" ['/a/c', '/a/d', '/b/c', '/b/d']. Empty braces are treated as a wildcard
" and globbed. Actual globs are preserved.
function! pathogen#expand(pattern) abort
if a:pattern =~# '{[^{}]\+}'
let [pre, pat, post] = split(substitute(a:pattern, '\(.\{-\}\){\([^{}]\+\)}\(.*\)', "\\1\001\\2\001\\3", ''), "\001", 1)
let found = map(split(pat, ',', 1), 'pre.v:val.post')
let results = []
for pattern in found
call extend(results, pathogen#expand(pattern))
endfor
return results
elseif a:pattern =~# '{}'
let pat = matchstr(a:pattern, '^.*{}[^*]*\%($\|[\\/]\)')
let post = a:pattern[strlen(pat) : -1]
return map(split(glob(substitute(pat, '{}', '*', 'g')), "\n"), 'v:val.post')
else
return [a:pattern]
endif
endfunction
" \ on Windows unless shellslash is set, / everywhere else.
function! pathogen#slash() abort
return !exists("+shellslash") || &shellslash ? '/' : '\'
endfunction
function! pathogen#separator() abort
return pathogen#slash()
endfunction
" Convenience wrapper around glob() which returns a list.
function! pathogen#glob(pattern) abort
let files = split(glob(a:pattern),"\n")
return map(files,'substitute(v:val,"[".pathogen#slash()."/]$","","")')
endfunction "}}}1
" Like pathogen#glob(), only limit the results to directories.
function! pathogen#glob_directories(pattern) abort
return filter(pathogen#glob(a:pattern),'isdirectory(v:val)')
endfunction "}}}1
" Remove duplicates from a list.
function! pathogen#uniq(list) abort
let i = 0
let seen = {}
while i < len(a:list)
if (a:list[i] ==# '' && exists('empty')) || has_key(seen,a:list[i])
call remove(a:list,i)
elseif a:list[i] ==# ''
let i += 1
let empty = 1
else
let seen[a:list[i]] = 1
let i += 1
endif
endwhile
return a:list
endfunction
" Backport of fnameescape().
function! pathogen#fnameescape(string) abort
if exists('*fnameescape')
return fnameescape(a:string)
elseif a:string ==# '-'
return '\-'
else
return substitute(escape(a:string," \t\n*?[{`$\\%#'\"|!<"),'^[+>]','\\&','')
endif
endfunction
" Like findfile(), but hardcoded to use the runtimepath.
function! pathogen#runtime_findfile(file,count) abort "{{{1
let rtp = pathogen#join(1,pathogen#split(&rtp))
let file = findfile(a:file,rtp,a:count)
if file ==# ''
return ''
else
return fnamemodify(file,':p')
endif
endfunction
" Section: Deprecated
function! s:warn(msg) abort
echohl WarningMsg
echomsg a:msg
echohl NONE
endfunction
" Prepend all subdirectories of path to the rtp, and append all 'after'
" directories in those subdirectories. Deprecated.
function! pathogen#runtime_prepend_subdirectories(path) abort
call s:warn('Change pathogen#runtime_prepend_subdirectories('.string(a:path).') to pathogen#infect('.string(a:path.'/{}').')')
return pathogen#surround(a:path . pathogen#slash() . '{}')
endfunction
function! pathogen#incubate(...) abort
let name = a:0 ? a:1 : 'bundle/{}'
call s:warn('Change pathogen#incubate('.(a:0 ? string(a:1) : '').') to pathogen#infect('.string(name).')')
return pathogen#interpose(name)
endfunction
" Deprecated alias for pathogen#interpose().
function! pathogen#runtime_append_all_bundles(...) abort
if a:0
call s:warn('Change pathogen#runtime_append_all_bundles('.string(a:1).') to pathogen#infect('.string(a:1.'/{}').')')
else
call s:warn('Change pathogen#runtime_append_all_bundles() to pathogen#infect()')
endif
return pathogen#interpose(a:0 ? a:1 . '/{}' : 'bundle/{}')
endfunction
if exists(':Vedit')
finish
endif
let s:vopen_warning = 0
function! s:find(count,cmd,file,lcd)
let rtp = pathogen#join(1,pathogen#split(&runtimepath))
let file = pathogen#runtime_findfile(a:file,a:count)
if file ==# ''
return "echoerr 'E345: Can''t find file \"".a:file."\" in runtimepath'"
endif
if !s:vopen_warning
let s:vopen_warning = 1
let warning = '|echohl WarningMsg|echo "Install scriptease.vim to continue using :V'.a:cmd.'"|echohl NONE'
else
let warning = ''
endif
if a:lcd
let path = file[0:-strlen(a:file)-2]
execute 'lcd `=path`'
return a:cmd.' '.pathogen#fnameescape(a:file) . warning
else
return a:cmd.' '.pathogen#fnameescape(file) . warning
endif
endfunction
function! s:Findcomplete(A,L,P)
let sep = pathogen#slash()
let cheats = {
\'a': 'autoload',
\'d': 'doc',
\'f': 'ftplugin',
\'i': 'indent',
\'p': 'plugin',
\'s': 'syntax'}
if a:A =~# '^\w[\\/]' && has_key(cheats,a:A[0])
let request = cheats[a:A[0]].a:A[1:-1]
else
let request = a:A
endif
let pattern = substitute(request,'/\|\'.sep,'*'.sep,'g').'*'
let found = {}
for path in pathogen#split(&runtimepath)
let path = expand(path, ':p')
let matches = split(glob(path.sep.pattern),"\n")
call map(matches,'isdirectory(v:val) ? v:val.sep : v:val')
call map(matches,'expand(v:val, ":p")[strlen(path)+1:-1]')
for match in matches
let found[match] = 1
endfor
endfor
return sort(keys(found))
endfunction
command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Ve :execute s:find(<count>,'edit<bang>',<q-args>,0)
command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vedit :execute s:find(<count>,'edit<bang>',<q-args>,0)
command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vopen :execute s:find(<count>,'edit<bang>',<q-args>,1)
command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vsplit :execute s:find(<count>,'split',<q-args>,<bang>1)
command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vvsplit :execute s:find(<count>,'vsplit',<q-args>,<bang>1)
command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vtabedit :execute s:find(<count>,'tabedit',<q-args>,<bang>1)
command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vpedit :execute s:find(<count>,'pedit',<q-args>,<bang>1)
command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vread :execute s:find(<count>,'read',<q-args>,<bang>1)
" vim:set et sw=2:

1
bundle/fidget.nvim Submodule

@ -0,0 +1 @@
Subproject commit ef99df04a1c53a453602421bc0f756997edc8289

1
bundle/fzf-lua Submodule

@ -0,0 +1 @@
Subproject commit b442569ab827f72e344236c598b02cb9dc754e9f

1
bundle/haskell-vim Submodule

@ -0,0 +1 @@
Subproject commit f35d02204b4813d1dbe8b0e98cc39701a4b8e15e

1
bundle/html5.vim Submodule

@ -0,0 +1 @@
Subproject commit 485f2cd62162c81e56d8604b4c630f0b5ef69d1f

@ -0,0 +1 @@
Subproject commit 30de5e7e9486fb1b1b8c2a1e71052b13f94f1cb0

@ -0,0 +1 @@
Subproject commit e37bb1feee9e7320c76050a55443fa843b4b6f83

1
bundle/vim-table-mode Submodule

@ -0,0 +1 @@
Subproject commit e4365bde024f73e205eefa2fb78e3029ddb92ea9

95
init.vim Normal file
View file

@ -0,0 +1,95 @@
source /etc/vimrc
execute pathogen#infect()
autocmd BufReadPost *
\ if line("'\"") > 0 && line ("'\"") <= line("$") |
\ exe "normal! g'\"" |
\ endif
set modeline
set nowrap
set sidescroll=1
set scrolloff=3
set nobackup
set mouse=
set completeopt-=preview
set nofoldenable
set spellcapcheck=0
colorscheme vim
set smartcase
"set smarttab
set nohlsearch
highlight ExtraWhitespace ctermbg=darkgreen guibg=darkgreen
match ExtraWhitespace /\s\+$\| \+\ze\t/
au FileType sql setlocal ts=2 sw=2 et
au FileType python setlocal ts=4 sw=4 et
au FileType typescript setlocal ts=2 sw=2 et
au FileType lua setlocal ts=2 sw=2 et
au FileType racket setlocal sw=2 ts=2 et
au FileType yaml setlocal sw=2 ts=2 et
au FileType markdown setlocal sw=2 ts=2 et
au FileType pandoc setlocal sw=2 ts=2 et
au FileType asciidoc setlocal sw=2 ts=2 et
au FileType llvm setlocal sw=2 ts=2 et
au FileType xml setlocal sw=2 ts=2 et
au FileType html setlocal sw=2 ts=2 et
au FileType htmldjango setlocal sw=2 ts=2 et
au FileType cabal setlocal sw=2 ts=2 et
au FileType javascript setlocal sw=2 ts=2 et
au FileType rst setlocal sw=3 ts=3 et
au FileType riot setlocal sw=2 ts=2 et
au FileType elm setlocal sw=4 ts=4 et
au FileType asciidoctor setlocal wrap lbr iskeyword+=-
au FileType cmake setlocal sw=2 ts=2 et
au FileType scss setlocal sw=2 ts=2 et
au BufRead,BufNewFile */templates/*.html set filetype=htmldjango
autocmd BufNewFile *.h 0r ~/.vim/template/h
autocmd BufNewFile *.re2c 0r ~/.vim/template/re2c
autocmd BufNewFile *.hy 0r ~/.vim/template/hy
autocmd BufNewFile *.rkt 0r ~/.vim/template/racket
autocmd BufNewFile *.scrbl 0r ~/.vim/template/scrbl
autocmd BufNewFile *.ss 0r ~/.vim/template/scheme
autocmd BufNewFile *.html 0r ~/.vim/template/html5
autocmd BufNewFile *.xhtml 0r ~/.vim/template/xhtml
autocmd BufNewFile *.mk 0r ~/.vim/template/make
autocmd BufNewFile *.hs 0r ~/.vim/template/hs
autocmd BufNewFile *.adoc 0r ~/.vim/template/adoc
autocmd BufNewFile *.md 0r ~/.vim/template/md
autocmd BufNewFile Makefile 0r ~/.vim/template/make
autocmd BufNewFile *.wiki 0r !~/.config/nvim/bin/vimwiki-new-entry.py '%'
autocmd BufNewFile,BufRead *.pio setfiletype pioasm
highlight Pmenu ctermbg=235 guibg=black
highlight Pmenu ctermfg=white guifg=white
highlight PmenuSel ctermbg=235 guibg=black
highlight PmenuSel ctermfg=yellow guifg=yellow
" For Pandoc
let g:pandoc#spell#enabled=0
let g:pandoc#modules#disabled=["bibliographies"]
let g:jsx_ext_required = 0
" How many files / lines to remember.
set viminfo='20,<1000,s100
if has('nvim')
lua require("init")
lua require("config.tab")
lua require("config.black")
lua require("config.isort")
lua require("config.prettier")
lua require("config.lsp")
lua require("config.c")
endif
" EOF

4
lua/config/black.lua Normal file
View file

@ -0,0 +1,4 @@
vim.api.nvim_create_autocmd( { "BufWritePost" }, {
pattern = { "*.py", "*.pyi" },
command = [[ :silent! !/usr/bin/black % ]],
})

4
lua/config/c.lua Normal file
View file

@ -0,0 +1,4 @@
vim.api.nvim_create_autocmd( { "BufWritePost" }, {
pattern = { "*.c", "*.h" },
command = [[ :silent! !/usr/bin/clang-format -i % ]],
})

4
lua/config/isort.lua Normal file
View file

@ -0,0 +1,4 @@
vim.api.nvim_create_autocmd( { "BufWritePost" }, {
pattern = { "*.py", "*.pyi" },
command = [[ :silent! !/usr/bin/isort -q % ]],
})

28
lua/config/lsp/clangd.lua Normal file
View file

@ -0,0 +1,28 @@
local bin_name = "clangd"
local cmd = {
bin_name,
"--background-index",
"--suggest-missing-includes",
"--enable-config"
}
local config = vim.fs.find(".clangd", {
upward = true,
stop = vim.loop.os_homedir(),
path = vim.fs.dirname(vim.api.nvim_buf_get_name(0)),
})
if next(config) then
vim.api.nvim_create_autocmd("FileType", {
pattern = "c,cpp",
callback = function()
vim.lsp.start({
name = "clangd",
cmd = cmd,
root_dir = config[1],
settings = {
},
})
end,
})
end

158
lua/config/lsp/init.lua Normal file
View file

@ -0,0 +1,158 @@
if vim.fn.has('nvim-0.5.1') == 1 then
require('vim.lsp.log').set_format_func(vim.inspect)
end
vim.lsp.set_log_level("off")
require("config.lsp.pyright")
-- require("config.lsp.pylsp")
-- require("config.lsp.typescript")
require("config.lsp.clangd")
require("config.lsp.vls")
local api = vim.api
local keymap = vim.keymap.set
local function keymappings(_, bufnr)
local opts = { noremap = true, silent = true }
keymap("n", "K", vim.lsp.buf.hover, { buffer = bufnr })
keymap("n", "[d", "<cmd>lua vim.diagnostic.goto_prev()<CR>", opts)
keymap("n", "]d", "<cmd>lua vim.diagnostic.goto_next()<CR>", opts)
keymap("n", "[e", "<cmd>lua vim.diagnostic.goto_prev({severity = vim.diagnostic.severity.ERROR})<CR>", opts)
keymap("n", "]e", "<cmd>lua vim.diagnostic.goto_next({severity = vim.diagnostic.severity.ERROR})<CR>", opts)
keymap("n", "gd", "<Cmd>lua vim.lsp.buf.definition()<CR>", opts)
keymap("n", "gD", "<Cmd>lua vim.lsp.buf.declaration()<CR>", opts)
keymap("n", "gh", "<cmd>lua vim.lsp.buf.signature_help()<CR>", opts)
keymap("n", "gI", "<cmd>lua vim.lsp.buf.implementation()<CR>", opts)
keymap("n", "gb", "<cmd>lua vim.lsp.buf.type_definition()<CR>", opts)
keymap("n", "gl", "<cmd>lua vim.diagnostic.reset()<CR>", opts)
-- api.nvim_set_keymap("i", "<Tab>", [[pumvisible() ? "\<C-n>" : "\<Tab>"]], { noremap = true, expr = true })
-- api.nvim_set_keymap("i", "<S-Tab>", [[pumvisible() ? "\<C-p>" : "\<S-Tab>"]], { noremap = true, expr = true })
end
local function highlighting(client, bufnr)
if client.server_capabilities.documentHighlightProvider then
local lsp_highlight_grp = api.nvim_create_augroup("LspDocumentHighlight", { clear = true })
api.nvim_create_autocmd("CursorHold", {
callback = function()
vim.schedule(vim.lsp.buf.document_highlight)
end,
group = lsp_highlight_grp,
buffer = bufnr,
})
api.nvim_create_autocmd("CursorMoved", {
callback = function()
vim.schedule(vim.lsp.buf.clear_references)
end,
group = lsp_highlight_grp,
buffer = bufnr,
})
end
end
local function lsp_handlers()
local diagnostics = {
Error = "E:",
Warning = "W:",
Hint = "",
Information = "I:",
Question = "Q:",
}
local signs = {
{ name = "DiagnosticSignError", text = diagnostics.Error },
{ name = "DiagnosticSignWarn", text = diagnostics.Warning },
{ name = "DiagnosticSignHint", text = diagnostics.Hint },
{ name = "DiagnosticSignInfo", text = diagnostics.Info },
}
for _, sign in ipairs(signs) do
vim.fn.sign_define(sign.name, { texthl = sign.name, text = sign.text, numhl = sign.name })
end
-- LSP handlers configuration
local config = {
float = {
focusable = true,
style = "minimal",
border = "rounded",
},
diagnostic = {
virtual_text = { severity = vim.diagnostic.severity.ERROR },
signs = {
active = signs,
},
underline = true,
update_in_insert = false,
severity_sort = true,
float = {
focusable = true,
style = "minimal",
border = "rounded",
source = "always",
header = "",
prefix = "",
},
},
}
vim.diagnostic.config(config.diagnostic)
vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, config.float)
vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, config.float)
end
local function formatting(client, bufnr)
if client.server_capabilities.documentFormattingProvider then
local function format()
local view = vim.fn.winsaveview()
vim.lsp.buf.format({
async = true,
filter = function(attached_client)
return attached_client.name ~= ""
end,
})
vim.fn.winrestview(view)
end
local lsp_format_grp = api.nvim_create_augroup("LspFormat", { clear = true })
api.nvim_create_autocmd("BufWritePre", {
callback = function()
vim.schedule(format)
end,
group = lsp_format_grp,
buffer = bufnr,
})
end
end
local function on_attach(client, bufnr)
if client.server_capabilities.completionProvider then
vim.bo[bufnr].omnifunc = "v:lua.vim.lsp.omnifunc"
vim.bo[bufnr].completefunc = "v:lua.vim.lsp.omnifunc"
end
if client.server_capabilities.definitionProvider then
vim.bo[bufnr].tagfunc = "v:lua.vim.lsp.tagfunc"
end
if client.server_capabilities.documentFormattingProvider then
vim.bo[bufnr].formatexpr = "v:lua.vim.lsp.formatexpr()"
end
keymappings(client, bufnr)
--highlighting(client, bufnr)
--formatting(client, bufnr)
end
lsp_handlers()
vim.api.nvim_create_autocmd("LspAttach", {
callback = function(args)
local bufnr = args.buf
local client = vim.lsp.get_client_by_id(args.data.client_id)
on_attach(client, bufnr)
end,
})

43
lua/config/lsp/pylsp.lua Normal file
View file

@ -0,0 +1,43 @@
local root_files = {
"pyproject.toml",
"setup.py",
"setup.cfg",
"requirements.txt",
"Pipfile",
"pyrightconfig.json",
".git",
}
local root_dir = vim.fs.dirname(vim.fs.find(root_files, { upward = true })[1])
vim.api.nvim_create_autocmd("FileType", {
pattern = "python",
callback = function()
vim.lsp.start({
name = "pylsp",
cmd = { "pylsp", "--log-config", "/tmp/logging.json", },
root_dir = root_dir,
settings = {
pylsp = {
plugins = {
pyflakes = {
enabled = false,
},
pycodestyle = {
enabled = false,
},
mccabe = {
enabled = false,
},
flake8 = {
enabled = true,
},
pylsp_mypy = {
enabled = true,
},
},
},
},
})
end,
})

View file

@ -0,0 +1,36 @@
local bin_name = "pyright-langserver"
local cmd = { bin_name, "--stdio", }
if vim.fn.has("win32") == 1 then
cmd = { "cmd.exe", "/C", bin_name, "--stdio" }
end
local root_files = {
"pyproject.toml",
"setup.py",
"setup.cfg",
"requirements.txt",
"Pipfile",
"pyrightconfig.json",
".git",
}
vim.api.nvim_create_autocmd("FileType", {
pattern = "python",
callback = function()
vim.lsp.start({
name = "pyright",
cmd = cmd,
root_dir = vim.fs.dirname(vim.fs.find(root_files, { upward = true })[1]),
settings = {
python = {
analysis = {
autoSearchPaths = true,
useLibraryCodeForTypes = true,
diagnosticMode = "workspace",
},
},
},
})
end,
})

View file

@ -0,0 +1,27 @@
local bin_name = "typescript-language-server"
local cmd = { bin_name, "--stdio" }
local root_files = {
"package.json",
".git",
}
vim.api.nvim_create_autocmd("FileType", {
pattern = "typescript,javascript,javascriptreact,typescriptreact",
callback = function()
vim.lsp.start({
name = "typescript-language-server",
cmd = cmd,
root_dir = vim.fs.dirname(vim.fs.find(root_files, { upward = true })[1]),
settings = {
init_options = {
completionDisableFilterText = true,
hostInfo = 'neovim',
preferences = {
includeCompletionsForModuleExports = false
},
},
},
})
end,
})

41
lua/config/lsp/vls.lua Normal file
View file

@ -0,0 +1,41 @@
local root_files = {
"package.json",
".git",
}
local root_dir = vim.fs.dirname(vim.fs.find(root_files, { upward = true })[1])
vim.api.nvim_create_autocmd("FileType", {
pattern = "typescript,javascript,javascriptreact,typescriptreact,vue",
callback = function()
-- vim.lsp.start({
-- name = "typescript-language-server",
-- cmd = { "typescript-language-server", "--stdio" },
-- root_dir = root_dir,
-- settings = {
-- init_options = {
-- completionDisableFilterText = true,
-- plugins = {
-- name = "@vue/typescript-plugin",
-- location = "/home/mordae/.config/yarn/global/node_modules/@vue/language-server",
-- languages = { "vue" }
-- },
-- },
-- },
-- })
vim.lsp.start({
name = "volar",
cmd = { "vue-language-server", "--stdio" },
root_dir = root_dir,
init_options = {
typescript = {
tsdk = "/home/mordae/.config/yarn/global/node_modules/typescript/lib",
},
vue = {
hybridMode = false,
},
},
})
end,
})

4
lua/config/prettier.lua Normal file
View file

@ -0,0 +1,4 @@
vim.api.nvim_create_autocmd( { "BufWritePost" }, {
pattern = { "*.vue", "*.js", "*.ts" },
command = [[ :silent! !/usr/bin/env prettier -w % ]],
})

14
lua/config/tab.lua Normal file
View file

@ -0,0 +1,14 @@
local function check_back_space()
local col = vim.fn.col('.') - 1
return col <= 0 or vim.fn.getline('.'):sub(col, col):match('%s')
end
function tab_complete()
if check_back_space() then
return vim.api.nvim_replace_termcodes('<Tab>', true, false, true)
end
return vim.api.nvim_replace_termcodes('<C-p>', true, false, true)
end
vim.api.nvim_set_keymap('i', '<Tab>', 'v:lua.tab_complete()', { expr = true, noremap = true })
vim.api.nvim_set_keymap('i', '<S-Tab>', '<C-n>', { noremap = true })

29
lua/init.lua Normal file
View file

@ -0,0 +1,29 @@
-- Work around https://github.com/neovim/neovim/issues/21856
vim.api.nvim_create_autocmd({ "VimLeave" }, {
callback = function()
vim.fn.jobstart('/bin/true', {detach=true})
end,
})
require("fidget").setup {
text = {
spinner = "dots",
},
}
require("fzf-lua").setup({})
vim.keymap.set('n', '<C-p>', '<cmd>lua require("fzf-lua").files()<CR>', { silent = true })
vim.keymap.set('n', '<C-g>', '<cmd>lua require("fzf-lua").git_files()<CR>', { silent = true })
vim.keymap.set('n', '<C-/>', '<cmd>lua require("fzf-lua").live_grep()<CR>', { silent = true })
vim.keymap.set('n', '<C-\\>', '<cmd>lua require("fzf-lua").buffers()<CR>', { silent = true })
require('nvim-treesitter.configs').setup {
highlight = {
enable = true,
additional_vim_regex_highlighting = false,
},
indent = {
enable = true,
}
}

1400
spell/cs.utf-8.add Normal file

File diff suppressed because it is too large Load diff

BIN
spell/cs.utf-8.add.spl Normal file

Binary file not shown.

BIN
spell/cs.utf-8.spl Normal file

Binary file not shown.

167
spell/en.utf-8.add Normal file
View file

@ -0,0 +1,167 @@
preemptible
CML
evt
performant
GigE
GbE
MPIO
iSCSI
RESTful
APIs
QEMU
QEMU's
DAS
vlan
CLI
JSON
Dvořák
wrt
NTK
Derpy
FFI
Epson
CBOR
mordae
eu
microservices
microservice
Yay
ZeroMQ
gameplay
Laserbeams
metadata
HEPA
ČSN
isopropyl
LH
un-CR
PAA
VZT
peroxyacetic
Beamlines
g
km/h
km/h
GPC
e-banking
Raiffeisenbank
eKonto
CZK
ČSOB
InternetBanking
TXT
TXT
Un-CR
PPs
Appearence
metrological
CueCore
Winans
ČTK
NewsSelect
RSS
λ
µm
SMS
API
ACLs
HVAC
Defectoscopy
Provokátor
WSGI
HKAN
OpenData
CKAN
Facebook
Anonymization
anonymize
Vigory
anonymization
workflow
Anonymized
TODO
anonymized
v
ditaa
Indoktrinátor
telescreen
telescreens
Viera
MP4
MOV
AVI
FLV
playlist
Playlists
playlists
slideshow
m3u
txt
Kaletusová
Měchurová
a.s.
EtOH
unCR
CRs
zig-zag
Podpis
lang
spelllang
ESI
CAdES
PAdES
XAdES
ASiC
ASN1
ASN.1
DER
OpenSC
SpIS
PEP8
jan.dvorak@singularita.net
heredocs
indoktrinator
PostgreSQL
postgresql
localhost
url
ffmpeg
ffprobe
backend
frontend
Singularita
CTO
PostgREST
PgNap
:toc:
MicroPython
PyKids
ESP32
MEMS
MA30
Áju
MPU6050
VR
MPU9250
Geoscape
Whac-A-Mole
GDPR
Tayloe
MCU
FPGA
RP2040
GPIO
GPIOs
Ω
datasheet
mV
UTP
nF
PySDR
RP2040's
Cortex-M0+
Arduino
Msps
DMA

BIN
spell/en.utf-8.add.spl Normal file

Binary file not shown.

BIN
spell/en.utf-8.spl Normal file

Binary file not shown.

BIN
spell/en.utf-8.sug Normal file

Binary file not shown.

BIN
spell/simple.utf-8.spl Normal file

Binary file not shown.

10
template/adoc Normal file
View file

@ -0,0 +1,10 @@
=
:numbered:
:icons: font
:lang: cs
:note-caption: Poznámka
:warning-caption: Pozor
:toc-title: Obsah
:toc: left
// vim:set spelllang=cs:

1
template/h Normal file
View file

@ -0,0 +1 @@
#pragma once

18
template/hs Normal file
View file

@ -0,0 +1,18 @@
-- |
-- Module :
-- Copyright : Jan Hamal Dvořák
-- License : MIT
--
-- Maintainer : mordae@anilinux.org
-- Stability : unstable
-- Portability : non-portable (ghc)
--
module X
(
)
where
-- vim:set ft=haskell sw=2 ts=2 et:

10
template/html5 Normal file
View file

@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="style.css" media="screen" />
<title></title>
</head>
<body>
</body>
</html>

3
template/make Normal file
View file

@ -0,0 +1,3 @@
#!/usr/bin/make -f
# EOF