diff options
25 files changed, 466 insertions, 909 deletions
diff --git a/vim/ftplugin/c.vim b/config/nvim/ftplugin/c.vim index 1d3780c..3769d80 100644 --- a/vim/ftplugin/c.vim +++ b/config/nvim/ftplugin/c.vim @@ -1,4 +1,4 @@ -let b:ale_linters = ['clangd', 'cppcheck', 'flawfinder'] +let b:ale_linters = ['cppcheck', 'flawfinder'] let b:ale_fixers = ['clang-format', 'remove_trailing_lines', 'trim_whitespace'] let g:ale_c_parse_compile_commands = 1 let g:ale_c_clangd_options = '--header-insertion=never' diff --git a/vim/ftplugin/cpp.vim b/config/nvim/ftplugin/cpp.vim index 89944ea..89944ea 100644 --- a/vim/ftplugin/cpp.vim +++ b/config/nvim/ftplugin/cpp.vim diff --git a/vim/ftplugin/json.vim b/config/nvim/ftplugin/json.vim index 829a37e..829a37e 100644 --- a/vim/ftplugin/json.vim +++ b/config/nvim/ftplugin/json.vim diff --git a/config/nvim/ftplugin/lua.vim b/config/nvim/ftplugin/lua.vim new file mode 100644 index 0000000..733962a --- /dev/null +++ b/config/nvim/ftplugin/lua.vim @@ -0,0 +1,2 @@ +let b:ale_linters = ['luacheck', 'selene', 'luac'] +let b:ale_fixers = ['stylua', 'remove_trailing_lines', 'trim_whitespace'] diff --git a/vim/ftplugin/nix.vim b/config/nvim/ftplugin/nix.vim index 3808c31..48be358 100644 --- a/vim/ftplugin/nix.vim +++ b/config/nvim/ftplugin/nix.vim @@ -1,4 +1,4 @@ -let b:ale_linters = ['nix', 'rnix_lsp', 'statix'] +let b:ale_linters = ['nix', 'statix'] let b:ale_fixers = ['alejandra', 'remove_trailing_lines', 'trim_whitespace'] nmap <F8> :ALENext<cr> diff --git a/vim/ftplugin/python.vim b/config/nvim/ftplugin/python.vim index 55e7692..94b035a 100644 --- a/vim/ftplugin/python.vim +++ b/config/nvim/ftplugin/python.vim @@ -1,2 +1,2 @@ -let b:ale_linters = ['pylsp', 'pylint', 'mypy', 'pydocstyle'] +let b:ale_linters = ['pylint', 'mypy', 'pydocstyle'] let b:ale_fixers = ['isort', 'black', 'remove_trailing_lines', 'trim_whitespace'] diff --git a/vim/ftplugin/sh.vim b/config/nvim/ftplugin/sh.vim index 8cc42e2..8cc42e2 100644 --- a/vim/ftplugin/sh.vim +++ b/config/nvim/ftplugin/sh.vim diff --git a/vim/ftplugin/tex.vim b/config/nvim/ftplugin/tex.vim index 5eb1926..5eb1926 100644 --- a/vim/ftplugin/tex.vim +++ b/config/nvim/ftplugin/tex.vim diff --git a/config/nvim/init.vim b/config/nvim/init.vim new file mode 100644 index 0000000..b538453 --- /dev/null +++ b/config/nvim/init.vim @@ -0,0 +1,131 @@ +augroup user_config + autocmd! + autocmd BufWritePost init.vim source <afile> +augroup end + +lua require('plugins') +augroup packer_user_config + autocmd! + autocmd BufWritePost plugins.lua source <afile> | PackerCompile +augroup end + + +set exrc +set secure +set title + +set hidden +set undofile +set undodir=~/.cache/nvim-undo// +set directory=$HOME/.cache/nvim// +set hlsearch +set wildmode=longest:full,full +set wildmenu +set modeline +set encoding=utf-8 + + +set backspace=indent,eol,start + +colorscheme nord +let g:lightline = { 'colorscheme': 'nord' } + +set number +set colorcolumn=80 +set textwidth=80 + + +" Tabs setting. In default we want 4 spaces tab, but allows also 8 spaced tabs +set noexpandtab +set tabstop=4 +set shiftwidth=4 +set softtabstop=4 +function TabToogle() + if &tabstop != 4 + set tabstop=4 + set shiftwidth=4 + set softtabstop=4 + echom 'Tab stop set to 4' + else + set tabstop=8 + set shiftwidth=8 + set softtabstop=8 + echom 'Tab stop set to 8' + endif + " Soft tab stop is here only for possibility of expandtab +endfunction +command TabToogle call TabToogle() + +" Translate word under cursor +nnoremap <leader>d :! sdcv -n <cword><cr> + +" netrw configuration +cabbrev E Explore +let g:netrw_banner=0 +let g:netrw_liststyle=1 +let g:netrw_list_hide='\(^\|\s\s\)\zs\.\S\+,' +function GitIgnore() + " Possibly find and include all lower .gitignore files? + let g:netrw_list_hide='\(^\|\s\s\)\zs\.\S\+,' . netrw_gitignore#Hide() +endfunction +command GitIgnore call GitIgnore() +" Some fast buffer switching and opening of new files +nnoremap <c-c><CR> :Explore<cr> +nnoremap <c-c>l :bnext<cr> +nnoremap <c-c>h :bprev<cr> + +" Setup gitgutter +set updatetime=100 +highlight GitGutterAdd ctermfg=2 +highlight GitGutterChange ctermfg=3 +highlight GitGutterDelete ctermfg=1 + +" Setup table-mode to markdown compliant +" Note: to start use "\ t m" +let g:table_mode_corner='|' + +" Open tagbar with <F9> +nmap <F9> :TagbarOpen fc<cr> + +" Spell checking +map <F10> :setlocal spell!<cr> +function LangToggle() + if &spelllang !=? 'en_us' + setlocal spelllang=en_us + echo 'spelllang=en_us' + else + setlocal spelllang=cs + echo 'spelllang=cs' + endif +endfunction +setlocal spelllang=en_us +map <F11> :call LangToggle()<cr> + +" NERDCommenter +let g:NERDCreateDefaultMappings = 1 + +" UltiSnips triggers +let g:UltiSnipsExpandTrigger='<c-h>' +let g:UltiSnipsJumpForwardTrigger='<c-j>' +let g:UltiSnipsJumpBackwardTrigger='<c-k>' + +" ALE +let g:ale_set_baloons = 1 +let g:ale_floating_preview = 1 +let g:ale_use_neovim_diagnostics_api = 1 +nmap <leader>f <Plug>(ale_fix) + +" Telescope +nnoremap <c-c><c-c> :Telescope buffers<cr> +nnoremap <expr> <c-p> ":lua require'telescope.builtin'.git_files{}<cr>".expand('%:h')."/" +nnoremap <c-s-p> :Telescope lsp_document_symbols<cr> +nmap <leader>] :Telescope lsp_definitions<cr> +nmap <leader><leader>] :Telescope lsp_type_definitions<cr> +nmap <leader>[ :Telescope lsp_implementations<cr> +nmap <leader><leader>[ :Telescope lsp_references<cr> + +" Copy line location +" TODO this should work but it doesn't for some reason +" nmap <leader><leader>c :let @+=expand("%:p") . ":" . line(".")<cr> +nmap <leader><leader>c :exec "!wl-copy '" . expand("%:p") . ":" . line(".") . "'"<cr><cr> + diff --git a/config/nvim/lua/mytelescope.lua b/config/nvim/lua/mytelescope.lua new file mode 100644 index 0000000..c4fe3a7 --- /dev/null +++ b/config/nvim/lua/mytelescope.lua @@ -0,0 +1,205 @@ +local layout = require("nui.layout") +local popup = require("nui.popup") + +local actions = require("telescope.actions") + +local tslayout = require("telescope.pickers.layout") + +return require("telescope").setup({ + defaults = { + mappings = { + i = { + ["<esc>"] = actions.close, + ["<c-j>"] = actions.move_selection_next, + ["<c-k>"] = actions.move_selection_previous, + ["<c-u>"] = false, + }, + }, + + create_layout = function(picker) + local border = { + results = { + top_left = "┌", + top = "─", + top_right = "┬", + right = "│", + bottom_right = "", + bottom = "", + bottom_left = "", + left = "│", + }, + results_patch = { + minimal = { + top_left = "┌", + top_right = "┐", + }, + horizontal = { + top_left = "┌", + top_right = "┬", + }, + vertical = { + top_left = "├", + top_right = "┤", + }, + }, + prompt = { + top_left = "├", + top = "─", + top_right = "┤", + right = "│", + bottom_right = "┘", + bottom = "─", + bottom_left = "└", + left = "│", + }, + prompt_patch = { + minimal = { + bottom_right = "┘", + }, + horizontal = { + bottom_right = "┴", + }, + vertical = { + bottom_right = "┘", + }, + }, + preview = { + top_left = "┌", + top = "─", + top_right = "┐", + right = "│", + bottom_right = "┘", + bottom = "─", + bottom_left = "└", + left = "│", + }, + preview_patch = { + minimal = {}, + horizontal = { + bottom = "─", + bottom_left = "", + bottom_right = "┘", + left = "", + top_left = "", + }, + vertical = { + bottom = "", + bottom_left = "", + bottom_right = "", + left = "│", + top_left = "┌", + }, + }, + } + + local results = popup({ + focusable = false, + border = { + style = border.results, + text = { + top = picker.results_title, + top_align = "center", + }, + }, + win_options = { + winhighlight = "Normal:Normal", + }, + }) + + local prompt = popup({ + enter = true, + border = { + style = border.prompt, + text = { + top = picker.prompt_title, + top_align = "center", + }, + }, + win_options = { + winhighlight = "Normal:Normal", + }, + }) + + local preview = popup({ + focusable = false, + border = { + style = border.preview, + text = { + top = picker.preview_title, + top_align = "center", + }, + }, + }) + + local box_by_kind = { + vertical = layout.Box({ + layout.Box(preview, { grow = 1 }), + layout.Box(results, { grow = 1 }), + layout.Box(prompt, { size = 3 }), + }, { dir = "col" }), + horizontal = layout.Box({ + layout.Box({ + layout.Box(results, { grow = 1 }), + layout.Box(prompt, { size = 3 }), + }, { dir = "col", size = "50%" }), + layout.Box(preview, { size = "50%" }), + }, { dir = "row" }), + minimal = layout.Box({ + layout.Box(results, { grow = 1 }), + layout.Box(prompt, { size = 3 }), + }, { dir = "col" }), + } + + local function get_box() + local height, width = vim.o.lines, vim.o.columns + local box_kind = "horizontal" + if width < 100 then + box_kind = "vertical" + if height < 40 then + box_kind = "minimal" + end + elseif width < 120 then + box_kind = "minimal" + end + return box_by_kind[box_kind], box_kind + end + + local function prepare_layout_parts(layout, box_type) + layout.results = tslayout.Window(results) + results.border:set_style(border.results_patch[box_type]) + + layout.prompt = tslayout.Window(prompt) + prompt.border:set_style(border.prompt_patch[box_type]) + + if box_type == "minimal" then + layout.preview = nil + else + layout.preview = tslayout.Window(preview) + preview.border:set_style(border.preview_patch[box_type]) + end + end + + local box, box_kind = get_box() + local layout = layout({ + relative = "editor", + position = "50%", + size = { + height = "60%", + width = "90%", + }, + }, box) + + layout.picker = picker + prepare_layout_parts(layout, box_kind) + + local layout_update = layout.update + function layout:update() + local box, box_kind = get_box() + prepare_layout_parts(layout, box_kind) + layout_update(self, box) + end + + return tslayout(layout) + end, + }, +}) diff --git a/config/nvim/lua/plugins.lua b/config/nvim/lua/plugins.lua new file mode 100644 index 0000000..b60f913 --- /dev/null +++ b/config/nvim/lua/plugins.lua @@ -0,0 +1,97 @@ +local install_path = vim.fn.stdpath("data") .. "/site/pack/packer/start/packer.nvim" +if vim.fn.empty(vim.fn.glob(install_path)) > 0 then + vim.fn.system({ "git", "clone", "--depth", "1", "https://github.com/wbthomason/packer.nvim", install_path }) + vim.cmd([[packadd packer.nvim]]) +end + +require("packer").startup(function(use) + use("wbthomason/packer.nvim") + -- Visual + use("shaunsingh/nord.nvim") + use("MunifTanjim/nui.nvim") + use({ "nvim-treesitter/nvim-treesitter", run = ":TSUpdate" }) + use("lukas-reineke/indent-blankline.nvim") + use("itchyny/lightline.vim") + -- Files navigation + use("nvim-lua/plenary.nvim") + use("nvim-telescope/telescope.nvim") + -- Git + use("tpope/vim-fugitive") + use("airblade/vim-gitgutter") + use({ + "harrisoncramer/gitlab.nvim", + requires = { + "MunifTanjim/nui.nvim", + "nvim-lua/plenary.nvim", + "sindrets/diffview.nvim", + "stevearc/dressing.nvim", -- Recommended but not required. Better UI for pickers. + "nvim-tree/nvim-web-devicons", -- Recommended but not required. Icons in discussion tree. + }, + run = function() + require("gitlab.server").build(true) + end, + }) + -- Programming + use("neovim/nvim-lspconfig") + use("p00f/clangd_extensions.nvim") + use("w0rp/ale") + use("maximbaz/lightline-ale") + use("SirVer/ultisnips") + use("honza/vim-snippets") + use("craigemery/vim-autotag") + use("scrooloose/nerdcommenter") + -- Movement, format and others + use("tpope/vim-surround") + use("tpope/vim-repeat") + use("dhruvasagar/vim-table-mode") + +-- Indent blanklike character specificaiton +local highlight = { "CursorColumn", "Whitespace" } +require("ibl").setup({ + indent = { highlight = highlight, char = "" }, + whitespace = { + highlight = highlight, + remove_blankline_trail = false, + }, + scope = { enabled = false }, +}) +-- Treesitter +require("nvim-treesitter.configs").setup({ + ensure_installed = { + "c", + "lua", + "kconfig", + "make", + "markdown", + "meson", + "ninja", + "ini", + "gitcommit", + "git_rebase", + "git_config", + "nix", + "python", + "toml", + "vim", + "vimdoc", + "yaml", + }, + highlight = { + enable = true, + additional_vim_regex_highlighting = false, + }, +}) + +-- LSP +local lspconfig = require("lspconfig") +lspconfig.clangd.setup({}) +lspconfig.rnix.setup({}) +lspconfig.pylsp.setup({}) +lspconfig.bashls.setup({}) + +-- Telescope +require('mytelescope') + +-- Gitlab +require("diffview").setup() +require("gitlab").setup() diff --git a/config/nvim/selene-vim.yml b/config/nvim/selene-vim.yml new file mode 100644 index 0000000..53daa57 --- /dev/null +++ b/config/nvim/selene-vim.yml @@ -0,0 +1,5 @@ +--- +base: lua51 +globals: + vim: + any: true diff --git a/config/nvim/selene.toml b/config/nvim/selene.toml new file mode 100644 index 0000000..39b4859 --- /dev/null +++ b/config/nvim/selene.toml @@ -0,0 +1,4 @@ +std = "selene-vim" + +[lints] +mixed_table = "allow" @@ -22,6 +22,8 @@ gpgSign = true [merge] tool = vimdiff +[mergetool "vimdiff"] + cmd = nvim -d $BASE $LOCAL $REMOTE $MERGED -c '$wincmd w' -c 'wincmd J' [alias] co = checkout ci = commit @@ -2,7 +2,10 @@ cd "$(dirname "$0")" || exit 1 -git submodule update --init --recursive || (echo "Submodule update failed!"; exit 5) +git submodule update --init --recursive || ( + echo "Submodule update failed!" + exit 5 +) # Source inst and diff function . ./utils/inst @@ -49,20 +52,15 @@ if ask "wayvnc" "Install wayland access"; then inst config/systemd/user/wayvnc1.service ~/.config/systemd/user/ fi -if ask "vim" "Install VIM scripts"; then - inst vimrc ~/.vimrc - inst vim/ ~/.vim - mkdir -p ~/.cache/vim # directory for *.swp files - mkdir -p ~/.cache/vim-undo # directory for undo files - # Vim plugin manager - [ -d ~/.vim/bundle/Vundle.vim ] || { - mkdir -p ~/.vim/bundle - git clone "https://github.com/VundleVim/Vundle.vim.git" ~/.vim/bundle/Vundle.vim - } - vim +PluginUpdate +qall +if ask "nvim" "Install NeoVIM scripts"; then + inst config/nvim/ ~/.config/nvim + mkdir -p ~/.cache/nvim # directory for *.swp files + mkdir -p ~/.cache/nvim-undo # directory for undo files + nvim --headless -c 'autocmd User PackerComplete quitall' -c 'PackerSync' # cs spelling - mkdir -p ~/.vim/spell - curl "http://ftp.vim.org/vim/runtime/spell/cs.utf-8.spl" > ~/.vim/spell/cs.utf-8.spl + mkdir -p ~/.local/share/nvim/site/spell + curl "http://ftp.vim.org/vim/runtime/spell/cs.utf-8.spl" \ + >~/.local/share/nvim/site/spell/cs.utf-8.spl fi if ask "dev" "Development tools configuration"; then @@ -74,7 +72,7 @@ if ask "dev" "Development tools configuration"; then inst config/mypy/ ~/.config/mypy inst local/bin/new-flake-dev ~/.local/bin/new-flake-dev inst shvcli.ini ~/.shvcli.ini - curl "https://github.com/cyrus-and/gdb-dashboard/raw/master/.gdbinit" > ~/.gdbinit + curl "https://github.com/cyrus-and/gdb-dashboard/raw/master/.gdbinit" >~/.gdbinit fi if ask "sync" "Install synchronization"; then @@ -122,8 +120,8 @@ if ask "desktop" "Install desktop"; then inst config/swaylock/ ~/.config/swaylock inst config/swayidle/ ~/.config/swayidle inst config/wofi/ ~/.config/wofi - [ -f "private/kanshi/$(hostname)" ] \ - && inst "private/kanshi/$(hostname)" ~/.config/kanshi/config + [ -f "private/kanshi/$(hostname)" ] && + inst "private/kanshi/$(hostname)" ~/.config/kanshi/config inst config/xdg-desktop-portal-wlr/ ~/.config/xdg-desktop-portal-wlr inst local/bin/wlr-select-screen ~/.local/bin/wlr-select-screen fi @@ -143,8 +141,8 @@ if ask "elektroline" "Install Elektroline scripts"; then fi if ask "wake" "Install wake-* scripts"; then - [ "$(hostname)" = "ridcully" ] || \ + [ "$(hostname)" = "ridcully" ] || inst local/bin/wake-ridcully ~/.local/bin/wake-ridcully - [ "$(hostname)" = "errol" ] || \ + [ "$(hostname)" = "errol" ] || inst local/bin/wake-errol ~/.local/bin/wake-errol fi diff --git a/vim/filetype.vim b/vim/filetype.vim deleted file mode 100644 index dd640b5..0000000 --- a/vim/filetype.vim +++ /dev/null @@ -1,2 +0,0 @@ -au BufNewFile,BufRead *.am setf automake -au BufNewFile,BufRead .clang-format setf yaml diff --git a/vim/ftdetect/c-co.vim b/vim/ftdetect/c-co.vim deleted file mode 100644 index b96a197..0000000 --- a/vim/ftdetect/c-co.vim +++ /dev/null @@ -1 +0,0 @@ -au BufRead,BufNewFile *.c.co set filetype=c-co diff --git a/vim/ftdetect/conffile.vim b/vim/ftdetect/conffile.vim deleted file mode 100644 index 00feb56..0000000 --- a/vim/ftdetect/conffile.vim +++ /dev/null @@ -1 +0,0 @@ -au BufRead,BufNewFile *[cC]onffile,*.cf set filetype=conffile diff --git a/vim/ftdetect/docker.vim b/vim/ftdetect/docker.vim deleted file mode 100644 index 4b4eaf5..0000000 --- a/vim/ftdetect/docker.vim +++ /dev/null @@ -1 +0,0 @@ -au BufRead,BufNewFile Dockerfile* set filetype=dockerfile diff --git a/vim/ftdetect/lua.vim b/vim/ftdetect/lua.vim deleted file mode 100644 index 63d54d4..0000000 --- a/vim/ftdetect/lua.vim +++ /dev/null @@ -1 +0,0 @@ -au BufRead,BufNewFile *.lua.m4 set filetype=lua diff --git a/vim/ftdetect/make-co.vim b/vim/ftdetect/make-co.vim deleted file mode 100644 index dbaf43d..0000000 --- a/vim/ftdetect/make-co.vim +++ /dev/null @@ -1 +0,0 @@ -au BufRead,BufNewFile *[mM]akefile.co,*.mk.co,*.mak.co,*.dsp.co set filetype=make-co diff --git a/vim/syntax/c-co.vim b/vim/syntax/c-co.vim deleted file mode 100644 index 0be5aa1..0000000 --- a/vim/syntax/c-co.vim +++ /dev/null @@ -1,475 +0,0 @@ -" Vim syntax file -" Language: C -" Maintainer: Bram Moolenaar <Bram@vim.org> -" Last Change: 2013 Jul 05 - -" Quit when a (custom) syntax file was already loaded -if exists("b:current_syntax") - finish -endif - -let s:cpo_save = &cpo -set cpo&vim - -let s:ft = matchstr(&ft, '^\([^.]\)\+') - -" A bunch of useful C keywords -syn keyword cStatement goto break return continue asm -syn keyword cLabel case default -syn keyword cConditional if else switch -syn keyword cRepeat while for do - -syn keyword cTodo contained TODO FIXME XXX - -" It's easy to accidentally add a space after a backslash that was intended -" for line continuation. Some compilers allow it, which makes it -" unpredictable and should be avoided. -syn match cBadContinuation contained "\\\s\+$" - -" cCommentGroup allows adding matches for special things in comments -syn cluster cCommentGroup contains=cTodo,cBadContinuation - -" String and Character constants -" Highlight special characters (those which have a backslash) differently -syn match cSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)" -if !exists("c_no_utf") - syn match cSpecial display contained "\\\(u\x\{4}\|U\x\{8}\)" -endif -if exists("c_no_cformat") - syn region cString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,@Spell extend - " cCppString: same as cString, but ends at end of line - if !exists("cpp_no_cpp11") " ISO C++11 - syn region cCppString start=+\(L\|u\|u8\|U\|R\|LR\|u8R\|uR\|UR\)\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormat,@Spell - else - syn region cCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormat,@Spell - endif - syn region cCppOut2 contained start="0" end="^\s*\(%:\|#\)\s*\(endif\>\|else\>\|elif\>\)" contains=cSpaceError,cCppSkip - syn region cCppSkip contained start="^\s*\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" contains=cSpaceError,cCppSkip -else - if !exists("c_no_c99") " ISO C99 - syn match cFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlLjzt]\|ll\|hh\)\=\([aAbdiuoxXDOUfFeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained - else - syn match cFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([bdiuoxXDOUfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained - endif - syn match cFormat display "%%" contained - syn region cString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat,@Spell extend - " cCppString: same as cString, but ends at end of line - syn region cCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormat,@Spell -endif - -syn match cCharacter "L\='[^\\]'" -syn match cCharacter "L'[^']*'" contains=cSpecial -if exists("c_gnu") - syn match cSpecialError "L\='\\[^'\"?\\abefnrtv]'" - syn match cSpecialCharacter "L\='\\['\"?\\abefnrtv]'" -else - syn match cSpecialError "L\='\\[^'\"?\\abfnrtv]'" - syn match cSpecialCharacter "L\='\\['\"?\\abfnrtv]'" -endif -syn match cSpecialCharacter display "L\='\\\o\{1,3}'" -syn match cSpecialCharacter display "'\\x\x\{1,2}'" -syn match cSpecialCharacter display "L'\\x\x\+'" - -if !exists("c_no_c11") " ISO C11 - if exists("c_no_cformat") - syn region cString start=+\%(U\|u8\=\)"+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,@Spell extend - else - syn region cString start=+\%(U\|u8\=\)"+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat,@Spell extend - endif - syn match cCharacter "[Uu]'[^\\]'" - syn match cCharacter "[Uu]'[^']*'" contains=cSpecial - if exists("c_gnu") - syn match cSpecialError "[Uu]'\\[^'\"?\\abefnrtv]'" - syn match cSpecialCharacter "[Uu]'\\['\"?\\abefnrtv]'" - else - syn match cSpecialError "[Uu]'\\[^'\"?\\abfnrtv]'" - syn match cSpecialCharacter "[Uu]'\\['\"?\\abfnrtv]'" - endif - syn match cSpecialCharacter display "[Uu]'\\\o\{1,3}'" - syn match cSpecialCharacter display "[Uu]'\\x\x\+'" -endif - -"when wanted, highlight trailing white space -if exists("c_space_errors") - if !exists("c_no_trail_space_error") - syn match cSpaceError display excludenl "\s\+$" - endif - if !exists("c_no_tab_space_error") - syn match cSpaceError display " \+\t"me=e-1 - endif -endif - -" This should be before cErrInParen to avoid problems with #define ({ xxx }) -if exists("c_curly_error") - syn match cCurlyError "}" - syn region cBlock start="{" end="}" contains=ALLBUT,cBadBlock,cCurlyError,@cParenGroup,cErrInParen,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell fold -else - syn region cBlock start="{" end="}" transparent fold -endif - -"catch errors caused by wrong parenthesis and brackets -" also accept <% for {, %> for }, <: for [ and :> for ] (C99) -" But avoid matching <::. -syn cluster cParenGroup contains=cParenError,cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserLabel,cBitField,cOctalZero,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom -if exists("c_no_curly_error") - if s:ft ==# 'cpp' && !exists("cpp_no_cpp11") - syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell - " cCppParen: same as cParen but ends at end-of-line; used in cDefine - syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell - syn match cParenError display ")" - syn match cErrInParen display contained "^^<%\|^%>" - else - syn region cParen transparent start='(' end=')' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cCppParen,cCppString,@Spell - " cCppParen: same as cParen but ends at end-of-line; used in cDefine - syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell - syn match cParenError display ")" - syn match cErrInParen display contained "^[{}]\|^<%\|^%>" - endif -elseif exists("c_no_bracket_error") - if s:ft ==# 'cpp' && !exists("cpp_no_cpp11") - syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell - " cCppParen: same as cParen but ends at end-of-line; used in cDefine - syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell - syn match cParenError display ")" - syn match cErrInParen display contained "<%\|%>" - else - syn region cParen transparent start='(' end=')' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cCppParen,cCppString,@Spell - " cCppParen: same as cParen but ends at end-of-line; used in cDefine - syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell - syn match cParenError display ")" - syn match cErrInParen display contained "[{}]\|<%\|%>" - endif -else - if s:ft ==# 'cpp' && !exists("cpp_no_cpp11") - syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell - " cCppParen: same as cParen but ends at end-of-line; used in cDefine - syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cErrInBracket,cParen,cBracket,cString,@Spell - syn match cParenError display "[\])]" - syn match cErrInParen display contained "<%\|%>" - syn region cBracket transparent start='\[\|<::\@!' end=']\|:>' contains=ALLBUT,@cParenGroup,cErrInParen,cCppParen,cCppBracket,cCppString,@Spell - else - syn region cParen transparent start='(' end=')' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell - " cCppParen: same as cParen but ends at end-of-line; used in cDefine - syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cErrInBracket,cParen,cBracket,cString,@Spell - syn match cParenError display "[\])]" - syn match cErrInParen display contained "[\]{}]\|<%\|%>" - syn region cBracket transparent start='\[\|<::\@!' end=']\|:>' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cErrInParen,cCppParen,cCppBracket,cCppString,@Spell - endif - " cCppBracket: same as cParen but ends at end-of-line; used in cDefine - syn region cCppBracket transparent start='\[\|<::\@!' skip='\\$' excludenl end=']\|:>' end='$' contained contains=ALLBUT,@cParenGroup,cErrInParen,cParen,cBracket,cString,@Spell - syn match cErrInBracket display contained "[);{}]\|<%\|%>" -endif - -if s:ft ==# 'c' || exists("cpp_no_cpp11") - syn region cBadBlock keepend start="{" end="}" contained containedin=cParen,cBracket,cBadBlock transparent fold -endif - -"integer number, or floating point number without a dot and with "f". -syn case ignore -syn match cNumbers display transparent "\<\d\|\.\d" contains=cNumber,cFloat,cOctalError,cOctal -" Same, but without octal error (for comments) -syn match cNumbersCom display contained transparent "\<\d\|\.\d" contains=cNumber,cFloat,cOctal -syn match cNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>" -"hex number -syn match cNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" -" Flag the first zero of an octal number as something special -syn match cOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=cOctalZero -syn match cOctalZero display contained "\<0" -syn match cFloat display contained "\d\+f" -"floating point number, with dot, optional exponent -syn match cFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" -"floating point number, starting with a dot, optional exponent -syn match cFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" -"floating point number, without dot, with exponent -syn match cFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>" -if !exists("c_no_c99") - "hexadecimal floating point number, optional leading digits, with dot, with exponent - syn match cFloat display contained "0x\x*\.\x\+p[-+]\=\d\+[fl]\=\>" - "hexadecimal floating point number, with leading digits, optional dot, with exponent - syn match cFloat display contained "0x\x\+\.\=p[-+]\=\d\+[fl]\=\>" -endif - -" flag an octal number with wrong digits -syn match cOctalError display contained "0\o*[89]\d*" -syn case match - -if exists("c_comment_strings") - " A comment can contain cString, cCharacter and cNumber. - " But a "*/" inside a cString in a cComment DOES end the comment! So we - " need to use a special type of cString: cCommentString, which also ends on - " "*/", and sees a "*" at the start of the line as comment again. - " Unfortunately this doesn't very well work for // type of comments :-( - syn match cCommentSkip contained "^\s*\*\($\|\s\+\)" - syn region cCommentString contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=cSpecial,cCommentSkip - syn region cComment2String contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=cSpecial - syn region cCommentL start="//" skip="\\$" end="$" keepend contains=@cCommentGroup,cComment2String,cCharacter,cNumbersCom,cSpaceError,@Spell - if exists("c_no_comment_fold") - " Use "extend" here to have preprocessor lines not terminate halfway a - " comment. - syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cCommentString,cCharacter,cNumbersCom,cSpaceError,@Spell extend - else - syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cCommentString,cCharacter,cNumbersCom,cSpaceError,@Spell fold extend - endif -else - syn region cCommentL start="//" skip="\\$" end="$" keepend contains=@cCommentGroup,cSpaceError,@Spell - if exists("c_no_comment_fold") - syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cSpaceError,@Spell extend - else - syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cSpaceError,@Spell fold extend - endif -endif -" keep a // comment separately, it terminates a preproc. conditional -syn match cCommentError display "\*/" -syn match cCommentStartError display "/\*"me=e-1 contained - -syn keyword cOperator sizeof -if exists("c_gnu") - syn keyword cStatement __asm__ - syn keyword cOperator typeof __real__ __imag__ -endif -syn keyword cType int long short char void -syn keyword cType signed unsigned float double -if !exists("c_no_ansi") || exists("c_ansi_typedefs") - syn keyword cType size_t ssize_t off_t wchar_t ptrdiff_t sig_atomic_t fpos_t - syn keyword cType clock_t time_t va_list jmp_buf FILE DIR div_t ldiv_t - syn keyword cType mbstate_t wctrans_t wint_t wctype_t -endif -if !exists("c_no_c99") " ISO C99 - syn keyword cType _Bool bool _Complex complex _Imaginary imaginary - syn keyword cType int8_t int16_t int32_t int64_t - syn keyword cType uint8_t uint16_t uint32_t uint64_t - syn keyword cType int_least8_t int_least16_t int_least32_t int_least64_t - syn keyword cType uint_least8_t uint_least16_t uint_least32_t uint_least64_t - syn keyword cType int_fast8_t int_fast16_t int_fast32_t int_fast64_t - syn keyword cType uint_fast8_t uint_fast16_t uint_fast32_t uint_fast64_t - syn keyword cType intptr_t uintptr_t - syn keyword cType intmax_t uintmax_t -endif -if exists("c_gnu") - syn keyword cType __label__ __complex__ __volatile__ -endif - -syn keyword cStructure struct union enum typedef -syn keyword cStorageClass static register auto volatile extern const -if exists("c_gnu") - syn keyword cStorageClass inline __attribute__ -endif -if !exists("c_no_c99") - syn keyword cStorageClass inline restrict -endif -if !exists("c_no_c11") - syn keyword cStorageClass _Alignas alignas - syn keyword cOperator _Alignof alignof - syn keyword cStorageClass _Atomic - syn keyword cOperator _Generic - syn keyword cStorageClass _Noreturn noreturn - syn keyword cOperator _Static_assert static_assert - syn keyword cStorageClass _Thread_local thread_local - syn keyword cType char16_t char32_t -endif - -if !exists("c_no_ansi") || exists("c_ansi_constants") || exists("c_gnu") - if exists("c_gnu") - syn keyword cConstant __GNUC__ __FUNCTION__ __PRETTY_FUNCTION__ __func__ - endif - syn keyword cConstant __LINE__ __FILE__ __DATE__ __TIME__ __STDC__ - syn keyword cConstant __STDC_VERSION__ - syn keyword cConstant CHAR_BIT MB_LEN_MAX MB_CUR_MAX - syn keyword cConstant UCHAR_MAX UINT_MAX ULONG_MAX USHRT_MAX - syn keyword cConstant CHAR_MIN INT_MIN LONG_MIN SHRT_MIN - syn keyword cConstant CHAR_MAX INT_MAX LONG_MAX SHRT_MAX - syn keyword cConstant SCHAR_MIN SINT_MIN SLONG_MIN SSHRT_MIN - syn keyword cConstant SCHAR_MAX SINT_MAX SLONG_MAX SSHRT_MAX - if !exists("c_no_c99") - syn keyword cConstant __func__ - syn keyword cConstant LLONG_MIN LLONG_MAX ULLONG_MAX - syn keyword cConstant INT8_MIN INT16_MIN INT32_MIN INT64_MIN - syn keyword cConstant INT8_MAX INT16_MAX INT32_MAX INT64_MAX - syn keyword cConstant UINT8_MAX UINT16_MAX UINT32_MAX UINT64_MAX - syn keyword cConstant INT_LEAST8_MIN INT_LEAST16_MIN INT_LEAST32_MIN INT_LEAST64_MIN - syn keyword cConstant INT_LEAST8_MAX INT_LEAST16_MAX INT_LEAST32_MAX INT_LEAST64_MAX - syn keyword cConstant UINT_LEAST8_MAX UINT_LEAST16_MAX UINT_LEAST32_MAX UINT_LEAST64_MAX - syn keyword cConstant INT_FAST8_MIN INT_FAST16_MIN INT_FAST32_MIN INT_FAST64_MIN - syn keyword cConstant INT_FAST8_MAX INT_FAST16_MAX INT_FAST32_MAX INT_FAST64_MAX - syn keyword cConstant UINT_FAST8_MAX UINT_FAST16_MAX UINT_FAST32_MAX UINT_FAST64_MAX - syn keyword cConstant INTPTR_MIN INTPTR_MAX UINTPTR_MAX - syn keyword cConstant INTMAX_MIN INTMAX_MAX UINTMAX_MAX - syn keyword cConstant PTRDIFF_MIN PTRDIFF_MAX SIG_ATOMIC_MIN SIG_ATOMIC_MAX - syn keyword cConstant SIZE_MAX WCHAR_MIN WCHAR_MAX WINT_MIN WINT_MAX - endif - syn keyword cConstant FLT_RADIX FLT_ROUNDS - syn keyword cConstant FLT_DIG FLT_MANT_DIG FLT_EPSILON - syn keyword cConstant DBL_DIG DBL_MANT_DIG DBL_EPSILON - syn keyword cConstant LDBL_DIG LDBL_MANT_DIG LDBL_EPSILON - syn keyword cConstant FLT_MIN FLT_MAX FLT_MIN_EXP FLT_MAX_EXP - syn keyword cConstant FLT_MIN_10_EXP FLT_MAX_10_EXP - syn keyword cConstant DBL_MIN DBL_MAX DBL_MIN_EXP DBL_MAX_EXP - syn keyword cConstant DBL_MIN_10_EXP DBL_MAX_10_EXP - syn keyword cConstant LDBL_MIN LDBL_MAX LDBL_MIN_EXP LDBL_MAX_EXP - syn keyword cConstant LDBL_MIN_10_EXP LDBL_MAX_10_EXP - syn keyword cConstant HUGE_VAL CLOCKS_PER_SEC NULL - syn keyword cConstant LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY - syn keyword cConstant LC_NUMERIC LC_TIME - syn keyword cConstant SIG_DFL SIG_ERR SIG_IGN - syn keyword cConstant SIGABRT SIGFPE SIGILL SIGHUP SIGINT SIGSEGV SIGTERM - " Add POSIX signals as well... - syn keyword cConstant SIGABRT SIGALRM SIGCHLD SIGCONT SIGFPE SIGHUP - syn keyword cConstant SIGILL SIGINT SIGKILL SIGPIPE SIGQUIT SIGSEGV - syn keyword cConstant SIGSTOP SIGTERM SIGTRAP SIGTSTP SIGTTIN SIGTTOU - syn keyword cConstant SIGUSR1 SIGUSR2 - syn keyword cConstant _IOFBF _IOLBF _IONBF BUFSIZ EOF WEOF - syn keyword cConstant FOPEN_MAX FILENAME_MAX L_tmpnam - syn keyword cConstant SEEK_CUR SEEK_END SEEK_SET - syn keyword cConstant TMP_MAX stderr stdin stdout - syn keyword cConstant EXIT_FAILURE EXIT_SUCCESS RAND_MAX - " Add POSIX errors as well - syn keyword cConstant E2BIG EACCES EAGAIN EBADF EBADMSG EBUSY - syn keyword cConstant ECANCELED ECHILD EDEADLK EDOM EEXIST EFAULT - syn keyword cConstant EFBIG EILSEQ EINPROGRESS EINTR EINVAL EIO EISDIR - syn keyword cConstant EMFILE EMLINK EMSGSIZE ENAMETOOLONG ENFILE ENODEV - syn keyword cConstant ENOENT ENOEXEC ENOLCK ENOMEM ENOSPC ENOSYS - syn keyword cConstant ENOTDIR ENOTEMPTY ENOTSUP ENOTTY ENXIO EPERM - syn keyword cConstant EPIPE ERANGE EROFS ESPIPE ESRCH ETIMEDOUT EXDEV - " math.h - syn keyword cConstant M_E M_LOG2E M_LOG10E M_LN2 M_LN10 M_PI M_PI_2 M_PI_4 - syn keyword cConstant M_1_PI M_2_PI M_2_SQRTPI M_SQRT2 M_SQRT1_2 -endif -if !exists("c_no_c99") " ISO C99 - syn keyword cConstant true false -endif - -" Accept %: for # (C99) -syn region cPreCondit start="^\s*\(%:\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" keepend contains=cComment,cCommentL,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError -syn match cPreConditMatch display "^\s*\(%:\|#\)\s*\(else\|endif\)\>" -if !exists("c_no_if0") - syn cluster cCppOutInGroup contains=cCppInIf,cCppInElse,cCppInElse2,cCppOutIf,cCppOutIf2,cCppOutElse,cCppInSkip,cCppOutSkip - syn region cCppOutWrapper start="^\s*\(%:\|#\)\s*if\s\+0\+\s*\($\|//\|/\*\|&\)" end=".\@=\|$" contains=cCppOutIf,cCppOutElse,@NoSpell fold - syn region cCppOutIf contained start="0\+" matchgroup=cCppOutWrapper end="^\s*\(%:\|#\)\s*endif\>" contains=cCppOutIf2,cCppOutElse - if !exists("c_no_if0_fold") - syn region cCppOutIf2 contained matchgroup=cCppOutWrapper start="0\+" end="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0\+\s*\($\|//\|/\*\|&\)\)\@!\|endif\>\)"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell fold - else - syn region cCppOutIf2 contained matchgroup=cCppOutWrapper start="0\+" end="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0\+\s*\($\|//\|/\*\|&\)\)\@!\|endif\>\)"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell - endif - syn region cCppOutElse contained matchgroup=cCppOutWrapper start="^\s*\(%:\|#\)\s*\(else\|elif\)" end="^\s*\(%:\|#\)\s*endif\>"me=s-1 contains=TOP,cPreCondit - syn region cCppInWrapper start="^\s*\(%:\|#\)\s*if\s\+0*[1-9]\d*\s*\($\|//\|/\*\||\)" end=".\@=\|$" contains=cCppInIf,cCppInElse fold - syn region cCppInIf contained matchgroup=cCppInWrapper start="\d\+" end="^\s*\(%:\|#\)\s*endif\>" contains=TOP,cPreCondit - if !exists("c_no_if0_fold") - syn region cCppInElse contained start="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0*[1-9]\d*\s*\($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=cCppInIf contains=cCppInElse2 fold - else - syn region cCppInElse contained start="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0*[1-9]\d*\s*\($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=cCppInIf contains=cCppInElse2 - endif - syn region cCppInElse2 contained matchgroup=cCppInWrapper start="^\s*\(%:\|#\)\s*\(else\|elif\)\([^/]\|/[^/*]\)*" end="^\s*\(%:\|#\)\s*endif\>"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell - syn region cCppOutSkip contained start="^\s*\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" contains=cSpaceError,cCppOutSkip - syn region cCppInSkip contained matchgroup=cCppInWrapper start="^\s*\(%:\|#\)\s*\(if\s\+\(\d\+\s*\($\|//\|/\*\||\|&\)\)\@!\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" containedin=cCppOutElse,cCppInIf,cCppInSkip contains=TOP,cPreProc -endif -syn region cIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ -syn match cIncluded display contained "<[^>]*>" -syn match cInclude display "^\s*\(%:\|#\)\s*include\>\s*["<]" contains=cIncluded -"syn match cLineSkip "\\$" -syn cluster cPreProcGroup contains=cPreCondit,cIncluded,cInclude,cDefine,cErrInParen,cErrInBracket,cUserLabel,cSpecial,cOctalZero,cCppOutWrapper,cCppInWrapper,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cString,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cParen,cBracket,cMulti,cBadBlock -syn region cDefine start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell -syn region cPreProc start="^\s*\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell - -" Highlight User Labels -syn cluster cMultiGroup contains=cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cOctalZero,cCppOutWrapper,cCppInWrapper,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cCppParen,cCppBracket,cCppString -if s:ft ==# 'c' || exists("cpp_no_cpp11") - syn region cMulti transparent start='?' skip='::' end=':' contains=ALLBUT,@cMultiGroup,@Spell -endif -" Avoid matching foo::bar() in C++ by requiring that the next char is not ':' -syn cluster cLabelGroup contains=cUserLabel -syn match cUserCont display "^\s*\I\i*\s*:$" contains=@cLabelGroup -syn match cUserCont display ";\s*\I\i*\s*:$" contains=@cLabelGroup -syn match cUserCont display "^\s*\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup -syn match cUserCont display ";\s*\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup - -syn match cUserLabel display "\I\i*" contained - -" Avoid recognizing most bitfields as labels -syn match cBitField display "^\s*\I\i*\s*:\s*[1-9]"me=e-1 contains=cType -syn match cBitField display ";\s*\I\i*\s*:\s*[1-9]"me=e-1 contains=cType - -if exists("c_minlines") - let b:c_minlines = c_minlines -else - if !exists("c_no_if0") - let b:c_minlines = 50 " #if 0 constructs can be long - else - let b:c_minlines = 15 " mostly for () constructs - endif -endif -if exists("c_curly_error") - syn sync fromstart -else - exec "syn sync ccomment cComment minlines=" . b:c_minlines -endif - -" config output file -syn match covariable "\$\w\+" -syn match cocommand "\$\(endif\|else\)" -syn region None matchgroup=coifcommand start=+\$if(+ end=+)+ contains=covariable - -" Define the default highlighting. -" Only used when an item doesn't have highlighting yet -hi def link cFormat cSpecial -hi def link cCppString cString -hi def link cCommentL cComment -hi def link cCommentStart cComment -hi def link cLabel Label -hi def link cUserLabel Label -hi def link cConditional Conditional -hi def link cRepeat Repeat -hi def link cCharacter Character -hi def link cSpecialCharacter cSpecial -hi def link cNumber Number -hi def link cOctal Number -hi def link cOctalZero PreProc " link this to Error if you want -hi def link cFloat Float -hi def link cOctalError cError -hi def link cParenError cError -hi def link cErrInParen cError -hi def link cErrInBracket cError -hi def link cCommentError cError -hi def link cCommentStartError cError -hi def link cSpaceError cError -hi def link cSpecialError cError -hi def link cCurlyError cError -hi def link cOperator Operator -hi def link cStructure Structure -hi def link cStorageClass StorageClass -hi def link cInclude Include -hi def link cPreProc PreProc -hi def link cDefine Macro -hi def link cIncluded cString -hi def link cError Error -hi def link cStatement Statement -hi def link cCppInWrapper cCppOutWrapper -hi def link cCppOutWrapper cPreCondit -hi def link cPreConditMatch cPreCondit -hi def link cPreCondit PreCondit -hi def link cType Type -hi def link cConstant Constant -hi def link cCommentString cString -hi def link cComment2String cString -hi def link cCommentSkip cComment -hi def link cString String -hi def link cComment Comment -hi def link cSpecial SpecialChar -hi def link cTodo Todo -hi def link cBadContinuation Error -hi def link cCppOutSkip cCppOutIf2 -hi def link cCppInElse2 cCppOutIf2 -hi def link cCppOutIf2 cCppOut2 " Old syntax group for #if 0 body -hi def link cCppOut2 cCppOut " Old syntax group for #if of #if 0 -hi def link cCppOut Comment - -hi def link cocommand Macro -hi def link coifcommand Macro -hi def link covariable Identifier - -let b:current_syntax = "c-co" - -unlet s:ft - -let &cpo = s:cpo_save -unlet s:cpo_save -" vim: ts=8 diff --git a/vim/syntax/conffile.vim b/vim/syntax/conffile.vim deleted file mode 100644 index 342d8b4..0000000 --- a/vim/syntax/conffile.vim +++ /dev/null @@ -1,37 +0,0 @@ -" Vim syntax file -" Language: C -" Maintainer: Bram Moolenaar <Bram@vim.org> -" Last Change: 2013 Jul 05 - -" Quit when a (custom) syntax file was already loaded -if exists("b:current_syntax") - finish -endif - -left s:ft = matchstr(&ft, '^\([^.]\)\+') - -syn match sComment "#.*$" -syn keyword sKeywords typedef menu group endmenu endgroup type menu default menu visible nodefault -syn keyword sKWCondition dependency default -syn keyword sTypes int bool string hex float -syn region sString start=+\"+ skip=+\\.+ end=+\"+ - -syn keyword sKeywords output nextgroup=sOutput -syn region sOutput start="\w\+ \+{" end="}" contains=covariable,cocommand,coifcommand,CoNone -syn match sOutput "\w\+ \+\w\+" -syn match covariable "\$\w\+" contained -syn match cocommand "\$\(endif\|else\)" contained -syn region CoNone matchgroup=coifcommand start=+\$\(if\|elif\|ifdep\)(+ end=+)+ contains=covariable,sKWCondition contained - - -hi def link sComment Comment -hi def link sKeywords Precondit -hi def link sKWCondition sKeywords -hi def link sTypes Statement -hi def link sString String - -hi def link cocommand Macro -hi def link coifcommand Macro -hi def link covariable Identifier - -let b:current_syntax = "conffile" diff --git a/vim/syntax/make-co.vim b/vim/syntax/make-co.vim deleted file mode 100644 index 371944b..0000000 --- a/vim/syntax/make-co.vim +++ /dev/null @@ -1,153 +0,0 @@ -" Vim syntax file -" Language: Makefile -" Maintainer: Claudio Fleiner <claudio@fleiner.com> -" URL: http://www.fleiner.com/vim/syntax/make.vim -" Last Change: 2012 Oct 05 - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -let s:cpo_save = &cpo -set cpo&vim - - -" some special characters -syn match makeSpecial "^\s*[@+-]\+" -syn match makeNextLine "\\\n\s*" - -" some directives -syn match makePreCondit "^ *\(ifeq\>\|else\>\|endif\>\|ifneq\>\|ifdef\>\|ifndef\>\)" -syn match makeInclude "^ *[-s]\=include" -syn match makeStatement "^ *vpath" -syn match makeExport "^ *\(export\|unexport\)\>" -syn match makeOverride "^ *override" -hi link makeOverride makeStatement -hi link makeExport makeStatement - -" catch unmatched define/endef keywords. endef only matches it is by itself on a line, possibly followed by a commend -syn region makeDefine start="^\s*define\s" end="^\s*endef\s*\(#.*\)\?$" contains=makeStatement,makeIdent,makePreCondit,makeDefine - -" Microsoft Makefile specials -syn case ignore -syn match makeInclude "^! *include" -syn match makePreCondit "! *\(cmdswitches\|error\|message\|include\|if\|ifdef\|ifndef\|else\|elseif\|else if\|else\s*ifdef\|else\s*ifndef\|endif\|undef\)\>" -syn case match - -" identifiers -syn region makeIdent start="\\\$(" skip="\\)\|\\\\" end=")" contains=makeStatement,makeIdent,makeSString,makeDString -syn region makeIdent start="\\\${" skip="\\}\|\\\\" end="}" contains=makeStatement,makeIdent,makeSString,makeDString -syn match makeIdent "\$\$\w*" -syn match makeIdent "\$[^({]" -syn match makeIdent "^ *\a\w*\s*[:+?!*]="me=e-2 -syn match makeIdent "^ *\a\w*\s*="me=e-1 -syn match makeIdent "%" - -" Makefile.in variables -syn match makeConfig "@[A-Za-z0-9_]\+@" - -" make targets -" syn match makeSpecTarget "^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\)\>" -syn match makeImplicit "^\.[A-Za-z0-9_./\t -]\+\s*:$"me=e-1 nextgroup=makeSource -syn match makeImplicit "^\.[A-Za-z0-9_./\t -]\+\s*:[^=]"me=e-2 nextgroup=makeSource - -syn region makeTarget transparent matchgroup=makeTarget start="^[A-Za-z0-9_./$()%-][A-Za-z0-9_./\t $()%-]*:\{1,2}[^:=]"rs=e-1 end=";"re=e-1,me=e-1 end="[^\\]$" keepend contains=makeIdent,makeSpecTarget,makeNextLine skipnl nextGroup=makeCommands -syn match makeTarget "^[A-Za-z0-9_./$()%*@-][A-Za-z0-9_./\t $()%*@-]*::\=\s*$" contains=makeIdent,makeSpecTarget skipnl nextgroup=makeCommands,makeCommandError - -syn region makeSpecTarget transparent matchgroup=makeSpecTarget start="^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\)\>\s*:\{1,2}[^:=]"rs=e-1 end="[^\\]$" keepend contains=makeIdent,makeSpecTarget,makeNextLine skipnl nextGroup=makeCommands -syn match makeSpecTarget "^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\)\>\s*::\=\s*$" contains=makeIdent skipnl nextgroup=makeCommands,makeCommandError - -syn match makeCommandError "^\s\+\S.*" contained -syn region makeCommands start=";"hs=s+1 start="^\t" end="^[^\t#]"me=e-1,re=e-1 end="^$" contained contains=makeCmdNextLine,makeSpecial,makeComment,makeIdent,makePreCondit,makeDefine,makeDString,makeSString nextgroup=makeCommandError -syn match makeCmdNextLine "\\\n."he=e-1 contained - - -" Statements / Functions (GNU make) -syn match makeStatement contained "(\(subst\|abspath\|addprefix\|addsuffix\|and\|basename\|call\|dir\|error\|eval\|filter-out\|filter\|findstring\|firstword\|flavor\|foreach\|if\|info\|join\|lastword\|notdir\|or\|origin\|patsubst\|realpath\|shell\|sort\|strip\|suffix\|value\|warning\|wildcard\|word\|wordlist\|words\)\>"ms=s+1 - -" Comment -if exists("make_microsoft") - syn match makeComment "#.*" contains=@Spell,makeTodo -elseif !exists("make_no_comments") - syn region makeComment start="#" end="^$" end="[^\\]$" keepend contains=@Spell,makeTodo - syn match makeComment "#$" contains=@Spell -endif -syn keyword makeTodo TODO FIXME XXX contained - -" match escaped quotes and any other escaped character -" except for $, as a backslash in front of a $ does -" not make it a standard character, but instead it will -" still act as the beginning of a variable -" The escaped char is not highlightet currently -syn match makeEscapedChar "\\[^$]" - - -syn region makeDString start=+\(\\\)\@<!"+ skip=+\\.+ end=+"+ contains=makeIdent -syn region makeSString start=+\(\\\)\@<!'+ skip=+\\.+ end=+'+ contains=makeIdent -syn region makeBString start=+\(\\\)\@<!`+ skip=+\\.+ end=+`+ contains=makeIdent,makeSString,makeDString,makeNextLine - -" Syncing -syn sync minlines=20 maxlines=200 - -" Sync on Make command block region: When searching backwards hits a line that -" can't be a command or a comment, use makeCommands if it looks like a target, -" NONE otherwise. -syn sync match makeCommandSync groupthere NONE "^[^\t#]" -syn sync match makeCommandSync groupthere makeCommands "^[A-Za-z0-9_./$()%-][A-Za-z0-9_./\t $()%-]*:\{1,2}[^:=]" -syn sync match makeCommandSync groupthere makeCommands "^[A-Za-z0-9_./$()%-][A-Za-z0-9_./\t $()%-]*:\{1,2}\s*$" - -" config output file -syn match covariable "\$\w\+" -syn match cocommand "\$\(endif\|else\)" -syn region None matchgroup=coifcommand start=+\$if(+ end=+)+ contains=covariable - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_make_syn_inits") - if version < 508 - let did_make_syn_inits = 1 - command -nargs=+ HiLink hi link <args> - else - command -nargs=+ HiLink hi def link <args> - endif - - HiLink makeNextLine makeSpecial - HiLink makeCmdNextLine makeSpecial - HiLink makeSpecTarget Statement - if !exists("make_no_commands") - HiLink makeCommands Number - endif - HiLink makeImplicit Function - HiLink makeTarget Function - HiLink makeInclude Include - HiLink makePreCondit PreCondit - HiLink makeStatement Statement - HiLink makeIdent Identifier - HiLink makeSpecial Special - HiLink makeComment Comment - HiLink makeDString String - HiLink makeSString String - HiLink makeBString Function - HiLink makeError Error - HiLink makeTodo Todo - HiLink makeDefine Define - HiLink makeCommandError Error - HiLink makeConfig PreCondit - - HiLink cocommand Macro - HiLink coifcommand Macro - HiLink covariable Identifier - - delcommand HiLink -endif - -let b:current_syntax = "make-co" - -let &cpo = s:cpo_save -unlet s:cpo_save -" vim: ts=8 @@ -1,215 +0,0 @@ -" For git mergetool -" :diffg RE " get from REMOTE -" :diffg BA " get from BASE -" :diffg LO " get from LOCAL -set nocompatible - -" Ale (completion enablement has to be before plugin load) -let g:ale_completion_enabled = 1 -let g:ale_set_baloons = 1 -let g:ale_floating_preview = 1 -" let g:ale_set_highlights = 0 -set completeopt=menu,menuone,preview,noselect,noinsert - -filetype off -set runtimepath+=~/.vim/bundle/Vundle.vim -call vundle#begin() -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -Plugin 'VundleVim/Vundle.vim' -Plugin 'jasonccox/vim-wayland-clipboard' -" Visual -Plugin 'arcticicestudio/nord-vim' -Plugin 'itchyny/lightline.vim' -Plugin 'nathanaelkane/vim-indent-guides' -Plugin 'airblade/vim-gitgutter' -" Programming -Plugin 'w0rp/ale' -Plugin 'maximbaz/lightline-ale' -Plugin 'majutsushi/tagbar' -Plugin 'SirVer/ultisnips' -Plugin 'honza/vim-snippets' -Bundle 'craigemery/vim-autotag' -Plugin 'scrooloose/nerdcommenter' -Plugin 'tpope/vim-fugitive' -" Movement, format and others -Plugin 'tpope/vim-surround' -Plugin 'tpope/vim-repeat' -Plugin 'dhruvasagar/vim-table-mode' -" Syntax -Plugin 'editorconfig/editorconfig-vim' -Plugin 'vim-scripts/iptables' -Plugin 'nfnty/vim-nftables' -Plugin 'sirtaj/vim-openscad' -Plugin 'tmhedberg/SimpylFold' -Plugin 'fedorenchik/qt-support.vim' -Plugin 'chr4/nginx.vim' -Plugin 'LnL7/vim-nix' -Plugin 'gisphm/vim-gitignore' -Plugin 'aliou/bats.vim' -Plugin 'Glench/Vim-Jinja2-Syntax' -Plugin 'jamespeapen/swayconfig.vim' -Plugin 'kaarmu/typst.vim' -" Files navigation -Plugin 'kien/ctrlp.vim' -" Grammer -Plugin 'rhysd/vim-grammarous' -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -call vundle#end() -filetype plugin indent on - -syntax on - -set exrc -set secure -set title - -set hidden -set undofile -set undodir=~/.cache/vim-undo// -set hlsearch -set wildmode=longest:full,full -set wildmenu -set modeline -set encoding=utf-8 - -set foldmethod=syntax -set foldtext=FoldText() -function FoldText() - return getline(v:foldstart) . ' ' -endfunction - - -set backspace=indent,eol,start - -colorscheme nord -let g:lightline = { 'colorscheme': 'nord' } - -set number -set colorcolumn=80 -set textwidth=80 - -" Tabs setting. In default we want 4 spaces tab, but allows also 8 spaced tabs -set noexpandtab -set tabstop=4 -set shiftwidth=4 -set softtabstop=4 -function TabToogle() - if &tabstop != 4 - set tabstop=4 - set shiftwidth=4 - set softtabstop=4 - echom 'Tab stop set to 4' - else - set tabstop=8 - set shiftwidth=8 - set softtabstop=8 - echom 'Tab stop set to 8' - endif - " Soft tab stop is here only for possibility of expandtab -endfunction -command TabToogle call TabToogle() - -" Translate word under cursor -nnoremap <leader>d :! sdcv -n <cword><cr> - -" Indent guides -let g:indent_guides_enable_on_vim_startup = 1 -let g:indent_guides_start_level=2 -let g:indent_guides_guide_size=8 -let g:indent_guides_auto_colors = 0 -autocmd VimEnter,Colorscheme * :hi IndentGuidesOdd ctermbg=232 -autocmd VimEnter,Colorscheme * :hi IndentGuidesEven ctermbg=233 - -" Write as root -cmap w!! w !sudo tee >/dev/null % - -" netrw configuration -cabbrev E Explore -let g:netrw_banner=0 -let g:netrw_liststyle=1 -let g:netrw_list_hide='\(^\|\s\s\)\zs\.\S\+,' -function GitIgnore() - " Possibly find and include all lower .gitignore files? - let g:netrw_list_hide='\(^\|\s\s\)\zs\.\S\+,' . netrw_gitignore#Hide() -endfunction -command GitIgnore call GitIgnore() -" Some fast buffer switching and opening of new files -nnoremap <C-C><CR> :Explore<CR> -nnoremap <C-C>l :bnext<CR> -nnoremap <C-C>h :bprev<CR> -nnoremap <C-C><C-C> :buffers<CR>:buffer<Space> - -" CtrlP -let g:ctrlp_user_command = { -\ 'types': { -\ 1: ['.git', 'cd %s && git ls-files . -c --recurse-submodules && git ls-files . -o --exclude-standard'], -\ }, -\ 'fallback': 'find %s -type f' -\ } -let g:ctrlp_open_new_file = 'r' -let g:ctrlp_arg_map = 1 -let g:ctrlp_default_input = 1 - -" Directory where *.swp files will be stored -" Note that double slash is intensional, it tells vim to build complete path. -set directory=$HOME/.cache/vim// - -" Setup gitgutter -set updatetime=100 -highlight GitGutterAdd ctermfg=2 -highlight GitGutterChange ctermfg=3 -highlight GitGutterDelete ctermfg=1 - -" Setup table-mode to markdown compliant -" Note: to start use "\ t m" -let g:table_mode_corner='|' - -set tags=./.tags,.tags -" Setup autotag to look for .tags file -let g:autotagTagsFile='.tags' - -" Enable mouse -set mouse=a -set ttymouse=sgr -" We are always on fast tty (maybe remove this on servers?) -set ttyfast - -" Open tagbar with <F9> -nmap <F9> :TagbarOpen fc<cr> - -" Spell checking -map <F10> :setlocal spell!<cr> -function LangToggle() - if &spelllang !=? 'en_us' - setlocal spelllang=en_us - echo 'spelllang=en_us' - else - setlocal spelllang=cs - echo 'spelllang=cs' - endif -endfunction -setlocal spelllang=en_us -map <F11> :call LangToggle()<cr> - -" NERDCommenter -let g:NERDCreateDefaultMappings = 1 - -" UltiSnips triggers -let g:UltiSnipsExpandTrigger='<c-h>' -let g:UltiSnipsJumpForwardTrigger='<c-j>' -let g:UltiSnipsJumpBackwardTrigger='<c-k>' - -" ALE bidings -nmap <leader>] <Plug>(ale_go_to_definition_in_split) -nmap <leader>[ <Plug>(ale_go_to_implementation_in_split) -nmap <leader>[ <Plug>(ale_go_to_type_definition_in_split) -nmap <leader>f <Plug>(ale_fix) - -" Copy line location -" TODO this should work but it doesn't for some reason -" nmap <leader><leader>c :let @+=expand("%:p") . ":" . line(".")<cr> -nmap <leader><leader>c :exec "!wl-copy '" . expand("%:p") . ":" . line(".") . "'"<cr><cr> - - -" LanguageTool -let g:grammarous#languagetool_cmd = 'languagetool' |