diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..e04fc56 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,24 @@ +[submodule "pack/plugins/start/rainbow"] + path = pack/plugins/start/rainbow + url = https://github.com/luochen1990/rainbow +[submodule "pack/plugins/start/auto-pairs"] + path = pack/plugins/start/auto-pairs + url = https://github.com/jiangmiao/auto-pairs +[submodule "pack/plugins/start/vim-endwise"] + path = pack/plugins/start/vim-endwise + url = https://github.com/tpope/vim-endwise +[submodule "pack/plugins/start/vim-Grammalecte"] + path = pack/plugins/start/vim-Grammalecte + url = https://github.com/dpelle/vim-Grammalecte +[submodule "pack/plugins/start/vim-sourcepawn"] + path = pack/plugins/start/vim-sourcepawn + url = https://github.com/withgod/vim-sourcepawn +[submodule "pack/plugins/opt/vim-markdown"] + path = pack/plugins/opt/vim-markdown + url = https://github.com/plasticboy/vim-markdown +[submodule "pack/plugins/start/vim-doge"] + path = pack/plugins/start/vim-doge + url = https://github.com/kkoomen/vim-doge +[submodule "pack/plugins/start/vimtex"] + path = pack/plugins/start/vimtex + url = https://github.com/lervag/vimtex diff --git a/README.md b/README.md index 05959f8..1684336 100644 --- a/README.md +++ b/README.md @@ -21,3 +21,57 @@ La police Fire Code est nécessaire pour XTerm. Mettez le fichier `tmux.conf` dans votre `$HOME` en le renommant `.tmux.conf`. Il faut ensuite mettre le fichier se trouvant dans `scripts` dans un dossier pouvant être exécuté et appelé directement en CLI. **Ce fichier n'est pas utile si vous n'avez pas de batterie et peut générer des bugs si vous n'en avez pas.** Lorsque votre PC charge, une étoile apparait à côté du pourcentage de batterie: `[*]`. Cet emplacement est cependant vite si vous n'êtes pas connecté au secteur. + +## FichiersVim + +Mes fichiers de configuration de Vim. **Les extensions ne marchent que sur les versions de Vim 8.** + +La touche `leader` est définie sur `\`. + +La touche `localleader` est définie sur `;`. + +### Installation + +Il faut cloner le repos et déplacer tous les fichiers dans le dossier `~/.vim`. + +```bash +git clone --recurse-submodules https://git.gnous.eu/Rick/FichiersVim.git +``` + +**Attention :** Cette opération va effacer votre configuration Vim actuelle. Je vous conseille de faire un backup juste avant. + +### vimrc + +N'oubliez pas de modifier la variable `g:grammalecte_cli_py` avec le chemin pour Grammalecte afin de faire marcher le plugin. + +La touche Leader est mise sur Espace. + +### vimrc.bepo + +Le fichier vimrc.bepo est une configuration spéciale pour les claviers bépo. Vous pouvez la retrouver [sur le site officiel](https://bepo.fr/wiki/Vim#.7E.2F.vimrc). Si vous utilisez un clavier bépo, décommentez la première ligne du fichier vimrc. + +### Sources + +#### Plugins & thème installés + +* Thème de couleurs : [vim-code-dark](https://github.com/tomasiser/vim-code-dark) +* [Auto-pairs](https://github.com/jiangmiao/auto-pairs) : Créer la parenthèse/accolade/etc. fermante automatiquement. +* [Endwise](https://github.com/tpope/vim-endwise) : Ferme le `if` ou le `while` (pour Bash par ex.). +* [Grammalecte](https://github.com/dpelle/vim-Grammalecte) : Permet de corriger les fautes de français (n'oubliez pas d'installer [Grammalecte](https://grammalecte.net/) !). +* [Rainbow](https://github.com/luochen1990/rainbow) : Colore les pairs de parenthèses et les accolades. +* [Vim Doge](https://github.com/kkoomen/vim-doge) : Génère des commentaires. +* [Syntaxe SourcePawn](https://github.com/withgod/vim-sourcepawn) : Coloration syntaxique et support pour le SourcePawn. +* [Vimtex](https://vimawesome.com/plugin/vimtex) : outil très puissant pour l'utilisation de LaTeX. +* [java_getset](https://www.vim.org/scripts/script.php?script_id=490) : script pour créer les getter et les setter en Java. + +#### Plugins de l’ancienne version de ce dépôt qui seront remis plus tard + +* [Emmet](https://github.com/mattn/emmet-vim) : +* [Ragtag](https://github.com/tpope/vim-ragtag) : + +#### Plugins non activés + +* [Vim Markdown](https://github.com/plasticboy/vim-markdown) : Plugin pour gérer la syntaxe Markdown. +* [Vim OrgMode](https://vimawesome.com/plugin/vim-orgmode) : pour avoir un support du OrgMode d'Emacs dans Vim (n'a pas cependant toutes les fonctionnalités et n'est plus maintenu). Il nécessite quelques plugins en plus qui sont listés ci dessous : + * [SpeedDating](https://vimawesome.com/plugin/speeddating-vim) : incrémenter des dates avec C-A + * [Universal Text Linking](http://www.vim.org/scripts/script.php?script_id=293) : lier les liens textes diff --git a/autoload/airline/themes/codedark.vim b/autoload/airline/themes/codedark.vim new file mode 100644 index 0000000..ef8e7b5 --- /dev/null +++ b/autoload/airline/themes/codedark.vim @@ -0,0 +1,120 @@ +" Vim Code Dark (airline theme) +" https://github.com/tomasiser/vim-code-dark + +scriptencoding utf-8 + +let g:airline#themes#codedark#palette = {} + +" Terminal colors (base16): +let s:cterm00 = "00" +let s:cterm03 = "08" +let s:cterm05 = "07" +let s:cterm07 = "15" +let s:cterm08 = "01" +let s:cterm0A = "03" +let s:cterm0B = "02" +let s:cterm0C = "06" +let s:cterm0D = "04" +let s:cterm0E = "05" +if exists('base16colorspace') && base16colorspace == "256" + let s:cterm01 = "18" + let s:cterm02 = "19" + let s:cterm04 = "20" + let s:cterm06 = "21" + let s:cterm09 = "16" + let s:cterm0F = "17" +else + let s:cterm01 = "00" + let s:cterm02 = "08" + let s:cterm04 = "07" + let s:cterm06 = "07" + let s:cterm09 = "06" + let s:cterm0F = "03" +endif + +if &t_Co >= 256 + let g:codedark_term256=1 +elseif !exists("g:codedark_term256") + let g:codedark_term256=0 +endif + +let s:cdFront = {'gui': '#FFFFFF', 'cterm': (g:codedark_term256 ? '231' : s:cterm07)} +let s:cdFrontGray = {'gui': '#D4D4D4', 'cterm': (g:codedark_term256 ? '188' : s:cterm05)} +let s:cdBack = {'gui': '#1E1E1E', 'cterm': (g:codedark_term256 ? '234' : s:cterm00)} +let s:cdSelection = {'gui': '#264F78', 'cterm': (g:codedark_term256 ? '24' : s:cterm01)} + +let s:cdBlue = {'gui': '#0A7ACA', 'cterm': (g:codedark_term256 ? '32' : s:cterm0D)} +let s:cdLightBlue = {'gui': '#5CB6F8', 'cterm': (g:codedark_term256 ? '75' : s:cterm0C)} +let s:cdYellow = {'gui': '#FFAF00', 'cterm': (g:codedark_term256 ? '214' : s:cterm0A)} +let s:cdRed = {'gui': '#F44747', 'cterm': (g:codedark_term256 ? '203' : s:cterm08)} + +let s:cdDarkDarkDark = {'gui': '#262626', 'cterm': (g:codedark_term256 ? '235' : s:cterm01)} +let s:cdDarkDark = {'gui': '#303030', 'cterm': (g:codedark_term256 ? '236' : s:cterm02)} +let s:cdDark = {'gui': '#3C3C3C', 'cterm': (g:codedark_term256 ? '237' : s:cterm03)} + +let s:Warning = [ s:cdRed.gui, s:cdDarkDark.gui, s:cdRed.cterm, s:cdDarkDark.cterm, 'none'] + +" Normal: + +let s:N1 = [ s:cdFront.gui, s:cdBlue.gui, s:cdFront.cterm, s:cdBlue.cterm, 'none' ] +let s:N2 = [ s:cdFront.gui, s:cdDarkDark.gui, s:cdFront.cterm, s:cdDarkDark.cterm, 'none' ] +let s:N3 = [ s:cdFront.gui, s:cdDarkDarkDark.gui, s:cdFront.cterm, s:cdDarkDarkDark.cterm, 'none' ] +let s:NM = [ s:cdFront.gui, s:cdDarkDarkDark.gui, s:cdFront.cterm, s:cdDarkDarkDark.cterm, 'none'] + +let g:airline#themes#codedark#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3) +let g:airline#themes#codedark#palette.normal_modified = { 'airline_c': s:NM } +let g:airline#themes#codedark#palette.normal.airline_warning = s:Warning +let g:airline#themes#codedark#palette.normal_modified.airline_warning = s:Warning + +" Insert: + +let s:I1 = [ s:cdBack.gui, s:cdYellow.gui, s:cdBack.cterm, s:cdYellow.cterm, 'none' ] +let s:I2 = [ s:cdFront.gui, s:cdDarkDark.gui, s:cdFront.cterm, s:cdDarkDark.cterm, 'none' ] +let s:I3 = [ s:cdFront.gui, s:cdDarkDarkDark.gui, s:cdFront.cterm, s:cdDarkDarkDark.cterm, 'none' ] +let s:IM = [ s:cdFront.gui, s:cdDarkDarkDark.gui, s:cdFront.cterm, s:cdDarkDarkDark.cterm, 'none'] + +let g:airline#themes#codedark#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3) +let g:airline#themes#codedark#palette.insert_modified = { 'airline_c': s:IM } +let g:airline#themes#codedark#palette.insert.airline_warning = s:Warning +let g:airline#themes#codedark#palette.insert_modified.airline_warning = s:Warning + +" Replace: + +let s:R1 = [ s:cdBack.gui, s:cdYellow.gui, s:cdBack.cterm, s:cdYellow.cterm, 'none' ] +let s:R2 = [ s:cdFront.gui, s:cdDarkDark.gui, s:cdFront.cterm, s:cdDarkDark.cterm, 'none' ] +let s:R3 = [ s:cdFront.gui, s:cdDarkDarkDark.gui, s:cdFront.cterm, s:cdDarkDarkDark.cterm, 'none' ] +let s:RM = [ s:cdFront.gui, s:cdDarkDarkDark.gui, s:cdFront.cterm, s:cdDarkDarkDark.cterm, 'none'] + +let g:airline#themes#codedark#palette.replace = airline#themes#generate_color_map(s:R1, s:R2, s:R3) +let g:airline#themes#codedark#palette.replace_modified = { 'airline_c': s:RM } +let g:airline#themes#codedark#palette.replace.airline_warning = s:Warning +let g:airline#themes#codedark#palette.replace_modified.airline_warning = s:Warning + +" Visual: + +let s:V1 = [ s:cdLightBlue.gui, s:cdDark.gui, s:cdLightBlue.cterm, s:cdDark.cterm, 'none' ] +let s:V2 = [ s:cdFront.gui, s:cdDarkDark.gui, s:cdFront.cterm, s:cdDarkDark.cterm, 'none' ] +let s:V3 = [ s:cdFront.gui, s:cdDarkDarkDark.gui, s:cdFront.cterm, s:cdDarkDarkDark.cterm, 'none' ] +let s:VM = [ s:cdFront.gui, s:cdDarkDarkDark.gui, s:cdFront.cterm, s:cdDarkDarkDark.cterm, 'none'] + +let g:airline#themes#codedark#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3) +let g:airline#themes#codedark#palette.visual_modified = { 'airline_c': s:VM } +let g:airline#themes#codedark#palette.visual.airline_warning = s:Warning +let g:airline#themes#codedark#palette.visual_modified.airline_warning = s:Warning + +" Inactive: + +let s:IA1 = [ s:cdFrontGray.gui, s:cdDark.gui, s:cdFrontGray.cterm, s:cdDark.cterm, 'none' ] +let s:IA2 = [ s:cdFrontGray.gui, s:cdDarkDark.gui, s:cdFrontGray.cterm, s:cdDarkDark.cterm, 'none' ] +let s:IA3 = [ s:cdFrontGray.gui, s:cdDarkDarkDark.gui, s:cdFrontGray.cterm, s:cdDarkDarkDark.cterm, 'none' ] +let s:IAM = [ s:cdFrontGray.gui, s:cdDarkDarkDark.gui, s:cdFrontGray.cterm, s:cdDarkDarkDark.cterm, 'none' ] + +let g:airline#themes#codedark#palette.inactive = airline#themes#generate_color_map(s:IA1, s:IA2, s:IA3) +let g:airline#themes#codedark#palette.inactive_modified = { 'airline_c': s:IAM } + +" Red accent for readonly: + +let g:airline#themes#codedark#palette.accents = { + \ 'red': [ s:cdRed.gui, '', s:cdRed.cterm, '' ] + \ } + diff --git a/autoload/lightline/colorscheme/codedark.vim b/autoload/lightline/colorscheme/codedark.vim new file mode 100644 index 0000000..881ea70 --- /dev/null +++ b/autoload/lightline/colorscheme/codedark.vim @@ -0,0 +1,40 @@ +" ============================================================================= +" Filename: autoload/lightline/colorscheme/codedark.vim +" Author: artanikin +" License: MIT License +" Last Change: 2019/12/05 12:26:00 +" ============================================================================= + +let s:term_red = 204 +let s:term_green = 114 +let s:term_yellow = 180 +let s:term_blue = 39 +let s:term_purple = 170 +let s:term_white = 145 +let s:term_black = 235 +let s:term_grey = 236 + +let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}} + +let s:p.normal.left = [ [ '#262626', '#608B4E', s:term_black, s:term_green, 'bold' ], [ '#608B4E', '#262626', s:term_green, s:term_black ] ] +let s:p.normal.right = [ [ '#262626', '#608B4E', s:term_black, s:term_green ], [ '#D4D4D4', '#3C3C3C', s:term_white, s:term_grey ], [ '#608B4E', '#262626', s:term_green, s:term_black ] ] +let s:p.inactive.right = [ [ '#262626', '#569CD6', s:term_black, s:term_blue], [ '#D4D4D4', '#3C3C3C', s:term_white, s:term_grey ] ] +let s:p.inactive.left = s:p.inactive.right[1:] +" her +let s:p.insert.left = [ [ '#262626', '#569CD6', s:term_black, s:term_blue, 'bold' ], [ '#569CD6', '#262626', s:term_blue, s:term_black ] ] +let s:p.insert.right = [ [ '#262626', '#569CD6', s:term_black, s:term_blue ], [ '#D4D4D4', '#3C3C3C', s:term_white, s:term_grey ], [ '#569CD6', '#262626', s:term_blue, s:term_black ] ] +let s:p.replace.left = [ [ '#262626', '#D16969', s:term_black, s:term_red, 'bold' ], [ '#D16969', '#262626', s:term_red, s:term_black ] ] +let s:p.replace.right = [ [ '#262626', '#D16969', s:term_black, s:term_red, 'bold' ], s:p.normal.right[1], [ '#D16969', '#262626', s:term_red, s:term_black ] ] +let s:p.visual.left = [ [ '#262626', '#C586C0', s:term_black, s:term_purple, 'bold' ], [ '#C586C0', '#262626', s:term_purple, s:term_black ] ] +let s:p.visual.right = [ [ '#262626', '#C586C0', s:term_black, s:term_purple, 'bold' ], s:p.normal.right[1], [ '#C586C0', '#262626', s:term_purple, s:term_black ] ] +let s:p.normal.middle = [ [ '#D4D4D4', '#262626', s:term_white, s:term_black ] ] +let s:p.insert.middle = s:p.normal.middle +let s:p.replace.middle = s:p.normal.middle +let s:p.tabline.left = [ s:p.normal.left[1] ] +let s:p.tabline.tabsel = [ s:p.normal.left[0] ] +let s:p.tabline.middle = s:p.normal.middle +let s:p.tabline.right = [ s:p.normal.left[1] ] +let s:p.normal.error = [ [ '#262626', '#D16969', s:term_black, s:term_red ] ] +let s:p.normal.warning = [ [ '#262626', '#D7BA7D', s:term_black, s:term_yellow ] ] + +let g:lightline#colorscheme#codedark#palette = lightline#colorscheme#fill(s:p) diff --git a/autoload/rainbow.vim b/autoload/rainbow.vim new file mode 100644 index 0000000..10551c5 --- /dev/null +++ b/autoload/rainbow.vim @@ -0,0 +1,128 @@ +" Copyright 2013 LuoChen (luochen1990@gmail.com). Licensed under the Apache License 2.0. + +if exists('s:loaded') | finish | endif | let s:loaded = 1 + +fun s:trim(s) + return substitute(a:s, '\v^\s*(.{-})\s*$', '\1', '') +endfun + +fun s:concat(strs) + return join(filter(a:strs, "v:val !~ '^[ ]*$'"), ',') +endfun + +fun s:resolve_parenthesis_with(init_state, p) + let [paren, contained, containedin, contains_prefix, contains, op] = a:init_state + let p = (type(a:p) == type([])) ? ((len(a:p) == 3) ? printf('start=#%s# step=%s end=#%s#', a:p[0], op, a:p[-1]) : printf('start=#%s# end=#%s#', a:p[0], a:p[-1])) : a:p "NOTE: preprocess the old style parentheses config + + let ls = split(p, '\v%(%(start|step|end)\=(.)%(\1@!.)*\1[^ ]*|\w+%(\=[^ ]*)?) ?\zs', 0) + for s in ls + let [k, v] = [matchstr(s, '^[^=]\+\ze\(=\|$\)'), matchstr(s, '^[^=]\+=\zs.*')] + if k == 'step' + let op = s:trim(v) + elseif k == 'contains_prefix' + let contains_prefix = s:trim(v) + elseif k == 'contains' + let contains = s:concat([contains, s:trim(v)]) + elseif k == 'containedin' + let containedin = s:concat([containedin, s:trim(v)]) + elseif k == 'contained' + let contained = 1 + else + let paren .= s + endif + endfor + let rst = [paren, contained, containedin, contains_prefix, contains, op] + "echom json_encode(rst) + return rst +endfun + +fun s:resolve_parenthesis_from_config(config) + return s:resolve_parenthesis_with(['', 0, '', a:config.contains_prefix, '', a:config.operators], a:config.parentheses_options) +endfun + +fun s:synID(prefix, group, lv, id) + return a:prefix.'_lv'.a:lv.'_'.a:group.a:id +endfun + +fun s:synGroupID(prefix, group, lv) + return a:prefix.a:group.'_lv'.a:lv +endfun + +fun rainbow#syn(config) + let conf = a:config + let prefix = conf.syn_name_prefix + let cycle = conf.cycle + + let glob_paran_opts = s:resolve_parenthesis_from_config(conf) + let b:rainbow_loaded = cycle + for id in range(len(conf.parentheses)) + let [paren, contained, containedin, contains_prefix, contains, op] = s:resolve_parenthesis_with(glob_paran_opts, conf.parentheses[id]) + for lv in range(cycle) + let lv2 = ((lv + cycle - 1) % cycle) + let [rid, pid, gid2] = [s:synID(prefix, 'r', lv, id), s:synID(prefix, 'p', lv, id), s:synGroupID(prefix, 'Regions', lv2)] + + if len(op) > 2 + exe 'syn match '.s:synID(prefix, 'o', lv, id).' '.op.' containedin='.s:synID(prefix, 'r', lv, id).' contained' + endif + + let real_contained = (lv == 0)? (contained? 'contained ' : '') : 'contained ' + let real_containedin = (lv == 0)? s:concat([containedin, '@'.gid2]) : '@'.gid2 + let real_contains = s:concat([contains_prefix, contains]) + exe 'syn region '.rid.' matchgroup='.pid.' '.real_contained.'containedin='.real_containedin.' contains='.real_contains.' '.paren + endfor + endfor + for lv in range(cycle) + exe 'syn cluster '.s:synGroupID(prefix, 'Regions', lv).' contains='.join(map(range(len(conf.parentheses)), 's:synID(prefix, "r", lv, v:val)'), ',') + exe 'syn cluster '.s:synGroupID(prefix, 'Parentheses', lv).' contains='.join(map(range(len(conf.parentheses)), 's:synID(prefix, "p", lv, v:val)'), ',') + exe 'syn cluster '.s:synGroupID(prefix, 'Operators', lv).' contains='.join(map(range(len(conf.parentheses)), 's:synID(prefix, "o", lv, v:val)'), ',') + endfor + exe 'syn cluster '.prefix.'Regions contains='.join(map(range(cycle), '"@".s:synGroupID(prefix, "Regions", v:val)'), ',') + exe 'syn cluster '.prefix.'Parentheses contains='.join(map(range(cycle), '"@".s:synGroupID(prefix, "Parentheses", v:val)'), ',') + exe 'syn cluster '.prefix.'Operators contains='.join(map(range(cycle), '"@".s:synGroupID(prefix, "Operators", v:val)'), ',') + if has_key(conf, 'after') | for cmd in conf.after | exe cmd | endfor | endif +endfun + +fun rainbow#syn_clear(config) + let conf = a:config + let prefix = conf.syn_name_prefix + + for id in range(len(conf.parentheses)) + for lv in range(conf.cycle) + let [rid, oid] = [s:synID(prefix, 'r', lv, id), s:synID(prefix, 'o', lv, id)] + exe 'syn clear '.rid + exe 'syn clear '.oid + endfor + endfor +endfun + +fun rainbow#hi(config) + let conf = a:config + let prefix = conf.syn_name_prefix + + for id in range(len(conf.parentheses)) + for lv in range(conf.cycle) + let [pid, oid] = [s:synID(prefix, 'p', lv, id), s:synID(prefix, 'o', lv, id)] + let ctermfg = conf.ctermfgs[lv % len(conf.ctermfgs)] + let guifg = conf.guifgs[lv % len(conf.guifgs)] + let cterm = conf.cterms[lv % len(conf.cterms)] + let gui = conf.guis[lv % len(conf.guis)] + let hi_style = 'ctermfg='.ctermfg.' guifg='.guifg.(len(cterm) > 0 ? ' cterm='.cterm : '').(len(gui) > 0 ? ' gui='.gui : '') + exe 'hi '.pid.' '.hi_style + exe 'hi '.oid.' '.hi_style + endfor + endfor +endfun + +fun rainbow#hi_clear(config) + let conf = a:config + let prefix = conf.syn_name_prefix + + for id in range(len(conf.parentheses)) + for lv in range(conf.cycle) + let [pid, oid] = [s:synID(prefix, 'p', lv, id), s:synID(prefix, 'o', lv, id)] + exe 'hi clear '.pid + exe 'hi clear '.oid + endfor + endfor +endfun + diff --git a/autoload/rainbow_main.vim b/autoload/rainbow_main.vim new file mode 100644 index 0000000..a68a3ca --- /dev/null +++ b/autoload/rainbow_main.vim @@ -0,0 +1,136 @@ +" Copyright 2013 LuoChen (luochen1990@gmail.com). Licensed under the Apache License 2.0. + +let s:rainbow_conf = { +\ 'guifgs': ['royalblue3', 'darkorange3', 'seagreen3', 'firebrick'], +\ 'ctermfgs': ['lightblue', 'lightyellow', 'lightcyan', 'lightmagenta'], +\ 'guis': [''], +\ 'cterms': [''], +\ 'operators': '_,_', +\ 'contains_prefix': 'TOP', +\ 'parentheses_options': '', +\ 'parentheses': ['start=/(/ end=/)/ fold', 'start=/\[/ end=/\]/ fold', 'start=/{/ end=/}/ fold'], +\ 'separately': { +\ '*': {}, +\ 'markdown': { +\ 'parentheses_options': 'containedin=markdownCode contained', +\ }, +\ 'lisp': { +\ 'guifgs': ['royalblue3', 'darkorange3', 'seagreen3', 'firebrick', 'darkorchid3'], +\ }, +\ 'haskell': { +\ 'parentheses': ['start=/(/ end=/)/ fold', 'start=/\[/ end=/\]/ fold', 'start=/\v\{\ze[^-]/ end=/}/ fold'], +\ }, +\ 'ocaml': { +\ 'parentheses': ['start=/(\ze[^*]/ end=/)/ fold', 'start=/\[/ end=/\]/ fold', 'start=/\[|/ end=/|\]/ fold', 'start=/{/ end=/}/ fold'], +\ }, +\ 'tex': { +\ 'parentheses_options': 'containedin=texDocZone', +\ 'parentheses': ['start=/(/ end=/)/', 'start=/\[/ end=/\]/'], +\ }, +\ 'vim': { +\ 'parentheses_options': 'containedin=vimFuncBody,vimExecute', +\ 'parentheses': ['start=/(/ end=/)/', 'start=/\[/ end=/\]/', 'start=/{/ end=/}/ fold'], +\ }, +\ 'xml': { +\ 'syn_name_prefix': 'xmlRainbow', +\ 'parentheses': ['start=/\v\<\z([-_:a-zA-Z0-9]+)(\s+[-_:a-zA-Z0-9]+(\=("[^"]*"|'."'".'[^'."'".']*'."'".'))?)*\>/ end=## fold'], +\ }, +\ 'xhtml': { +\ 'parentheses': ['start=/\v\<\z([-_:a-zA-Z0-9]+)(\s+[-_:a-zA-Z0-9]+(\=("[^"]*"|'."'".'[^'."'".']*'."'".'))?)*\>/ end=## fold'], +\ }, +\ 'html': { +\ 'parentheses': ['start=/\v\<((script|style|area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)[ >])@!\z([-_:a-zA-Z0-9]+)(\s+[-_:a-zA-Z0-9]+(\=("[^"]*"|'."'".'[^'."'".']*'."'".'|[^ '."'".'"><=`]*))?)*\>/ end=## fold'], +\ }, +\ 'lua': { +\ 'parentheses': ["start=/(/ end=/)/", "start=/{/ end=/}/", "start=/\\v\\[\\ze($|[^[])/ end=/\\]/"], +\ }, +\ 'perl': { +\ 'syn_name_prefix': 'perlBlockFoldRainbow', +\ }, +\ 'php': { +\ 'syn_name_prefix': 'phpBlockRainbow', +\ 'contains_prefix': '', +\ 'parentheses': ['start=/(/ end=/)/ containedin=@htmlPreproc contains=@phpClTop', 'start=/\[/ end=/\]/ containedin=@htmlPreproc contains=@phpClTop', 'start=/{/ end=/}/ containedin=@htmlPreproc contains=@phpClTop', 'start=/\v\<((area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)[ >])@!\z([-_:a-zA-Z0-9]+)(\s+[-_:a-zA-Z0-9]+(\=("[^"]*"|'."'".'[^'."'".']*'."'".'|[^ '."'".'"><=`]*))?)*\>/ end=## fold contains_prefix=TOP'], +\ }, +\ 'stylus': { +\ 'parentheses': ['start=/{/ end=/}/ fold contains=@colorableGroup'], +\ }, +\ 'css': 0, +\ 'sh': 0, +\ 'vimwiki': 0, +\ } +\} + +fun s:eq(x, y) + return type(a:x) == type(a:y) && a:x == a:y +endfun + +fun s:gcd(a, b) + let [a, b, t] = [a:a, a:b, 0] + while b != 0 + let t = b + let b = a % b + let a = t + endwhile + return a +endfun + +fun s:lcm(a, b) + return (a:a / s:gcd(a:a, a:b)) * a:b +endfun + +fun rainbow_main#gen_config(ft) + let g = exists('g:rainbow_conf')? g:rainbow_conf : {} + "echom 'g:rainbow_conf:' string(g) + let s = get(g, 'separately', {}) + "echom 'g:rainbow_conf.separately:' string(s) + let dft_conf = extend(copy(s:rainbow_conf), g) | unlet dft_conf.separately + "echom 'default config options:' string(dft_conf) + let dx_conf = s:rainbow_conf.separately['*'] + "echom 'default star config:' string(dx_conf) + let ds_conf = get(s:rainbow_conf.separately, a:ft, dx_conf) + "echom 'default separately config:' string(ds_conf) + let ux_conf = get(s, '*', ds_conf) + "echom 'user star config:' string(ux_conf) + let us_conf = get(s, a:ft, ux_conf) + "echom 'user separately config:' string(us_conf) + let af_conf = (s:eq(us_conf, 'default') ? ds_conf : us_conf) + "echom 'almost finally config:' string(af_conf) + if s:eq(af_conf, 0) + return 0 + else + let conf = extend(extend({'syn_name_prefix': substitute(a:ft, '\v\A+(\a)', '\u\1', 'g').'Rainbow'}, dft_conf), af_conf) + let conf.cycle = (has('gui_running') || (has('termguicolors') && &termguicolors)) ? s:lcm(len(conf.guifgs), len(conf.guis)) : s:lcm(len(conf.ctermfgs), len(conf.cterms)) + return conf + endif +endfun + +fun rainbow_main#gen_configs(ft) + return filter(map(split(a:ft, '\v\.'), 'rainbow_main#gen_config(v:val)'), 'type(v:val) == type({})') +endfun + +fun rainbow_main#load() + let b:rainbow_confs = rainbow_main#gen_configs(&filetype) + for conf in b:rainbow_confs + call rainbow#syn(conf) + call rainbow#hi(conf) + endfor +endfun + +fun rainbow_main#clear() + if !exists('b:rainbow_confs') | return | endif + for conf in b:rainbow_confs + call rainbow#hi_clear(conf) + call rainbow#syn_clear(conf) + endfor + unlet b:rainbow_confs +endfun + +fun rainbow_main#toggle() + if exists('b:rainbow_confs') + call rainbow_main#clear() + else + call rainbow_main#load() + endif +endfun + diff --git a/base16/schemes/codedark/codedark.yaml b/base16/schemes/codedark/codedark.yaml new file mode 100644 index 0000000..103598c --- /dev/null +++ b/base16/schemes/codedark/codedark.yaml @@ -0,0 +1,18 @@ +scheme: "codedark" +author: "Tomas Iser (https://github.com/tomasiser)" +base00: "1E1E1E" +base01: "262626" +base02: "303030" +base03: "3C3C3C" +base04: "808080" +base05: "D4D4D4" +base06: "E9E9E9" +base07: "FFFFFF" +base08: "D16969" +base09: "B5CEA8" +base0A: "D7BA7D" +base0B: "608B4E" +base0C: "9CDCFE" +base0D: "569CD6" +base0E: "C586C0" +base0F: "CE9178" diff --git a/base16/templates/putty/putty/base16-codedark.reg b/base16/templates/putty/putty/base16-codedark.reg new file mode 100644 index 0000000..5b74f3a --- /dev/null +++ b/base16/templates/putty/putty/base16-codedark.reg @@ -0,0 +1,72 @@ +Windows Registry Editor Version 5.00 + +; Base16 codedark +; schema by Tomas Iser (https://github.com/tomasiser) +[HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\codedark] + +; Default Foreground +"Colour0"="212,212,212" + +; Default Bold Foreground -- equals to non-bold +"Colour1"="212,212,212" + +; Default Background +"Colour2"="30,30,30" + +; Default Bold Background -- equals to non-bold +"Colour3"="30,30,30" + +; Cursor Text -- equals to default background +"Colour4"="30,30,30" + +; Cursor Colour -- equals to default foreground +"Colour5"="212,212,212" + +; ANSI Black +"Colour6"="30,30,30" + +; ANSI Black Bold +"Colour7"="60,60,60" + +; ANSI Red +"Colour8"="209,105,105" + +; ANSI Red Bold +"Colour9"="181,206,168" + +; ANSI Green +"Colour10"="96,139,78" + +; ANSI Green Bold +"Colour11"="38,38,38" + +; ANSI Yellow +"Colour12"="215,186,125" + +; ANSI Yellow Bold +"Colour13"="48,48,48" + +; ANSI Blue +"Colour14"="86,156,214" + +; ANSI Blue Bold +"Colour15"="128,128,128" + +; ANSI Magenta +"Colour16"="197,134,192" + +; ANSI Magenta Bold +"Colour17"="233,233,233" + +; ANSI Cyan +"Colour18"="156,220,254" + +; ANSI Cyan Bold +"Colour19"="206,145,120" + +; ANSI White +"Colour20"="212,212,212" + +; ANSI White Bold +"Colour21"="255,255,255" + diff --git a/base16/templates/shell/scripts/base16-codedark.sh b/base16/templates/shell/scripts/base16-codedark.sh new file mode 100644 index 0000000..ec2c545 --- /dev/null +++ b/base16/templates/shell/scripts/base16-codedark.sh @@ -0,0 +1,123 @@ +#!/bin/sh +# base16-shell (https://github.com/chriskempson/base16-shell) +# Base16 Shell template by Chris Kempson (http://chriskempson.com) +# codedark scheme by Tomas Iser (https://github.com/tomasiser) + +# This script doesn't support linux console (use 'vconsole' template instead) +if [ "${TERM%%-*}" = 'linux' ]; then + return 2>/dev/null || exit 0 +fi + +color00="1E/1E/1E" # Base 00 - Black +color01="D1/69/69" # Base 08 - Red +color02="60/8B/4E" # Base 0B - Green +color03="D7/BA/7D" # Base 0A - Yellow +color04="56/9C/D6" # Base 0D - Blue +color05="C5/86/C0" # Base 0E - Magenta +color06="9C/DC/FE" # Base 0C - Cyan +color07="D4/D4/D4" # Base 05 - White +color08="3C/3C/3C" # Base 03 - Bright Black +color09=$color01 # Base 08 - Bright Red +color10=$color02 # Base 0B - Bright Green +color11=$color03 # Base 0A - Bright Yellow +color12=$color04 # Base 0D - Bright Blue +color13=$color05 # Base 0E - Bright Magenta +color14=$color06 # Base 0C - Bright Cyan +color15="FF/FF/FF" # Base 07 - Bright White +color16="B5/CE/A8" # Base 09 +color17="CE/91/78" # Base 0F +color18="26/26/26" # Base 01 +color19="30/30/30" # Base 02 +color20="80/80/80" # Base 04 +color21="E9/E9/E9" # Base 06 +color_foreground="D4/D4/D4" # Base 05 +color_background="1E/1E/1E" # Base 00 +color_cursor="D4/D4/D4" # Base 05 + +if [ -n "$TMUX" ]; then + # Tell tmux to pass the escape sequences through + # (Source: http://permalink.gmane.org/gmane.comp.terminal-emulators.tmux.user/1324) + printf_template='\033Ptmux;\033\033]4;%d;rgb:%s\033\033\\\033\\' + printf_template_var='\033Ptmux;\033\033]%d;rgb:%s\033\033\\\033\\' + printf_template_custom='\033Ptmux;\033\033]%s%s\033\033\\\033\\' +elif [ "${TERM%%-*}" = "screen" ]; then + # GNU screen (screen, screen-256color, screen-256color-bce) + printf_template='\033P\033]4;%d;rgb:%s\033\\' + printf_template_var='\033P\033]%d;rgb:%s\033\\' + printf_template_custom='\033P\033]%s%s\033\\' +else + printf_template='\033]4;%d;rgb:%s\033\\' + printf_template_var='\033]%d;rgb:%s\033\\' + printf_template_custom='\033]%s%s\033\\' +fi + +# 16 color space +printf $printf_template 0 $color00 +printf $printf_template 1 $color01 +printf $printf_template 2 $color02 +printf $printf_template 3 $color03 +printf $printf_template 4 $color04 +printf $printf_template 5 $color05 +printf $printf_template 6 $color06 +printf $printf_template 7 $color07 +printf $printf_template 8 $color08 +printf $printf_template 9 $color09 +printf $printf_template 10 $color10 +printf $printf_template 11 $color11 +printf $printf_template 12 $color12 +printf $printf_template 13 $color13 +printf $printf_template 14 $color14 +printf $printf_template 15 $color15 + +# 256 color space +printf $printf_template 16 $color16 +printf $printf_template 17 $color17 +printf $printf_template 18 $color18 +printf $printf_template 19 $color19 +printf $printf_template 20 $color20 +printf $printf_template 21 $color21 + +# foreground / background / cursor color +if [ -n "$ITERM_SESSION_ID" ]; then + # iTerm2 proprietary escape codes + printf $printf_template_custom Pg D4D4D4 # forground + printf $printf_template_custom Ph 1E1E1E # background + printf $printf_template_custom Pi D4D4D4 # bold color + printf $printf_template_custom Pj 303030 # selection color + printf $printf_template_custom Pk D4D4D4 # selected text color + printf $printf_template_custom Pl D4D4D4 # cursor + printf $printf_template_custom Pm 1E1E1E # cursor text +else + printf $printf_template_var 10 $color_foreground + printf $printf_template_var 11 $color_background + printf $printf_template_custom 12 ";7" # cursor (reverse video) +fi + +# clean up +unset printf_template +unset printf_template_var +unset color00 +unset color01 +unset color02 +unset color03 +unset color04 +unset color05 +unset color06 +unset color07 +unset color08 +unset color09 +unset color10 +unset color11 +unset color12 +unset color13 +unset color14 +unset color15 +unset color16 +unset color17 +unset color18 +unset color19 +unset color20 +unset color21 +unset color_foreground +unset color_background +unset color_cursor diff --git a/colors/codedark.vim b/colors/codedark.vim new file mode 100644 index 0000000..e67827b --- /dev/null +++ b/colors/codedark.vim @@ -0,0 +1,614 @@ +" Vim Code Dark (color scheme) +" https://github.com/tomasiser/vim-code-dark + +scriptencoding utf-8 + +set background=dark +hi clear +if exists("syntax_on") + syntax reset +endif +let g:colors_name="codedark" + +" Highlighting function (inspiration from https://github.com/chriskempson/base16-vim) +if &t_Co >= 256 + let g:codedark_term256=1 +elseif !exists("g:codedark_term256") + let g:codedark_term256=0 +endif +fun! hi(group, fg, bg, attr, sp) + if !empty(a:fg) + exec "hi " . a:group . " guifg=" . a:fg.gui . " ctermfg=" . (g:codedark_term256 ? a:fg.cterm256 : a:fg.cterm) + endif + if !empty(a:bg) + exec "hi " . a:group . " guibg=" . a:bg.gui . " ctermbg=" . (g:codedark_term256 ? a:bg.cterm256 : a:bg.cterm) + endif + if a:attr != "" + exec "hi " . a:group . " gui=" . a:attr . " cterm=" . a:attr + endif + if !empty(a:sp) + exec "hi " . a:group . " guisp=" . a:sp.gui + endif +endfun + +" ------------------ +" Color definitions: +" ------------------ + +" Terminal colors (base16): +let s:cterm00 = "00" +let s:cterm03 = "08" +let s:cterm05 = "07" +let s:cterm07 = "15" +let s:cterm08 = "01" +let s:cterm0A = "03" +let s:cterm0B = "02" +let s:cterm0C = "06" +let s:cterm0D = "04" +let s:cterm0E = "05" +if exists('base16colorspace') && base16colorspace == "256" + let s:cterm01 = "18" + let s:cterm02 = "19" + let s:cterm04 = "20" + let s:cterm06 = "21" + let s:cterm09 = "16" + let s:cterm0F = "17" +else + let s:cterm01 = "00" + let s:cterm02 = "08" + let s:cterm04 = "07" + let s:cterm06 = "07" + let s:cterm09 = "06" + let s:cterm0F = "03" +endif + +" General appearance colors: +" (some of them may be unused) + +let s:cdNone = {'gui': 'NONE', 'cterm': 'NONE', 'cterm256': 'NONE'} +let s:cdFront = {'gui': '#D4D4D4', 'cterm': s:cterm05, 'cterm256': '188'} +let s:cdBack = {'gui': '#1E1E1E', 'cterm': s:cterm00, 'cterm256': '234'} + +let s:cdTabCurrent = {'gui': '#1E1E1E', 'cterm': s:cterm00, 'cterm256': '234'} +let s:cdTabOther = {'gui': '#2D2D2D', 'cterm': s:cterm01, 'cterm256': '236'} +let s:cdTabOutside = {'gui': '#252526', 'cterm': s:cterm01, 'cterm256': '235'} + +let s:cdLeftDark = {'gui': '#252526', 'cterm': s:cterm01, 'cterm256': '235'} +let s:cdLeftMid = {'gui': '#373737', 'cterm': s:cterm03, 'cterm256': '237'} +let s:cdLeftLight = {'gui': '#3F3F46', 'cterm': s:cterm03, 'cterm256': '238'} + +let s:cdPopupFront = {'gui': '#BBBBBB', 'cterm': s:cterm06, 'cterm256': '250'} +let s:cdPopupBack = {'gui': '#2D2D30', 'cterm': s:cterm01, 'cterm256': '236'} +let s:cdPopupHighlightBlue = {'gui': '#073655', 'cterm': s:cterm0D, 'cterm256': '24'} +let s:cdPopupHighlightGray = {'gui': '#3D3D40', 'cterm': s:cterm03, 'cterm256': '237'} + +let s:cdSplitLight = {'gui': '#898989', 'cterm': s:cterm04, 'cterm256': '245'} +let s:cdSplitDark = {'gui': '#444444', 'cterm': s:cterm03, 'cterm256': '238'} +let s:cdSplitThumb = {'gui': '#424242', 'cterm': s:cterm04, 'cterm256': '238'} + +let s:cdCursorDarkDark = {'gui': '#222222', 'cterm': s:cterm01, 'cterm256': '235'} +let s:cdCursorDark = {'gui': '#51504F', 'cterm': s:cterm03, 'cterm256': '239'} +let s:cdCursorLight = {'gui': '#AEAFAD', 'cterm': s:cterm04, 'cterm256': '145'} +let s:cdSelection = {'gui': '#264F78', 'cterm': s:cterm03, 'cterm256': '24'} +let s:cdLineNumber = {'gui': '#5A5A5A', 'cterm': s:cterm04, 'cterm256': '240'} + +let s:cdDiffRedDark = {'gui': '#4B1818', 'cterm': s:cterm08, 'cterm256': '52'} +let s:cdDiffRedLight = {'gui': '#6F1313', 'cterm': s:cterm08, 'cterm256': '52'} +let s:cdDiffRedLightLight = {'gui': '#FB0101', 'cterm': s:cterm08, 'cterm256': '09'} +let s:cdDiffGreenDark = {'gui': '#373D29', 'cterm': s:cterm0B, 'cterm256': '237'} +let s:cdDiffGreenLight = {'gui': '#4B5632', 'cterm': s:cterm09, 'cterm256': '58'} + +let s:cdSearchCurrent = {'gui': '#4B5632', 'cterm': s:cterm09, 'cterm256': '58'} +let s:cdSearch = {'gui': '#264F78', 'cterm': s:cterm03, 'cterm256': '24'} + +" Syntax colors: + +if !exists("g:codedark_conservative") + let g:codedark_conservative=0 +endif + +" Italicized comments +if !exists("g:codedark_italics") + let g:codedark_italics=0 +endif + +let s:cdGray = {'gui': '#808080', 'cterm': s:cterm04, 'cterm256': '08'} +let s:cdViolet = {'gui': '#646695', 'cterm': s:cterm04, 'cterm256': '60'} +let s:cdBlue = {'gui': '#569CD6', 'cterm': s:cterm0D, 'cterm256': '75'} +let s:cdDarkBlue = {'gui': '#223E55', 'cterm': s:cterm0D, 'cterm256': '73'} +let s:cdLightBlue = {'gui': '#9CDCFE', 'cterm': s:cterm0C, 'cterm256': '117'} +if g:codedark_conservative | let s:cdLightBlue = s:cdFront | endif +let s:cdGreen = {'gui': '#6A9955', 'cterm': s:cterm0B, 'cterm256': '65'} +let s:cdBlueGreen = {'gui': '#4EC9B0', 'cterm': s:cterm0F, 'cterm256': '43'} +let s:cdLightGreen = {'gui': '#B5CEA8', 'cterm': s:cterm09, 'cterm256': '151'} +let s:cdRed = {'gui': '#F44747', 'cterm': s:cterm08, 'cterm256': '203'} +let s:cdOrange = {'gui': '#CE9178', 'cterm': s:cterm0F, 'cterm256': '173'} +let s:cdLightRed = {'gui': '#D16969', 'cterm': s:cterm08, 'cterm256': '167'} +if g:codedark_conservative | let s:cdLightRed = s:cdOrange | endif +let s:cdYellowOrange = {'gui': '#D7BA7D', 'cterm': s:cterm0A, 'cterm256': '179'} +let s:cdYellow = {'gui': '#DCDCAA', 'cterm': s:cterm0A, 'cterm256': '187'} +if g:codedark_conservative | let s:cdYellow = s:cdFront | endif +let s:cdPink = {'gui': '#C586C0', 'cterm': s:cterm0E, 'cterm256': '176'} +if g:codedark_conservative | let s:cdPink = s:cdBlue | endif +let s:cdSilver = {'gui': '#C0C0C0', 'cterm': s:cterm05, 'cterm256': '7'} + +" Vim editor colors +" hi(GROUP, FOREGROUND, BACKGROUND, ATTRIBUTE, SPECIAL) +call hi('Normal', s:cdFront, s:cdBack, 'none', {}) +call hi('ColorColumn', {}, s:cdCursorDarkDark, 'none', {}) +call hi('Cursor', s:cdCursorDark, s:cdCursorLight, 'none', {}) +call hi('CursorLine', {}, s:cdCursorDarkDark, 'none', {}) +call hi('CursorColumn', {}, s:cdCursorDarkDark, 'none', {}) +call hi('Directory', s:cdBlue, s:cdBack, 'none', {}) +call hi('DiffAdd', {}, s:cdDiffGreenLight, 'none', {}) +call hi('DiffChange', {}, s:cdDiffRedDark, 'none', {}) +call hi('DiffDelete', {}, s:cdDiffRedLight, 'none', {}) +call hi('DiffText', {}, s:cdDiffRedLight, 'none', {}) +call hi('EndOfBuffer', s:cdLineNumber, s:cdBack, 'none', {}) +call hi('ErrorMsg', s:cdRed, s:cdBack, 'none', {}) +call hi('VertSplit', s:cdSplitDark, s:cdBack, 'none', {}) +call hi('Folded', s:cdLeftLight, s:cdLeftDark, 'underline', {}) +call hi('FoldColumn', s:cdLineNumber, s:cdBack, 'none', {}) +call hi('SignColumn', {}, s:cdBack, 'none', {}) +call hi('IncSearch', s:cdNone, s:cdSearchCurrent, 'none', {}) +call hi('LineNr', s:cdLineNumber, s:cdBack, 'none', {}) +call hi('CursorLineNr', s:cdPopupFront, s:cdBack, 'none', {}) +call hi('MatchParen', s:cdNone, s:cdCursorDark, 'none', {}) +call hi('ModeMsg', s:cdFront, s:cdLeftDark, 'none', {}) +call hi('MoreMsg', s:cdFront, s:cdLeftDark, 'none', {}) +call hi('NonText', s:cdLineNumber, s:cdBack, 'none', {}) +call hi('Pmenu', s:cdPopupFront, s:cdPopupBack, 'none', {}) +call hi('PmenuSel', s:cdPopupFront, s:cdPopupHighlightBlue, 'none', {}) +call hi('PmenuSbar', {}, s:cdPopupHighlightGray, 'none', {}) +call hi('PmenuThumb', {}, s:cdPopupFront, 'none', {}) +call hi('Question', s:cdBlue, s:cdBack, 'none', {}) +call hi('Search', s:cdNone, s:cdSearch, 'none', {}) +call hi('SpecialKey', s:cdBlue, s:cdNone, 'none', {}) +call hi('StatusLine', s:cdFront, s:cdLeftMid, 'none', {}) +call hi('StatusLineNC', s:cdFront, s:cdLeftDark, 'none', {}) +call hi('TabLine', s:cdFront, s:cdTabOther, 'none', {}) +call hi('TabLineFill', s:cdFront, s:cdTabOutside, 'none', {}) +call hi('TabLineSel', s:cdFront, s:cdTabCurrent, 'none', {}) +call hi('Title', s:cdNone, s:cdNone, 'bold', {}) +call hi('Visual', s:cdNone, s:cdSelection, 'none', {}) +call hi('VisualNOS', s:cdNone, s:cdSelection, 'none', {}) +call hi('WarningMsg', s:cdOrange, s:cdBack, 'none', {}) +call hi('WildMenu', s:cdNone, s:cdSelection, 'none', {}) + +" Legacy groups for official git.vim and diff.vim syntax +hi! link diffAdded DiffAdd +hi! link diffChanged DiffChange +hi! link diffRemoved DiffDelete + +if g:codedark_italics | call hi('Comment', s:cdGreen, {}, 'italic', {}) | else | call hi('Comment', s:cdGreen, {}, 'none', {}) | endif + +call hi('Constant', s:cdBlue, {}, 'none', {}) +call hi('String', s:cdOrange, {}, 'none', {}) +call hi('Character', s:cdOrange, {}, 'none', {}) +call hi('Number', s:cdLightGreen, {}, 'none', {}) +call hi('Boolean', s:cdBlue, {}, 'none', {}) +call hi('Float', s:cdLightGreen, {}, 'none', {}) + +call hi('Identifier', s:cdLightBlue, {}, 'none', {}) +call hi('Function', s:cdYellow, {}, 'none', {}) + +call hi('Statement', s:cdPink, {}, 'none', {}) +call hi('Conditional', s:cdPink, {}, 'none', {}) +call hi('Repeat', s:cdPink, {}, 'none', {}) +call hi('Label', s:cdPink, {}, 'none', {}) +call hi('Operator', s:cdFront, {}, 'none', {}) +call hi('Keyword', s:cdPink, {}, 'none', {}) +call hi('Exception', s:cdPink, {}, 'none', {}) + +call hi('PreProc', s:cdPink, {}, 'none', {}) +call hi('Include', s:cdPink, {}, 'none', {}) +call hi('Define', s:cdPink, {}, 'none', {}) +call hi('Macro', s:cdPink, {}, 'none', {}) +call hi('PreCondit', s:cdPink, {}, 'none', {}) + +call hi('Type', s:cdBlue, {}, 'none', {}) +call hi('StorageClass', s:cdBlue, {}, 'none', {}) +call hi('Structure', s:cdBlue, {}, 'none', {}) +call hi('Typedef', s:cdBlue, {}, 'none', {}) + +call hi('Special', s:cdYellowOrange, {}, 'none', {}) +call hi('SpecialChar', s:cdFront, {}, 'none', {}) +call hi('Tag', s:cdFront, {}, 'none', {}) +call hi('Delimiter', s:cdFront, {}, 'none', {}) +if g:codedark_italics | call hi('SpecialComment', s:cdGreen, {}, 'italic', {}) | else | call hi('SpecialComment', s:cdGreen, {}, 'none', {}) | endif +call hi('Debug', s:cdFront, {}, 'none', {}) + +call hi('Underlined', s:cdNone, {}, 'underline', {}) +call hi("Conceal", s:cdFront, s:cdBack, 'none', {}) + +call hi('Ignore', s:cdFront, {}, 'none', {}) + +call hi('Error', s:cdRed, s:cdBack, 'undercurl', s:cdRed) + +call hi('Todo', s:cdNone, s:cdLeftMid, 'none', {}) + +call hi('SpellBad', s:cdRed, s:cdBack, 'undercurl', s:cdRed) +call hi('SpellCap', s:cdRed, s:cdBack, 'undercurl', s:cdRed) +call hi('SpellRare', s:cdRed, s:cdBack, 'undercurl', s:cdRed) +call hi('SpellLocal', s:cdRed, s:cdBack, 'undercurl', s:cdRed) + + +" Neovim Treesitter: +call hi('TSError', s:cdRed, {}, 'none', {}) +call hi('TSPunctDelimiter', s:cdFront, {}, 'none', {}) +call hi('TSPunctBracket', s:cdFront, {}, 'none', {}) +call hi('TSPunctSpecial', s:cdFront, {}, 'none', {}) +" Constant +call hi('TSConstant', s:cdYellow, {}, 'none', {}) +call hi('TSConstBuiltin', s:cdBlue, {}, 'none', {}) +call hi('TSConstMacro', s:cdBlueGreen, {}, 'none', {}) +call hi('TSStringRegex', s:cdOrange, {}, 'none', {}) +call hi('TSString', s:cdOrange, {}, 'none', {}) +call hi('TSStringEscape', s:cdYellowOrange, {}, 'none', {}) +call hi('TSCharacter', s:cdOrange, {}, 'none', {}) +call hi('TSNumber', s:cdLightGreen, {}, 'none', {}) +call hi('TSBoolean', s:cdBlue, {}, 'none', {}) +call hi('TSFloat', s:cdLightGreen, {}, 'none', {}) +call hi('TSAnnotation', s:cdYellow, {}, 'none', {}) +call hi('TSAttribute', s:cdBlueGreen, {}, 'none', {}) +call hi('TSNamespace', s:cdBlueGreen, {}, 'none', {}) +" Functions +call hi('TSFuncBuiltin', s:cdYellow, {}, 'none', {}) +call hi('TSFunction', s:cdYellow, {}, 'none', {}) +call hi('TSFuncMacro', s:cdYellow, {}, 'none', {}) +call hi('TSParameter', s:cdLightBlue, {}, 'none', {}) +call hi('TSParameterReference', s:cdLightBlue, {}, 'none', {}) +call hi('TSMethod', s:cdYellow, {}, 'none', {}) +call hi('TSField', s:cdLightBlue, {}, 'none', {}) +call hi('TSProperty', s:cdLightBlue, {}, 'none', {}) +call hi('TSConstructor', s:cdBlueGreen, {}, 'none', {}) +" Keywords +call hi('TSConditional', s:cdPink, {}, 'none', {}) +call hi('TSRepeat', s:cdPink, {}, 'none', {}) +call hi('TSLabel', s:cdLightBlue, {}, 'none', {}) +call hi('TSKeyword', s:cdBlue, {}, 'none', {}) +call hi('TSKeywordFunction', s:cdBlue, {}, 'none', {}) +call hi('TSKeywordOperator', s:cdBlue, {}, 'none', {}) +call hi('TSOperator', s:cdFront, {}, 'none', {}) +call hi('TSException', s:cdPink, {}, 'none', {}) +call hi('TSType', s:cdBlueGreen, {}, 'none', {}) +call hi('TSTypeBuiltin', s:cdBlue, {}, 'none', {}) +call hi('TSStructure', s:cdLightBlue, {}, 'none', {}) +call hi('TSInclude', s:cdPink, {}, 'none', {}) +" Variable +call hi('TSVariable', s:cdLightBlue, {}, 'none', {}) +call hi('TSVariableBuiltin', s:cdLightBlue, {}, 'none', {}) +" Text +call hi('TSText', s:cdYellowOrange, {}, 'none', {}) +call hi('TSStrong', s:cdYellowOrange, {}, 'none', {}) +call hi('TSEmphasis', s:cdYellowOrange, {}, 'none', {}) +call hi('TSUnderline', s:cdYellowOrange, {}, 'none', {}) +call hi('TSTitle', s:cdYellowOrange, {}, 'none', {}) +call hi('TSLiteral', s:cdYellowOrange, {}, 'none', {}) +call hi('TSURI', s:cdYellowOrange, {}, 'none', {}) +" Tags +call hi('TSTag', s:cdBlue, {}, 'none', {}) +call hi('TSTagDelimiter', s:cdGray, {}, 'none', {}) + +" Markdown: +call hi('markdownBold', s:cdBlue, {}, 'bold', {}) +call hi('markdownCode', s:cdOrange, {}, 'none', {}) +call hi('markdownRule', s:cdBlue, {}, 'bold', {}) +call hi('markdownCodeDelimiter', s:cdOrange, {}, 'none', {}) +call hi('markdownHeadingDelimiter', s:cdBlue, {}, 'none', {}) +call hi('markdownFootnote', s:cdOrange, {}, 'none', {}) +call hi('markdownFootnoteDefinition', s:cdOrange, {}, 'none', {}) +call hi('markdownUrl', s:cdLightBlue, {}, 'underline', {}) +call hi('markdownLinkText', s:cdOrange, {}, 'none', {}) +call hi('markdownEscape', s:cdYellowOrange, {}, 'none', {}) + +" Asciidoc (for default syntax highlighting) +call hi("asciidocAttributeEntry", s:cdYellowOrange, {}, 'none', {}) +call hi("asciidocAttributeList", s:cdPink, {}, 'none', {}) +call hi("asciidocAttributeRef", s:cdYellowOrange, {}, 'none', {}) +call hi("asciidocHLabel", s:cdBlue, {}, 'bold', {}) +call hi("asciidocListingBlock", s:cdOrange, {}, 'none', {}) +call hi("asciidocMacroAttributes", s:cdYellowOrange, {}, 'none', {}) +call hi("asciidocOneLineTitle", s:cdBlue, {}, 'bold', {}) +call hi("asciidocPassthroughBlock", s:cdBlue, {}, 'none', {}) +call hi("asciidocQuotedMonospaced", s:cdOrange, {}, 'none', {}) +call hi("asciidocTriplePlusPassthrough", s:cdYellow, {}, 'none', {}) +call hi("asciidocMacro", s:cdPink, {}, 'none', {}) +call hi("asciidocAdmonition", s:cdOrange, {}, 'none', {}) +call hi("asciidocQuotedEmphasized", s:cdBlue, {}, 'italic', {}) +call hi("asciidocQuotedEmphasized2", s:cdBlue, {}, 'italic', {}) +call hi("asciidocQuotedEmphasizedItalic", s:cdBlue, {}, 'italic', {}) +hi! link asciidocBackslash Keyword +hi! link asciidocQuotedBold markdownBold +hi! link asciidocQuotedMonospaced2 asciidocQuotedMonospaced +hi! link asciidocQuotedUnconstrainedBold asciidocQuotedBold +hi! link asciidocQuotedUnconstrainedEmphasized asciidocQuotedEmphasized +hi! link asciidocURL markdownUrl + +" JSON: +call hi('jsonKeyword', s:cdLightBlue, {}, 'none', {}) +call hi('jsonEscape', s:cdYellowOrange, {}, 'none', {}) +call hi('jsonNull', s:cdBlue, {}, 'none', {}) +call hi('jsonBoolean', s:cdBlue, {}, 'none', {}) + +" HTML: +call hi('htmlTag', s:cdGray, {}, 'none', {}) +call hi('htmlEndTag', s:cdGray, {}, 'none', {}) +call hi('htmlTagName', s:cdBlue, {}, 'none', {}) +call hi('htmlSpecialTagName', s:cdBlue, {}, 'none', {}) +call hi('htmlArg', s:cdLightBlue, {}, 'none', {}) + +" PHP: +call hi('phpStaticClasses', s:cdBlueGreen, {}, 'none', {}) +call hi('phpMethod', s:cdYellow, {}, 'none', {}) +call hi('phpClass', s:cdBlueGreen, {}, 'none', {}) +call hi('phpFunction', s:cdYellow, {}, 'none', {}) +call hi('phpInclude', s:cdBlue, {}, 'none', {}) +call hi('phpUseClass', s:cdBlueGreen, {}, 'none', {}) +call hi('phpRegion', s:cdBlueGreen, {}, 'none', {}) +call hi('phpMethodsVar', s:cdLightBlue, {}, 'none', {}) + +" CSS: +call hi('cssBraces', s:cdFront, {}, 'none', {}) +call hi('cssInclude', s:cdPink, {}, 'none', {}) +call hi('cssTagName', s:cdYellowOrange, {}, 'none', {}) +call hi('cssClassName', s:cdYellowOrange, {}, 'none', {}) +call hi('cssPseudoClass', s:cdYellowOrange, {}, 'none', {}) +call hi('cssPseudoClassId', s:cdYellowOrange, {}, 'none', {}) +call hi('cssPseudoClassLang', s:cdYellowOrange, {}, 'none', {}) +call hi('cssIdentifier', s:cdYellowOrange, {}, 'none', {}) +call hi('cssProp', s:cdLightBlue, {}, 'none', {}) +call hi('cssDefinition', s:cdLightBlue, {}, 'none', {}) +call hi('cssAttr', s:cdOrange, {}, 'none', {}) +call hi('cssAttrRegion', s:cdOrange, {}, 'none', {}) +call hi('cssColor', s:cdOrange, {}, 'none', {}) +call hi('cssFunction', s:cdOrange, {}, 'none', {}) +call hi('cssFunctionName', s:cdOrange, {}, 'none', {}) +call hi('cssVendor', s:cdOrange, {}, 'none', {}) +call hi('cssValueNumber', s:cdOrange, {}, 'none', {}) +call hi('cssValueLength', s:cdOrange, {}, 'none', {}) +call hi('cssUnitDecorators', s:cdOrange, {}, 'none', {}) +call hi('cssStyle', s:cdLightBlue, {}, 'none', {}) +call hi('cssImportant', s:cdBlue, {}, 'none', {}) + +" JavaScript: +call hi('jsVariableDef', s:cdLightBlue, {}, 'none', {}) +call hi('jsFuncArgs', s:cdLightBlue, {}, 'none', {}) +call hi('jsFuncBlock', s:cdLightBlue, {}, 'none', {}) +call hi('jsRegexpString', s:cdLightRed, {}, 'none', {}) +call hi('jsThis', s:cdBlue, {}, 'none', {}) +call hi('jsOperatorKeyword', s:cdBlue, {}, 'none', {}) +call hi('jsDestructuringBlock', s:cdLightBlue, {}, 'none', {}) +call hi('jsObjectKey', s:cdLightBlue, {}, 'none', {}) +call hi('jsGlobalObjects', s:cdBlueGreen, {}, 'none', {}) +call hi('jsModuleKeyword', s:cdLightBlue, {}, 'none', {}) +call hi('jsClassDefinition', s:cdBlueGreen, {}, 'none', {}) +call hi('jsClassKeyword', s:cdBlue, {}, 'none', {}) +call hi('jsExtendsKeyword', s:cdBlue, {}, 'none', {}) +call hi('jsExportDefault', s:cdPink, {}, 'none', {}) +call hi('jsFuncCall', s:cdYellow, {}, 'none', {}) +call hi('jsObjectValue', s:cdLightBlue, {}, 'none', {}) +call hi('jsParen', s:cdLightBlue, {}, 'none', {}) +call hi('jsObjectProp', s:cdLightBlue, {}, 'none', {}) +call hi('jsIfElseBlock', s:cdLightBlue, {}, 'none', {}) +call hi('jsParenIfElse', s:cdLightBlue, {}, 'none', {}) +call hi('jsSpreadOperator', s:cdLightBlue, {}, 'none', {}) +call hi('jsSpreadExpression', s:cdLightBlue, {}, 'none', {}) + +" Typescript: +call hi('typescriptLabel', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptExceptions', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptBraces', s:cdFront, {}, 'none', {}) +call hi('typescriptEndColons', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptParens', s:cdFront, {}, 'none', {}) +call hi('typescriptDocTags', s:cdBlue, {}, 'none', {}) +call hi('typescriptDocComment', s:cdBlueGreen, {}, 'none', {}) +call hi('typescriptLogicSymbols', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptImport', s:cdPink, {}, 'none', {}) +call hi('typescriptBOM', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptVariableDeclaration', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptVariable', s:cdBlue, {}, 'none', {}) +call hi('typescriptExport', s:cdPink, {}, 'none', {}) +call hi('typescriptAliasDeclaration', s:cdBlueGreen, {}, 'none', {}) +call hi('typescriptAliasKeyword', s:cdBlue, {}, 'none', {}) +call hi('typescriptClassName', s:cdBlueGreen, {}, 'none', {}) +call hi('typescriptAccessibilityModifier', s:cdBlue, {}, 'none', {}) +call hi('typescriptOperator', s:cdBlue, {}, 'none', {}) +call hi('typescriptArrowFunc', s:cdBlue, {}, 'none', {}) +call hi('typescriptMethodAccessor', s:cdBlue, {}, 'none', {}) +call hi('typescriptMember', s:cdYellow, {}, 'none', {}) +call hi('typescriptTypeReference', s:cdBlueGreen, {}, 'none', {}) +call hi('typescriptDefault', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptTemplateSB', s:cdYellowOrange, {}, 'none', {}) +call hi('typescriptArrowFuncArg', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptParamImpl', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptFuncComma', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptCastKeyword', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptCall', s:cdBlue, {}, 'none', {}) +call hi('typescriptCase', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptReserved', s:cdPink, {}, 'none', {}) +call hi('typescriptDefault', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptDecorator', s:cdYellow, {}, 'none', {}) +call hi('typescriptPredefinedType', s:cdBlueGreen, {}, 'none', {}) +call hi('typescriptClassHeritage', s:cdBlueGreen, {}, 'none', {}) +call hi('typescriptClassExtends', s:cdBlue, {}, 'none', {}) +call hi('typescriptClassKeyword', s:cdBlue, {}, 'none', {}) +call hi('typescriptBlock', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptDOMDocProp', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptTemplateSubstitution', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptClassBlock', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptFuncCallArg', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptIndexExpr', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptConditionalParen', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptArray', s:cdYellow, {}, 'none', {}) +call hi('typescriptES6SetProp', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptObjectLiteral', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptTypeParameter', s:cdBlueGreen, {}, 'none', {}) +call hi('typescriptEnumKeyword', s:cdBlue, {}, 'none', {}) +call hi('typescriptEnum', s:cdBlueGreen, {}, 'none', {}) +call hi('typescriptLoopParen', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptParenExp', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptModule', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptAmbientDeclaration', s:cdBlue, {}, 'none', {}) +call hi('typescriptModule', s:cdBlue, {}, 'none', {}) +call hi('typescriptFuncTypeArrow', s:cdBlue, {}, 'none', {}) +call hi('typescriptInterfaceHeritage', s:cdBlueGreen, {}, 'none', {}) +call hi('typescriptInterfaceName', s:cdBlueGreen, {}, 'none', {}) +call hi('typescriptInterfaceKeyword', s:cdBlue, {}, 'none', {}) +call hi('typescriptInterfaceExtends', s:cdBlue, {}, 'none', {}) +call hi('typescriptGlobal', s:cdBlueGreen, {}, 'none', {}) +call hi('typescriptAsyncFuncKeyword', s:cdBlue, {}, 'none', {}) +call hi('typescriptFuncKeyword', s:cdBlue, {}, 'none', {}) +call hi('typescriptGlobalMethod', s:cdYellow, {}, 'none', {}) +call hi('typescriptPromiseMethod', s:cdYellow, {}, 'none', {}) + +" XML: +call hi('xmlTag', s:cdBlueGreen, {}, 'none', {}) +call hi('xmlTagName', s:cdBlueGreen, {}, 'none', {}) +call hi('xmlEndTag', s:cdBlueGreen, {}, 'none', {}) + +" Ruby: +call hi('rubyClassNameTag', s:cdBlueGreen, {}, 'none', {}) +call hi('rubyClassName', s:cdBlueGreen, {}, 'none', {}) +call hi('rubyModuleName', s:cdBlueGreen, {}, 'none', {}) +call hi('rubyConstant', s:cdBlueGreen, {}, 'none', {}) + +" Golang: +call hi('goPackage', s:cdBlue, {}, 'none', {}) +call hi('goImport', s:cdBlue, {}, 'none', {}) +call hi('goVar', s:cdBlue, {}, 'none', {}) +call hi('goConst', s:cdBlue, {}, 'none', {}) +call hi('goStatement', s:cdPink, {}, 'none', {}) +call hi('goType', s:cdBlueGreen, {}, 'none', {}) +call hi('goSignedInts', s:cdBlueGreen, {}, 'none', {}) +call hi('goUnsignedInts', s:cdBlueGreen, {}, 'none', {}) +call hi('goFloats', s:cdBlueGreen, {}, 'none', {}) +call hi('goComplexes', s:cdBlueGreen, {}, 'none', {}) +call hi('goBuiltins', s:cdYellow, {}, 'none', {}) +call hi('goBoolean', s:cdBlue, {}, 'none', {}) +call hi('goPredefinedIdentifiers', s:cdBlue, {}, 'none', {}) +call hi('goTodo', s:cdGreen, {}, 'none', {}) +call hi('goDeclaration', s:cdBlue, {}, 'none', {}) +call hi('goDeclType', s:cdBlue, {}, 'none', {}) +call hi('goTypeDecl', s:cdBlue, {}, 'none', {}) +call hi('goTypeName', s:cdBlueGreen, {}, 'none', {}) +call hi('goVarAssign', s:cdLightBlue, {}, 'none', {}) +call hi('goVarDefs', s:cdLightBlue, {}, 'none', {}) +call hi('goReceiver', s:cdFront, {}, 'none', {}) +call hi('goReceiverType', s:cdFront, {}, 'none', {}) +call hi('goFunctionCall', s:cdYellow, {}, 'none', {}) +call hi('goMethodCall', s:cdYellow, {}, 'none', {}) +call hi('goSingleDecl', s:cdLightBlue, {}, 'none', {}) + +" Python: +call hi('pythonStatement', s:cdBlue, {}, 'none', {}) +call hi('pythonOperator', s:cdBlue, {}, 'none', {}) +call hi('pythonException', s:cdPink, {}, 'none', {}) +call hi('pythonExClass', s:cdBlueGreen, {}, 'none', {}) +call hi('pythonBuiltinObj', s:cdLightBlue, {}, 'none', {}) +call hi('pythonBuiltinType', s:cdBlueGreen, {}, 'none', {}) +call hi('pythonBoolean', s:cdBlue, {}, 'none', {}) +call hi('pythonNone', s:cdBlue, {}, 'none', {}) +call hi('pythonTodo', s:cdBlue, {}, 'none', {}) +call hi('pythonClassVar', s:cdBlue, {}, 'none', {}) +call hi('pythonClassDef', s:cdBlueGreen, {}, 'none', {}) + +" TeX: +call hi('texStatement', s:cdBlue, {}, 'none', {}) +call hi('texBeginEnd', s:cdYellow, {}, 'none', {}) +call hi('texBeginEndName', s:cdLightBlue, {}, 'none', {}) +call hi('texOption', s:cdLightBlue, {}, 'none', {}) +call hi('texBeginEndModifier', s:cdLightBlue, {}, 'none', {}) +call hi('texDocType', s:cdPink, {}, 'none', {}) +call hi('texDocTypeArgs', s:cdLightBlue, {}, 'none', {}) + +" Git: +call hi('gitcommitHeader', s:cdGray, {}, 'none', {}) +call hi('gitcommitOnBranch', s:cdGray, {}, 'none', {}) +call hi('gitcommitBranch', s:cdPink, {}, 'none', {}) +call hi('gitcommitComment', s:cdGray, {}, 'none', {}) +call hi('gitcommitSelectedType', s:cdGreen, {}, 'none', {}) +call hi('gitcommitSelectedFile', s:cdGreen, {}, 'none', {}) +call hi('gitcommitDiscardedType', s:cdRed, {}, 'none', {}) +call hi('gitcommitDiscardedFile', s:cdRed, {}, 'none', {}) +call hi('gitcommitOverflow', s:cdRed, {}, 'none', {}) +call hi('gitcommitSummary', s:cdPink, {}, 'none', {}) +call hi('gitcommitBlank', s:cdPink, {}, 'none', {}) + +" Lua: +call hi('luaFuncCall', s:cdYellow, {}, 'none', {}) +call hi('luaFuncArgName', s:cdLightBlue, {}, 'none', {}) +call hi('luaFuncKeyword', s:cdPink, {}, 'none', {}) +call hi('luaLocal', s:cdPink, {}, 'none', {}) +call hi('luaBuiltIn', s:cdBlue, {}, 'none', {}) + + +" SH: +call hi('shDeref', s:cdLightBlue, {}, 'none', {}) +call hi('shVariable', s:cdLightBlue, {}, 'none', {}) + +" SQL: +call hi('sqlKeyword', s:cdPink, {}, 'none', {}) +call hi('sqlFunction', s:cdYellowOrange, {}, 'none', {}) +call hi('sqlOperator', s:cdPink, {}, 'none', {}) + +" YAML: +call hi('yamlKey', s:cdBlue, {}, 'none', {}) +call hi('yamlConstant', s:cdBlue, {}, 'none', {}) + +" C++: +call hi('CTagsClass', s:cdBlueGreen, {}, 'none', {}) +call hi('CTagsStructure', s:cdBlueGreen, {}, 'none', {}) +call hi('CTagsNamespace', s:cdBlueGreen, {}, 'none', {}) +call hi('CTagsGlobalVariable', s:cdBlueGreen, {}, 'none', {}) +call hi('CTagsDefinedName ', s:cdBlue, {}, 'none', {}) +highlight def link CTagsFunction Function +highlight def link CTagsMember Identifier + +" C++ color_coded +call hi('StructDecl', s:cdBlueGreen, {}, 'none', {}) +call hi('UnionDecl', s:cdBlueGreen, {}, 'none', {}) +call hi('ClassDecl', s:cdBlueGreen, {}, 'none', {}) +call hi('TypeRef', s:cdBlueGreen, {}, 'none', {}) +call hi('TypedefDecl', s:cdBlueGreen, {}, 'none', {}) +call hi('TypeAliasDecl', s:cdBlueGreen, {}, 'none', {}) +call hi('EnumDecl', s:cdBlueGreen, {}, 'none', {}) +call hi('TemplateTypeParameter', s:cdBlueGreen, {}, 'none', {}) +call hi('TypeAliasTemplateDecl', s:cdBlueGreen, {}, 'none', {}) +call hi('ClassTemplate', s:cdBlueGreen, {}, 'none', {}) +call hi('ClassTemplatePartialSpecialization', s:cdBlueGreen, {}, 'none', {}) +call hi('FunctionTemplate', s:cdBlueGreen, {}, 'none', {}) +call hi('TemplateRef', s:cdBlueGreen, {}, 'none', {}) +call hi('TemplateTemplateParameter', s:cdBlueGreen, {}, 'none', {}) +call hi('UsingDeclaration', s:cdBlueGreen, {}, 'none', {}) +call hi('MemberRef', s:cdLightBlue, {}, 'italic', {}) +call hi('MemberRefExpr', s:cdYellow, {}, 'italic', {}) +call hi('Namespace', s:cdSilver, {}, 'none', {}) +call hi('NamespaceRef', s:cdSilver, {}, 'none', {}) +call hi('NamespaceAlias', s:cdSilver, {}, 'none', {}) + +" C++ lsp-cxx-highlight +call hi('LspCxxHlSymClass', s:cdBlueGreen, {}, 'none', {}) +call hi('LspCxxHlSymStruct', s:cdBlueGreen, {}, 'none', {}) +call hi('LspCxxHlSymEnum', s:cdBlueGreen, {}, 'none', {}) +call hi('LspCxxHlSymTypeAlias', s:cdBlueGreen, {}, 'none', {}) +call hi('LspCxxHlSymTypeParameter', s:cdBlueGreen, {}, 'none', {}) +call hi('LspCxxHlSymConcept', s:cdBlueGreen, {}, 'italic', {}) +call hi('LspCxxHlSymNamespace', s:cdSilver, {}, 'none', {}) + +" Coc Explorer: +call hi('CocHighlightText', {}, s:cdSelection, 'none', {}) +call hi('CocExplorerIndentLine', s:cdCursorDark, {}, 'none', {}) + +" nvim-cmp +call hi('CmpItemAbbrDeprecated', s:cdGray, {}, 'strikethrough', {}) +call hi('CmpItemAbbrMatch', s:cdBlue, {}, 'none', {}) +call hi('CmpItemAbbrMatchFuzzy', s:cdBlue, {}, 'none', {}) +call hi('CmpItemKindVariable', s:cdLightBlue, {}, 'none', {}) +call hi('CmpItemKindInterface', s:cdLightBlue, {}, 'none', {}) +call hi('CmpItemKindText', s:cdLightBlue, {}, 'none', {}) +call hi('CmpItemKindFunction', s:cdPink, {}, 'none', {}) +call hi('CmpItemKindMethod ', s:cdPink, {}, 'none', {}) +call hi('CmpItemKindKeyword', s:cdFront, {}, 'none', {}) +call hi('CmpItemKindProperty', s:cdFront, {}, 'none', {}) +call hi('CmpItemKindUnit', s:cdFront, {}, 'none', {}) diff --git a/doc/tags b/doc/tags new file mode 100644 index 0000000..18cef38 --- /dev/null +++ b/doc/tags @@ -0,0 +1,100 @@ +Utl-chgOverview utl_usr.txt /*Utl-chgOverview* +utl utl_usr.txt /*utl* +utl-absDontCombine utl_usr.txt /*utl-absDontCombine* +utl-btSample utl_usr.txt /*utl-btSample* +utl-changes utl_usr.txt /*utl-changes* +utl-chgAddFootRefs utl_usr.txt /*utl-chgAddFootRefs* +utl-chgCacheGone utl_usr.txt /*utl-chgCacheGone* +utl-chgFragAW utl_usr.txt /*utl-chgFragAW* +utl-chgGuGone utl_usr.txt /*utl-chgGuGone* +utl-chgLineNegative utl_usr.txt /*utl-chgLineNegative* +utl-chgNetworkFile utl_usr.txt /*utl-chgNetworkFile* +utl-chgNewFragConv utl_usr.txt /*utl-chgNewFragConv* +utl-chgNewGenMTHdl utl_usr.txt /*utl-chgNewGenMTHdl* +utl-chgNewHttpAccess utl_usr.txt /*utl-chgNewHttpAccess* +utl-chgNewMailScheme utl_usr.txt /*utl-chgNewMailScheme* +utl-chgNewOperand utl_usr.txt /*utl-chgNewOperand* +utl-chgNewOperators utl_usr.txt /*utl-chgNewOperators* +utl-chgNewVerbose utl_usr.txt /*utl-chgNewVerbose* +utl-chgScmIf utl_usr.txt /*utl-chgScmIf* +utl-chgUI utl_usr.txt /*utl-chgUI* +utl-chgVarNames utl_usr.txt /*utl-chgVarNames* +utl-chgadded utl_usr.txt /*utl-chgadded* +utl-chgchanged utl_usr.txt /*utl-chgchanged* +utl-chghighl utl_usr.txt /*utl-chghighl* +utl-chgincompat utl_usr.txt /*utl-chgincompat* +utl-config utl_usr.txt /*utl-config* +utl-configIntExt utl_usr.txt /*utl-configIntExt* +utl-configcfg utl_usr.txt /*utl-configcfg* +utl-configopt utl_usr.txt /*utl-configopt* +utl-createFiles utl_usr.txt /*utl-createFiles* +utl-credits utl_usr.txt /*utl-credits* +utl-displayHtml utl_usr.txt /*utl-displayHtml* +utl-efmeddep utl_usr.txt /*utl-efmeddep* +utl-fbcallmt utl_usr.txt /*utl-fbcallmt* +utl-fixed utl_usr.txt /*utl-fixed* +utl-fixedBackForth utl_usr.txt /*utl-fixedBackForth* +utl-getStarted utl_usr.txt /*utl-getStarted* +utl-hotKey utl_usr.txt /*utl-hotKey* +utl-infoDir utl_usr.txt /*utl-infoDir* +utl-intro utl_usr.txt /*utl-intro* +utl-knownbugs utl_usr.txt /*utl-knownbugs* +utl-lookupWord utl_usr.txt /*utl-lookupWord* +utl-multiLineURLs utl_usr.txt /*utl-multiLineURLs* +utl-opt_hlighturls utl_usr.txt /*utl-opt_hlighturls* +utl-opt_verbose utl_usr.txt /*utl-opt_verbose* +utl-plugin utl_usr.txt /*utl-plugin* +utl-privateScmHdl utl_usr.txt /*utl-privateScmHdl* +utl-projectManagement utl_usr.txt /*utl-projectManagement* +utl-protvsftype utl_usr.txt /*utl-protvsftype* +utl-smartSamples utl_usr.txt /*utl-smartSamples* +utl-start utl_usr.txt /*utl-start* +utl-startprog utl_usr.txt /*utl-startprog* +utl-tildeSupport utl_usr.txt /*utl-tildeSupport* +utl-tipsdetails utl_usr.txt /*utl-tipsdetails* +utl-todo utl_usr.txt /*utl-todo* +utl-tutCopyFileName utl_usr.txt /*utl-tutCopyFileName* +utl-tutCopyLink utl_usr.txt /*utl-tutCopyLink* +utl-tutOtherCmds utl_usr.txt /*utl-tutOtherCmds* +utl-tutUI utl_usr.txt /*utl-tutUI* +utl-tutVimscript utl_usr.txt /*utl-tutVimscript* +utl-tutVisUrls utl_usr.txt /*utl-tutVisUrls* +utl-tutcreateurls utl_usr.txt /*utl-tutcreateurls* +utl-tutdrivesshares utl_usr.txt /*utl-tutdrivesshares* +utl-tutextfrag utl_usr.txt /*utl-tutextfrag* +utl-tutfolders utl_usr.txt /*utl-tutfolders* +utl-tutfoot utl_usr.txt /*utl-tutfoot* +utl-tutfootfrag utl_usr.txt /*utl-tutfootfrag* +utl-tutfooturl utl_usr.txt /*utl-tutfooturl* +utl-tutforthback utl_usr.txt /*utl-tutforthback* +utl-tutfrags utl_usr.txt /*utl-tutfrags* +utl-tutfragsdref utl_usr.txt /*utl-tutfragsdref* +utl-tutfragsintro utl_usr.txt /*utl-tutfragsintro* +utl-tutfragsline utl_usr.txt /*utl-tutfragsline* +utl-tutfragsnonfile utl_usr.txt /*utl-tutfragsnonfile* +utl-tutfragsrel utl_usr.txt /*utl-tutfragsrel* +utl-tutfragsyn utl_usr.txt /*utl-tutfragsyn* +utl-tutmisc utl_usr.txt /*utl-tutmisc* +utl-tutmtypes utl_usr.txt /*utl-tutmtypes* +utl-tutorial utl_usr.txt /*utl-tutorial* +utl-tutpdffrag utl_usr.txt /*utl-tutpdffrag* +utl-tutrelabs utl_usr.txt /*utl-tutrelabs* +utl-tutscmhttp utl_usr.txt /*utl-tutscmhttp* +utl-tutscmhttpwget utl_usr.txt /*utl-tutscmhttpwget* +utl-tutscmmail utl_usr.txt /*utl-tutscmmail* +utl-tutscmoth utl_usr.txt /*utl-tutscmoth* +utl-tutscmothnonstd utl_usr.txt /*utl-tutscmothnonstd* +utl-tutscmothstd utl_usr.txt /*utl-tutscmothstd* +utl-tuttypeurl utl_usr.txt /*utl-tuttypeurl* +utl-tutverbosemode utl_usr.txt /*utl-tutverbosemode* +utl-tutwordfrag utl_usr.txt /*utl-tutwordfrag* +utl-usagePatterns utl_usr.txt /*utl-usagePatterns* +utl-useOrganizeIdeas utl_usr.txt /*utl-useOrganizeIdeas* +utl-useSourceCode utl_usr.txt /*utl-useSourceCode* +utl-usedesktop utl_usr.txt /*utl-usedesktop* +utl-vimsBackup utl_usr.txt /*utl-vimsBackup* +utl-vimsCompile utl_usr.txt /*utl-vimsCompile* +utl-vimsHeuristicUrl utl_usr.txt /*utl-vimsHeuristicUrl* +utl-writeUrls utl_usr.txt /*utl-writeUrls* +utl_chgcfgscm utl_usr.txt /*utl_chgcfgscm* +utl_usr.txt utl_usr.txt /*utl_usr.txt* diff --git a/ftplugin/java_getset.vim b/ftplugin/java_getset.vim new file mode 100644 index 0000000..6a906e9 --- /dev/null +++ b/ftplugin/java_getset.vim @@ -0,0 +1,871 @@ +" Vim filetype plugin file for adding getter/setter methods +" Language: Java +" Maintainer: Pete Kazmier (pete-vim AT kazmier DOT com) +" Last Change: 2002 Nov 21 +" Revision: $Id: java_getset.vim,v 1.10 2002/12/02 15:14:31 kaz Exp $ +" Credit: +" - Based on jcommenter.vim by Kalle Björklid which is the backslash key by +" default '\'. This can also be configured via a variable (see below). +" +" p (or JavagetsetInsertGetterSetter) +" Inserts a getter/setter for the property on the current line, or +" the range of properties specified via a visual block. User is +" prompted for choice. +" +" g (or JavagetsetInsertGetterOnly) +" Inserts a getter for the property on the current line, or the +" range of properties specified via a visual block. User is not +" prompted. +" +" s (or JavagetsetInsertSetterOnly) +" Inserts a getter for the property on the current line, or the +" range of properties specified via a visual block. User is not +" prompted. +" +" b (or JavagetsetInsertBothGetterSetter) +" Inserts both a getter and setter for the property on the current +" line, or the range of properties specified via a visual block. +" User is not prompted. +" +" If you want to define your own mapping, you can map whatever you want +" to JavagetsetInsertGetterSetter (or any of the other s +" defined above). For example, +" +" map JavagetsetInsertGetterSetter +" +" When you define your own mapping, the default mapping does not get +" set, only the mapping you specify. +" +" Variables: +" The following variables allow you to customize the behavior of this +" script so that you do not need to make changes directly to the script. +" These variables can be set in your vimrc. +" +" no_plugin_maps +" Setting this variable will disable all key mappings defined by any +" of your plugins (if the plugin writer adhered to the standard +" convention documented in the scripting section of the VIM manual) +" including this one. +" +" no_java_maps +" Setting this variable will disable all key mappings defined by any +" java specific plugin including this one. +" +" maplocalleader +" By default, the key mappings defined by this script use +" which is the backslash character by default. You can +" change this by setting this variable to a different key. For +" example, if you want to use the comma-key, you can add this line to +" your vimrc: +" +" let maplocalleader = ',' +" +" b:javagetset_insertPosition +" This variable determines the location where the getter and/or setter +" will be inserted. Currently, three positions have been defined: +" +" 0 - insert at the end of the class (default) +" 1 - insert before the current line / block +" 2 - insert after the current line / block +" +" b:javagetset_getterTemplate +" b:javagetset_setterTemplate +" b:javagetset_getterArrayTemplate +" b:javagetset_setterArrayTemplate +" These variables determine the text that will be inserted for a +" getter, setter, array-based getter, and array-based setter +" respectively. The templates may contain the following placeholders +" which will be substituted by their appropriate values at insertion +" time: +" +" %type% Java type of the property +" %varname% The name of the property +" %funcname% The method name ("getXzy" or "setXzy") +" %modifiers% "public" followed by "static" if the property is static +" +" For example, if you wanted to set the default getter template so +" that it would produce the following block of code for a property +" defined as "public static String name": +" +" /** +" * Get name. +" * @return name as String +" */ +" public static String getName() { return name; } +" +" This block of code can be produced by adding the following variable +" definition to your vimrc file. +" +" let b:javagetset_getterTemplate = +" \ "\n" . +" \ "/**\n" . +" \ " * Get %varname%.\n" . +" \ " * @return %varname% as %type%.\n" . +" \ " */\n" . +" \ "%modifiers% %type% %funcname%() { return %varname%; }" +" +" The defaults for these variables are defined in the script. For +" both the getterTemplate and setterTemplate, there is a corresponding +" array-baded template that is invoked if a property is array-based. +" This allows you to set indexed-based getters/setters if you desire. +" This is the default behavior. +" +" +" INSTALLATION +" 1. Copy the script to your ${HOME}/.vim/ftplugins directory and make +" sure its named "java_getset.vim" or "java_something.vim" where +" "something" can be anything you want. +" +" 2. (Optional) Customize the mapping and/or templates. You can create +" your own filetype plugin (just make sure its loaded before this one) +" and set the variables in there (i.e. ${HOME}/.vim/ftplugin/java.vim) +" +" ======================================================================= +" +" NOTE: +" This is my very first VIM script. I read all of the documentation, and +" have tried to follow the conventions outlined there; however, I may have +" missed some so please bear with me. + +" Only do this when not done yet for this buffer +if exists("b:did_javagetset_ftplugin") + finish +endif +let b:did_javagetset_ftplugin = 1 + +" Make sure we are in vim mode +let s:save_cpo = &cpo +set cpo&vim + +" TEMPLATE SECTION: +" The templates can use the following placeholders which will be replaced +" with appropriate values when the template is invoked: +" +" %type% Java type of the property +" %varname% The name of the property +" %funcname% The method name ("getXzy" or "setXzy") +" %modifiers% "public" followed by "static" if the property is static +" +" The templates consist of a getter and setter template. In addition, +" there are also templates for array-based properties. These are defined +" below. +" +" Getter Templates (non-array and array-based) +if exists("b:javagetset_getterTemplate") + let s:javagetset_getterTemplate = b:javagetset_getterTemplate +else + let s:javagetset_getterTemplate = + \ "\n" . + \ "/**\n" . + \ " * Get %varname%.\n" . + \ " *\n" . + \ " * @return %varname% as %type%.\n" . + \ " */\n" . + \ "%modifiers% %type% %funcname%()\n" . + \ "{\n" . + \ " return %varname%;\n" . + \ "}" +endif + +if exists("b:javagetset_getterArrayTemplate") + let s:javagetset_getterArrayTemplate = b:javagetset_getterArrayTemplate +else + let s:javagetset_getterArrayTemplate = + \ "\n" . + \ "/**\n" . + \ " * Get %varname%.\n" . + \ " *\n" . + \ " * @return %varname% as %type%[].\n" . + \ " */\n" . + \ "%modifiers% %type%[] %funcname%()\n" . + \ "{\n" . + \ " return %varname%;\n" . + \ "}\n" . + \ "\n" . + \ "/**\n" . + \ " * Get %varname% element at specified index.\n" . + \ " *\n" . + \ " * @param index the index.\n" . + \ " * @return %varname% at index as %type%.\n" . + \ " */\n" . + \ "%modifiers% %type% %funcname%(int index)\n" . + \ "{\n" . + \ " return %varname%[index];\n" . + \ "}" +endif + +" Setter Templates (non-array and array-based) +if exists("b:javagetset_setterTemplate") + let s:javagetset_setterTemplate = b:javagetset_setterTemplate +else + let s:javagetset_setterTemplate = + \ "\n" . + \ "/**\n" . + \ " * Set %varname%.\n" . + \ " *\n" . + \ " * @param %varname% the value to set.\n" . + \ " */\n" . + \ "%modifiers% void %funcname%(%type% %varname%)\n" . + \ "{\n" . + \ " this.%varname% = %varname%;\n" . + \ "}" +endif + +if exists("b:javagetset_setterArrayTemplate") + let s:javagetset_setterArrayTemplate = b:javagetset_setterArrayTemplate +else + let s:javagetset_setterArrayTemplate = + \ "\n" . + \ "/**\n" . + \ " * Set %varname%.\n" . + \ " *\n" . + \ " * @param %varname% the value to set.\n" . + \ " */\n" . + \ "%modifiers% void %funcname%(%type%[] %varname%)\n" . + \ "{\n" . + \ " this.%varname% = %varname%;\n" . + \ "}\n" . + \ "\n" . + \ "/**\n" . + \ " * Set %varname% at the specified index.\n" . + \ " *\n" . + \ " * @param %varname% the value to set.\n" . + \ " * @param index the index.\n" . + \ " */\n" . + \ "%modifiers% void %funcname%(%type% %varname%, int index)\n" . + \ "{\n" . + \ " this.%varname%[index] = %varname%;\n" . + \ "}" +endif + +" Position where methods are inserted. The possible values are: +" 0 - end of class +" 1 = above block / line +" 2 = below block / line +if exists("b:javagetset_insertPosition") + let s:javagetset_insertPosition = b:javagetset_insertPosition +else + let s:javagetset_insertPosition = 0 +endif + +" Script local variables that are used like globals. +" +" If set to 1, the user has requested that getters be inserted +let s:getter = 0 + +" If set to 1, the user has requested that setters be inserted +let s:setter = 0 + +" If set to 1, the property was a static property (i.e. static methods) +let s:static = 0 + +" If set to 1, the property was declared final (i.e. doesn't need a setter) +let s:final = 0 + +" If set to 1, use the array based templates +let s:isarray = 0 + +" The current indentation level of the property (i.e. used for the methods) +let s:indent = '' + +" The list of property modifiers +let s:modifiers = '' + +" The type of the property +let s:vartype = '' + +" If the property is an array, the []'s will be stored here +let s:vararray = '' + +" The name of the property +let s:varname = '' + +" The function name of the property (capitalized varname) +let s:funcname = '' + +" The first line of the block selected +let s:firstline = 0 + +" The last line of the block selected +let s:lastline = 0 + +" Regular expressions used to match property statements +let s:javaname = '[a-zA-Z_$][a-zA-Z0-9_$]*' +let s:brackets = '\(\s*\(\[\s*\]\)\)\=' +let s:modifier = '\(private\|protected\|public\|volatile\|static\|final\)' +let s:variable = '\(\s*\)\(\(' . s:modifier . '\s\+\)*\)\(' . s:javaname . '\)' . s:brackets . '\s\+\(' . s:javaname . '\)\s*\(;\|=[^;]\+;\)' + +" The main entry point. This function saves the current position of the +" cursor without the use of a mark (see note below) Then the selected +" region is processed for properties. +" +" FIXME: I wanted to avoid clobbering any marks in use by the user, so I +" manually try to save the current position and restore it. The only drag +" is that the position isn't restored correctly if the user opts to insert +" the methods ABOVE the current position. Using a mark would solve this +" problem as they are automatically adjusted. Perhaps I just haven't +" found it yet, but I wish that VIM would let a scripter save a mark and +" then restore it later. Why? In this case, I'd be able to use a mark +" safely without clobbering any user marks already set. First, I'd save +" the contents of the mark, then set the mark, do my stuff, jump back to +" the mark, and finally restore the mark to what the user may have had +" previously set. Seems weird to me that you can't save/restore marks. +" +if !exists("*s:InsertGetterSetter") + function s:InsertGetterSetter(flag) range + let restorepos = line(".") . "normal!" . virtcol(".") . "|" + let s:firstline = a:firstline + let s:lastline = a:lastline + + if s:DetermineAction(a:flag) + call s:ProcessRegion(s:GetRangeAsString(a:firstline, a:lastline)) + endif + + execute restorepos + + " Not sure why I need this but if I don't have it, the drawing on the + " screen is messed up from my insert. Perhaps I'm doing something + " wrong, but it seems to me that I probably shouldn't be calling + " redraw. + redraw! + + endfunction +endif + +" Set the appropriate script variables (s:getter and s:setter) to +" appropriate values based on the flag that was selected. The current +" valid values for flag are: 'g' for getter, 's' for setter, 'b' for both +" getter/setter, and 'a' for ask/prompt user. +if !exists("*s:DetermineAction") + function s:DetermineAction(flag) + + if a:flag == 'g' + let s:getter = 1 + let s:setter = 0 + + elseif a:flag == 's' + let s:getter = 0 + let s:setter = 1 + + elseif a:flag == 'b' + let s:getter = 1 + let s:setter = 1 + + elseif a:flag == 'a' + return s:DetermineAction(s:AskUser()) + + else + return 0 + endif + + return 1 + endfunction +endif + +" Ask the user what they want to insert, getter, setter, or both. Return +" an appropriate flag for use with s:DetermineAction, or return 0 if the +" user cancelled out. +if !exists("*s:AskUser") + function s:AskUser() + let choice = + \ confirm("What do you want to insert?", + \ "&Getter\n&Setter\n&Both", 3) + + if choice == 0 + return 0 + + elseif choice == 1 + return 'g' + + elseif choice == 2 + return 's' + + elseif choice == 3 + return 'b' + + else + return 0 + + endif + endfunction +endif + +" Gets a range specified by a first and last line and returns it as a +" single string that will eventually be parsed using regular expresssions. +" For example, if the following lines were selected: +" +" // Age +" private int age; +" +" // Name +" private static String name; +" +" Then, the following string would be returned: +" +" // Age private int age; // Name priavte static String name; +" +if !exists("*s:GetRangeAsString") + function s:GetRangeAsString(first, last) + let line = a:first + let string = s:TrimRight(getline(line)) + + while line < a:last + let line = line + 1 + let string = string . s:TrimRight(getline(line)) + endwhile + + return string + endfunction +endif + +" Trim whitespace from right of string. +if !exists("*s:TrimRight") + function s:TrimRight(text) + return substitute(a:text, '\(\.\{-}\)\s*$', '\1', '') + endfunction +endif + +" Process the specified region indicated by the user. The region is +" simply a concatenated string of the lines that were selected by the +" user. This string is searched for properties (that match the s:variable +" regexp). Each property is then processed. For example, if the region +" was: +" +" // Age private int age; // Name priavte static String name; +" +" Then, the following strings would be processed one at a time: +" +" private int age; +" private static String name; +" +if !exists("*s:ProcessRegion") + function s:ProcessRegion(region) + let startPosition = match(a:region, s:variable, 0) + let endPosition = matchend(a:region, s:variable, 0) + + while startPosition != -1 + let result = strpart(a:region, startPosition, endPosition - startPosition) + + "call s:DebugParsing(result) + call s:ProcessVariable(result) + + let startPosition = match(a:region, s:variable, endPosition) + let endPosition = matchend(a:region, s:variable, endPosition) + endwhile + + endfunction +endif + +" Process a single property. The first thing this function does is +" break apart the property into the following components: indentation, +" modifiers ,type, array, and name. In addition, the following other +" components are then derived from the previous: funcname, static, +" final, and isarray. For example, if the specified variable was: +" +" private static String name; +" +" Then the following would be set for the global variables: +" +" indent = ' ' +" modifiers = 'private static' +" vartype = 'String' +" vararray = '' +" varname = 'name' +" funcname = 'Name' +" static = 1 +" final = 0 +" isarray = 0 +" +if !exists("*s:ProcessVariable") + function s:ProcessVariable(variable) + let s:static = 0 + let s:isarray = 0 + let s:final = 0 + let s:indent = substitute(a:variable, s:variable, '\1', '') + let s:modifiers = substitute(a:variable, s:variable, '\2', '') + let s:vartype = substitute(a:variable, s:variable, '\5', '') + let s:vararray = substitute(a:variable, s:variable, '\7', '') + let s:varname = substitute(a:variable, s:variable, '\8', '') + let s:funcname = toupper(s:varname[0]) . strpart(s:varname, 1) + + " If any getter or setter already exists, then just return as there + " is nothing to be done. The assumption is that the user already + " made his choice. + if s:AlreadyExists() + return + endif + + if s:modifiers =~ 'static' + let s:static = 1 + endif + + if s:modifiers =~ 'final' + let s:final = 1 + endif + + if s:vararray =~ '[' + let s:isarray = 1 + endif + + if s:getter + call s:InsertGetter() + endif + + if s:setter && !s:final + call s:InsertSetter() + endif + + endfunction +endif + +" Checks to see if any getter/setter exists. +if !exists("*s:AlreadyExists") + function s:AlreadyExists() + return search('\(get\|set\)' . s:funcname . '\_s*([^)]*)\_s*{', 'w') + endfunction +endif + +" Inserts a getter by selecting the appropriate template to use and then +" populating the template parameters with actual values. +if !exists("*s:InsertGetter") + function s:InsertGetter() + + if s:isarray + let method = s:javagetset_getterArrayTemplate + else + let method = s:javagetset_getterTemplate + endif + + let mods = "public" + if s:static + let mods = mods . " static" + endif + + let method = substitute(method, '%type%', s:vartype, 'g') + let method = substitute(method, '%varname%', s:varname, 'g') + let method = substitute(method, '%funcname%', 'get' . s:funcname, 'g') + let method = substitute(method, '%modifiers%', mods, 'g') + + call s:InsertMethodBody(method) + + endfunction +endif + +" Inserts a setter by selecting the appropriate template to use and then +" populating the template parameters with actual values. +if !exists("*s:InsertSetter") + function s:InsertSetter() + + if s:isarray + let method = s:javagetset_setterArrayTemplate + else + let method = s:javagetset_setterTemplate + endif + + let mods = "public" + if s:static + let mods = mods . " static" + endif + + let method = substitute(method, '%type%', s:vartype, 'g') + let method = substitute(method, '%varname%', s:varname, 'g') + let method = substitute(method, '%funcname%', 'set' . s:funcname, 'g') + let method = substitute(method, '%modifiers%', mods, 'g') + + call s:InsertMethodBody(method) + + endfunction +endif + +" Inserts a body of text using the indentation level. The passed string +" may have embedded newlines so we need to search for each "line" and then +" call append separately. I couldn't figure out how to get a string with +" newlines to be added in one single call to append (it kept inserting the +" newlines as ^@ characters which is not what I wanted). +if !exists("*s:InsertMethodBody") + function s:InsertMethodBody(text) + call s:MoveToInsertPosition() + + let pos = line('.') + let string = a:text + + while 1 + let len = stridx(string, "\n") + + if len == -1 + call append(pos, s:indent . string) + break + endif + + call append(pos, s:indent . strpart(string, 0, len)) + + let pos = pos + 1 + let string = strpart(string, len + 1) + + endwhile + endfunction +endif + +" Move the cursor to the insertion point. This insertion point can be +" defined by the user by setting the b:javagetset_insertPosition variable. +if !exists("*s:MoveToInsertPosition") + function s:MoveToInsertPosition() + + " 1 indicates above the current block / line + if s:javagetset_insertPosition == 1 + execute "normal! " . (s:firstline - 1) . "G0" + + " 2 indicates below the current block / line + elseif s:javagetset_insertPosition == 2 + execute "normal! " . s:lastline . "G0" + + " 0 indicates end of class (and is default) + else + execute "normal! ?{\w99[{%k" | nohls + + endif + + endfunction +endif + +" Debug code to decode the properties. +if !exists("*s:DebugParsing") + function s:DebugParsing(variable) + echo 'DEBUG: ====================================================' + echo 'DEBUG:' a:variable + echo 'DEBUG: ----------------------------------------------------' + echo 'DEBUG: indent:' substitute(a:variable, s:variable, '\1', '') + echo 'DEBUG: modifiers:' substitute(a:variable, s:variable, '\2', '') + echo 'DEBUG: type:' substitute(a:variable, s:variable, '\5', '') + echo 'DEBUG: array:' substitute(a:variable, s:variable, '\7', '') + echo 'DEBUG: name:' substitute(a:variable, s:variable, '\8', '') + echo '' + endfunction +endif + +" Add mappings, unless the user didn't want this. I'm still not clear why +" I need to have two (2) noremap statements for each, but that is what the +" example shows in the documentation so I've stuck with that convention. +" Ideally, I'd prefer to use only one noremap line and map the +" directly to the ':call function()'. +if !exists("no_plugin_maps") && !exists("no_java_maps") + if !hasmapto('JavagetsetInsertGetterSetter') + map p JavagetsetInsertGetterSetter + endif + noremap