├── ftdetect └── lojban.vim ├── README ├── ftplugin └── lojban.vim └── syntax └── lojban.vim /ftdetect/lojban.vim: -------------------------------------------------------------------------------- 1 | au BufNewFile,BufRead *.jbo set filetype=lojban 2 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | This is a mirror of http://www.vim.org/scripts/script.php?script_id=1760 2 | 3 | An exhaustive support for the Lojban language (http://www.lojban.org) - ftdetect, ftplugin and syntax files in one bundle. Another location is http://wagner.pp.ru/~slobin/vim/lojban.zip 4 | 5 | -------------------------------------------------------------------------------- /ftplugin/lojban.vim: -------------------------------------------------------------------------------- 1 | " Vim filetype plugin file 2 | " Language: Lojban 3 | " Maintainer: Cyril Slobin 4 | " URL: http://45.free.net/~slobin/vim/lojban.zip 5 | " Last Change: 2007 Feb 27 6 | " $Id: lojban.vim,v 1.9 2007-02-27 00:42:10+03 slobin Exp $ 7 | 8 | " For more information about Lojban language see http://www.lojban.org 9 | 10 | " This plugin redefines some motion commands in a Lojban-specific way: 11 | 12 | " - '(' and ')' moves to the start/end of Lojban sentences, separated by 13 | " "i", "ni'o" and "no'i". 14 | " - '{' and '}' moves to the start/end of Lojban paragraphs, separated 15 | " by "ni'o" and "no'i" at the beginning of a line. 16 | " - '%' moves to the matching cmavo, observing nested grammar forms. 17 | " This works only if "matchit" plugin is installed. 18 | 19 | " The later is not handled very well, because '%' command searches for 20 | " a closing tag for the cmavo under cursor, but most of the closing tags 21 | " in a Lojban text are typically elided. 22 | 23 | " Processing of the 'magic' words (e.g. "zo" or "bu") can be especially 24 | " time consuming (plugin scrupulously counts preceding "zo" to realise 25 | " whether its number is odd or even). If this tires you, turn it off by 26 | " assigning the value 0 to the variable g:lojban_magic. The value 1 27 | " turns it to be 'semi-magic' - only one occurrence of "zo" is taken 28 | " into account. The value 2 (default) turns all magic on. 29 | 30 | " Also, the command '\k' displays the syntax category of the word in the 31 | " cursor position (this works only if syntax highlighting is enabled). 32 | " The first character of this command need not to be backslash - replace 33 | " it with the value of the maplocalleader variable. 34 | 35 | " If variable g:lojban_space is set to value 1, syntax category of white 36 | " space between words is also displayed. This may be a bit confusing, so 37 | " it is turned off by default. 38 | 39 | " Known errors: 40 | 41 | " During the search for matching cmavo for "%" command: 42 | 43 | " - Erasure words "si", "sa" and "su" aren't processed. 44 | " - Matches aren't skipped in "lo'u" .. "le'u" quotations. 45 | " - "zoi" quoting words doesn't match each other. 46 | 47 | " This plugin is developed using Vim 7.x. I have no clue whether it will 48 | " work with elder versions of Vim. 49 | 50 | " There exists another Lojban filetype plugin for Vim, it is written by 51 | " Martin Bays and can be found at http://mbays.freeshell.org/lojban.vim 52 | " If you want them both to coexist, rename one to, say, lojban_cyril.vim 53 | " and other to, say, lojban_martin.vim or something like this. 54 | 55 | " Public Domain 56 | " Made on Earth 57 | 58 | if exists("b:did_ftplugin") 59 | finish 60 | endif 61 | let b:did_ftplugin = 1 62 | 63 | let s:save_cpo = &cpo 64 | set cpo&vim 65 | 66 | setlocal iskeyword=39,44,48-57,A-Z,a-z 67 | let b:undo_ftplugin = "setlocal iskeyword<" 68 | 69 | if !exists("g:lojban_space") 70 | let g:lojban_space = 0 71 | endif 72 | 73 | if !exists("g:lojban_magic") 74 | let g:lojban_magic = 2 75 | endif 76 | 77 | noremap ( :call search('\.\@\.*\\|\%^', "bW") 78 | noremap ) :call search('\ze\.\@\.*\\|\%$', "W") 79 | 80 | noremap { :call search('^\(/[^/]*/\\|\k\@!.\)*\<\(\(ni''o\)\+\\|\(no''i\)\+\)\>\\|\%^', "bW") 81 | noremap } :call search('\ze\_^\(/[^/]*/\\|\k\@!.\)*\<\(\(ni''o\)\+\\|\(no''i\)\+\)\>\\|\%$', "W") 82 | 83 | noremap k :echo synIDattr(synID(line("."), col("."), !g:lojban_space), "name") 84 | 85 | if exists("loaded_matchit") 86 | let b:match_ignorecase = 1 87 | let b:match_skip = 's:lojbanComment\|lojbanQuoteSymbol\|lojbanTextForeign' 88 | let b:match_words = 89 | \ '<>:<>:<>:<>,' . 90 | \ '<>:<>,' . 91 | \ '<>:<>:<>,' . 92 | \ '<>:<>,' . 93 | \ '<>:<>,' . 94 | \ '<>:<>,' . 95 | \ '<>:<>,' . 96 | \ '<>:<>,' . 97 | \ '<>:<>,' . 98 | \ '<>:<>,' . 99 | \ '<>:<>,' . 100 | \ '<>:<>,' . 101 | \ '<
  • >:<>,' . 102 | \ '<>:<>,' . 103 | \ '<>:<>,' . 104 | \ '<>:<>,' . 105 | \ '<>:<>,' . 106 | \ '<>:<>,' . 107 | \ '<>:<>,' . 108 | \ '<>:<>,' . 109 | \ '<>:<>,' . 110 | \ '<>:<>,' . 111 | \ '<>:<>,' . 112 | \ '<>:<>' 113 | if g:lojban_magic == 0 114 | let b:match_words = substitute(b:match_words, '<<', '\\<\\%(', "g") 115 | let b:match_words = substitute(b:match_words, '>>', '\\)\\>', "g") 116 | elseif g:lojban_magic == 1 117 | let b:match_words = substitute(b:match_words, '<<', '\\%(\\__\\)\\@>', '\\)\\>\\%(__\\\\)\\@!', "g") 119 | else 120 | let b:match_words = substitute(b:match_words, '<<', '\\%(\\%(\\__\\)\\@__\\__\\)*\\__\\)\\@>', '\\)\\>\\%(__\\\\)\\@!', "g") 122 | endif 123 | let b:match_words = substitute(b:match_words, '__', '\\%(/[^/]*/\\|\\k\\@!\\_.\\)\\+', "g") 124 | endif 125 | 126 | let &cpo = s:save_cpo 127 | -------------------------------------------------------------------------------- /syntax/lojban.vim: -------------------------------------------------------------------------------- 1 | " Vim syntax file 2 | " Language: Lojban 3 | " Maintainer: Cyril Slobin 4 | " URL: http://45.free.net/~slobin/vim/lojban.zip 5 | " Last Change: 2007 Feb 23 6 | " $Id: lojban.vim,v 3.14 2007-02-23 06:19:07+03 slobin Exp $ 7 | 8 | " For more information about Lojban language see http://www.lojban.org 9 | 10 | " This syntax file doesn't implement a full Lojban morphology algorithm, 11 | " but a rough approximation only: some broken words can be recognized as 12 | " well-formed and vice versa; commas are allowed in cmene only; pauses 13 | " are highlighted, but not otherwise checked; capital letters treated as 14 | " lower-case. Digits are recognized as cmavo. 15 | 16 | " Well, the previous paragraph was written long ago for 2.x version of 17 | " this file. Now I believe this file *does* implement the full Lojban 18 | " morphology algorithm. The only exception I am aware of is lack of test 19 | " for redundant hyphens in lujvo: words like "xagyrai" will be reported 20 | " as valid ones. By coincident this behavior is consistent with current 21 | " BPFK suggestions. If you spot any other error or inconsistence, please 22 | " report it to me using email address mentioned at the top of this file. 23 | 24 | " General meaning of colors: 25 | " 26 | " gismu are green 27 | " lujvo are cyan 28 | " cmene are magenta 29 | " cmavo are yellow 30 | " fu'ivla are blue 31 | " experimental words are blue or underlined 32 | " errors are red or underlined 33 | " 34 | " If filetype plugin (bundled with this file) is installed, more details 35 | " can be learned pressing '\k' with cursor on the word in question. 36 | 37 | " Starting with version 3.12 of this file, the default word recognition 38 | " algorithm was changed and became compatible with vlatai, valfendi and 39 | " other popular tools (e.g. the word "iglu" considered valid now). If 40 | " you want an old behavior, assign value 0 to variable g:lojban_compat. 41 | " The mnemonic is a bit misleading - the value 1 (the default now) means 42 | " "compatible with the common standard", not "compatible with the elder 43 | " versions of this file". 44 | 45 | " This syntax file take a full advantage of Vim 7.x GUI version fancy 46 | " underlining feature. If you are running GUI version of Vim and prefer 47 | " an oldish highlighting style (no curly underlines), assign value 0 to 48 | " the variable g:lojban_fancy. Assigning value 1 (default) turns the new 49 | " style on. Value 2 is not supported any more, supporting three versions 50 | " is too boring. 51 | 52 | " If you are running character mode Vim or Vim version prior to 7.0, you 53 | " have no choice - oldish style is the only available option. 54 | 55 | " Starting from version 3.x of this file, compatibility with elder 56 | " versions of Vim is broken; upgrade to Vim 7.x, it's worth doing! 57 | " I have made a hard attempt to be compatible with Vim 6.x, but haven't 58 | " tested it at all. If you MUST to stay with Vim 6.x and this file 59 | " doesn't work for you, try to find version 2.7 of this file somewhere. 60 | " The Vim version 5.x and elder is definitely out of play. 61 | 62 | " From the same version, Lojban specific highlighting groups are defined 63 | " directly in terms of specific colors, not as a links to standard 64 | " highlighting groups. Lojban is not similar to programming languages! 65 | " For details see "general meaning of colors" above. 66 | 67 | " From the same version, options lojban_in_braces and lojban_in_brackets 68 | " aren't supported any more. They used to make things too complicated. 69 | 70 | " If 'foldmethod' option is set to 'syntax', Lojban text will be folded 71 | " by Lojbanic paragraphs. 72 | 73 | " BTW, /text in slashes/ is treated as a comment and is a subject of the 74 | " spell checking (English, not Lojban!). 75 | 76 | " Public Domain 77 | " Made on Earth 78 | 79 | if exists("b:current_syntax") 80 | finish 81 | endif 82 | 83 | if !exists("g:lojban_compat") 84 | let g:lojban_compat = 1 85 | endif 86 | 87 | if !exists("g:lojban_fancy") 88 | let g:lojban_fancy = 1 89 | endif 90 | 91 | if version < 700 92 | let g:lojban_fancy = 0 93 | endif 94 | 95 | setlocal iskeyword=39,44,48-57,A-Z,a-z 96 | 97 | function! s:Sub(arg) 98 | let line = a:arg 99 | " vAlid vowel pAir 100 | let line = substitute(line, '\CAA', '\\%([aeiou]''[aeiou]\\|[aeo]i\\|au\\)', 'g') 101 | " Bad consonant pair 102 | let line = substitute(line, '\CBB', '\\%(cs\\|sc\\|jz\\|zj\\|cx\\|xc\\|kx\\|xk\\|mz\\)', 'g') 103 | " Consonant 104 | let line = substitute(line, '\CC', '[bcdfgjklmnprstvxz]', 'g') 105 | " Fu'ivla letter 106 | let line = substitute(line, '\CF', '[''abcdefgijklmnoprstuvxz]', 'g') 107 | " Letter 108 | let line = substitute(line, '\CL', '[,''abcdefgijklmnoprstuvxyz]', 'g') 109 | " vOiced consonant 110 | let line = substitute(line, '\CO', '[bdgjvz]', 'g') 111 | " consonant excluding R 112 | let line = substitute(line, '\CR', '[bcdfgjklmnpstvxz]', 'g') 113 | " Unvoiced consonant 114 | let line = substitute(line, '\CU', '[cfkpstx]', 'g') 115 | " Vowel excluding y 116 | let line = substitute(line, '\CV', '[aeiou]', 'g') 117 | " vowel including Y 118 | let line = substitute(line, '\CY', '[aeiouy]', 'g') 119 | " initial consonant pair 120 | let line = substitute(line, '@@', '\\%([bfgkmpvx][lr]\\|[cs][fklmnprt]\\|' . 121 | \ '[jz][bdgmv]\\|d[jrz]\\|t[crs]\\)', 'g') 122 | " initial consonant cluster 123 | let line = substitute(line, '%%', '\\%(' . 124 | \ '[bfgkmpvx][lr]\\|' . 125 | \ '[cs]\\%([lnr]\\|[fkmp][lr]\\=\\|tr\\=\\)\\|' . 126 | \ '[cs]\\%(t[cs]\\)\\+\\%([lnr]\\|[fkmp][lr]\\=\\|tr\\=\\)\\=\\|' . 127 | \ 'd\\%(r\\|[jz]\\%([bgvm][lr]\\=\\)\\=\\)\\|' . 128 | \ 'd\\%([jz]d\\)\\+\\%(r\\|[jz]\\%([bgvm][lr]\\=\\)\\=\\)\\=\\|' . 129 | \ '[jz]\\%([bgvm][lr]\\=\\|dr\\=\\)\\|' . 130 | \ '[jz]\\%(d[jz]\\)\\+\\%([bgvm][lr]\\=\\|dr\\=\\)\\=\\|' . 131 | \ 't\\%(r\\|[cs]\\%([lnr]\\|[fkmp][lr]\\=\\)\\=\\)' . 132 | \ 't\\%([cs]t\\)\\+\\%(r\\|[cs]\\%([lnr]\\|[fkmp][lr]\\=\\)\\=\\)\\=' . 133 | \ '\\)', 'g') 134 | " space including newline 135 | let line = substitute(line, '__', '\\%(/[^/]*/\\|\\k\\@!\\_.\\)', 'g') 136 | " space excluding newline 137 | let line = substitute(line, '##', '\\%(/[^/]*/\\|\\k\\@!.\\)', 'g') 138 | return line 139 | endfunction 140 | 141 | command -nargs=* SUB execute substitute(, '"[^"]*"', '\=s:Sub(submatch(0))', 'g') 142 | 143 | syn case ignore 144 | 145 | syn region lojbanComment oneline start="/" end="/\|$" contains=@Spell 146 | 147 | syn match lojbanPause "\." 148 | 149 | syn match lojbanValsiUnrecognized "\<\k\+\>" contains=lojbanValsiUnrecognizedConsonantError 150 | 151 | SUB syn match lojbanValsiUnrecognizedConsonantError contained "\(C\)\1" 152 | SUB syn match lojbanValsiUnrecognizedConsonantError contained "OU\|UO" 153 | SUB syn match lojbanValsiUnrecognizedConsonantError contained "BB" 154 | 155 | SUB syn match lojbanFuhivlaUnrecognized "\<\%(F\|y\)\+\%(V\|y\)\>" contains=lojbanFuhivlaUnrecognizedConsonantError,lojbanFuhivlaUnrecognizedVowelError,lojbanFuhivlaUnrecognizedHyphenError 156 | 157 | SUB syn match lojbanFuhivlaUnrecognizedConsonantError contained "\(C\)\1" 158 | SUB syn match lojbanFuhivlaUnrecognizedConsonantError contained "OU\|UO" 159 | SUB syn match lojbanFuhivlaUnrecognizedConsonantError contained "BB" 160 | 161 | SUB syn match lojbanFuhivlaUnrecognizedVowelError contained "\%([aeo]i\|au\)\@!VV" 162 | 163 | syn match lojbanFuhivlaUnrecognizedHyphenError contained "y" 164 | 165 | SUB syn match lojbanFuhivla "\" contains=lojbanFuhivlaConsonantError,lojbanFuhivlaVowelError 166 | SUB syn match lojbanFuhivla "\<%%VF*\%(C\|'\)F*V\>" contains=lojbanFuhivlaConsonantError,lojbanFuhivlaVowelError,lojbanFuhivlaSlinkuhi 167 | SUB syn match lojbanFuhivla "\" contains=lojbanFuhivlaConsonantError,lojbanFuhivlaVowelError 168 | SUB syn match lojbanFuhivla "\" contains=lojbanFuhivlaConsonantError,lojbanFuhivlaVowelError 169 | 170 | SUB syn match lojbanFuhivlaConsonantError contained "\(C\)\1" 171 | SUB syn match lojbanFuhivlaConsonantError contained "OU\|UO" 172 | SUB syn match lojbanFuhivlaConsonantError contained "BB" 173 | 174 | SUB syn match lojbanFuhivlaVowelError contained "\%([aeo]i\|au\)\@!VV" 175 | 176 | SUB syn match lojbanFuhivlaSlinkuhi contained "\" contains=lojbanFuhivlaSlinkuhiConsonantError 177 | 178 | SUB syn match lojbanFuhivlaSlinkuhiConsonantError contained "\(C\)\1" 179 | SUB syn match lojbanFuhivlaSlinkuhiConsonantError contained "OU\|UO" 180 | SUB syn match lojbanFuhivlaSlinkuhiConsonantError contained "BB" 181 | 182 | if g:lojban_compat 183 | 184 | SUB syn match lojbanFuhivlaBreakable "\" contains=lojbanFuhivlaBreakableConsonantError,lojbanFuhivlaBreakableVowelError,lojbanFuhivlaStrong 185 | SUB syn match lojbanFuhivlaBreakable "\" contains=lojbanFuhivlaBreakableConsonantError,lojbanFuhivlaBreakableVowelError,lojbanFuhivlaStrong 186 | 187 | SUB syn match lojbanFuhivlaStrong contained "\" contains=lojbanFuhivlaStrongConsonantError,lojbanFuhivlaStrongVowelError 188 | SUB syn match lojbanFuhivlaStrong contained "\" contains=lojbanFuhivlaStrongConsonantError,lojbanFuhivlaStrongVowelError 189 | 190 | SUB syn match lojbanFuhivlaBreakable "\" contains=lojbanFuhivlaBreakableConsonantError,lojbanFuhivlaBreakableVowelError 191 | SUB syn match lojbanFuhivlaBreakable "\" contains=lojbanFuhivlaBreakableConsonantError,lojbanFuhivlaBreakableVowelError 192 | 193 | SUB syn match lojbanFuhivlaStrongConsonantError contained "\(C\)\1" 194 | SUB syn match lojbanFuhivlaStrongConsonantError contained "OU\|UO" 195 | SUB syn match lojbanFuhivlaStrongConsonantError contained "BB" 196 | 197 | SUB syn match lojbanFuhivlaStrongVowelError contained "\%([aeo]i\|au\)\@!VV" 198 | 199 | else 200 | 201 | SUB syn match lojbanFuhivlaBreakable "\" contains=lojbanFuhivlaBreakableConsonantError,lojbanFuhivlaBreakableVowelError 202 | SUB syn match lojbanFuhivlaBreakable "\" contains=lojbanFuhivlaBreakableConsonantError,lojbanFuhivlaBreakableVowelError 203 | 204 | endif 205 | 206 | SUB syn match lojbanFuhivlaBreakableConsonantError contained "\(C\)\1" 207 | SUB syn match lojbanFuhivlaBreakableConsonantError contained "OU\|UO" 208 | SUB syn match lojbanFuhivlaBreakableConsonantError contained "BB" 209 | 210 | SUB syn match lojbanFuhivlaBreakableVowelError contained "\%([aeo]i\|au\)\@!VV" 211 | 212 | SUB syn match lojbanLujvo "\" contains=lojbanLujvoConsonantError,lojbanLujvoVowelError,lojbanRafsiCultural 213 | SUB syn match lojbanLujvo "\" contains=lojbanLujvoConsonantError,lojbanLujvoVowelError,lojbanRafsiCultural 214 | SUB syn match lojbanLujvo "\" contains=lojbanLujvoConsonantError,lojbanLujvoVowelError 215 | SUB syn match lojbanLujvo "\" contains=lojbanLujvoConsonantError,lojbanLujvoVowelError 216 | SUB syn match lojbanLujvo "\" contains=lojbanLujvoConsonantError,lojbanLujvoVowelError 217 | SUB syn match lojbanLujvo "\<\%(@@V\|CVCy\=\|@@VCy\|CVCCy\|@@V'\=VCy\)\%(@@V\|CV'\=V\|CVCy\=\|@@VCy\|CVCCy\|@@V'\=VCy\)*\%(@@V\|CV'\=V\|@@VCV\|CVCCV\)\>" contains=lojbanLujvoConsonantError,lojbanLujvoVowelError,lojbanRafsiCultural,lojbanLujvoTosmabru 218 | 219 | SUB syn match lojbanLujvoConsonantError contained "\(C\)\1" 220 | SUB syn match lojbanLujvoConsonantError contained "OU\|UO" 221 | SUB syn match lojbanLujvoConsonantError contained "BB" 222 | 223 | SUB syn match lojbanLujvoVowelError contained "\%([aeo]i\|au\)\@!VV" 224 | 225 | SUB syn match lojbanRafsiCultural contained "@@V'\=VCy" contains=lojbanRafsiCulturalConsonantError,lojbanRafsiCulturalVowelError 226 | 227 | SUB syn match lojbanRafsiCulturalConsonantError contained "\(C\)\1" 228 | SUB syn match lojbanRafsiCulturalConsonantError contained "OU\|UO" 229 | SUB syn match lojbanRafsiCulturalConsonantError contained "BB" 230 | 231 | SUB syn match lojbanRafsiCulturalVowelError contained "\%([aeo]i\|au\)\@!VV" 232 | 233 | SUB syn match lojbanLujvoTosmabru contained "\" contains=lojbanLujvoTosmabruConsonantError,lojbanLujvoTosmabruVowelError 234 | SUB syn match lojbanLujvoTosmabru contained "\" contains=lojbanLujvoTosmabruConsonantError,lojbanLujvoTosmabruVowelError 235 | 236 | SUB syn match lojbanLujvoTosmabruConsonantError contained "\(C\)\1" 237 | SUB syn match lojbanLujvoTosmabruConsonantError contained "OU\|UO" 238 | SUB syn match lojbanLujvoTosmabruConsonantError contained "BB" 239 | 240 | SUB syn match lojbanLujvoTosmabruVowelError contained "\%([aeo]i\|au\)\@!VV" 241 | 242 | SUB syn match lojbanGismuUnknown "\" contains=lojbanGismuSpecificError,lojbanGismuConsonantError 243 | SUB syn match lojbanGismuUnknown "\" contains=lojbanGismuConsonantError 244 | 245 | SUB syn match lojbanGismuSpecificError contained "\<@@\@!CC" 246 | 247 | SUB syn match lojbanGismuConsonantError contained "\(C\)\1" 248 | SUB syn match lojbanGismuConsonantError contained "OU\|UO" 249 | SUB syn match lojbanGismuConsonantError contained "BB" 250 | 251 | SUB syn match lojbanCmavo "\<\%(Y\%('\=Y\)*\)\=\%([0-9]\|\%(C\%(V\|\%(Y\%('\=Y\)\+\)\)\)\)*\%(Cy\)*\>" contains=lojbanCmavoSimple,lojbanCmavoExperimental,lojbanCmavoIllegal,lojbanCmavoUnassigned,lojbanCmavoWrongHesitation 252 | 253 | SUB syn match lojbanCmavoSimple contained "CV\%('\=V\)\=" contains=lojbanCmavoDiphtongError,lojbanCmavoVowelError 254 | SUB syn match lojbanCmavoSimple contained "V\%('\=V\)\=" contains=lojbanCmavoVowelError 255 | SUB syn match lojbanCmavoSimple contained "Cy" 256 | syn match lojbanCmavoSimple contained "y\+" 257 | syn match lojbanCmavoSimple contained "y'y" 258 | syn match lojbanCmavoSimple contained "[0-9]" 259 | 260 | SUB syn match lojbanCmavoExperimental contained "xV'\=V" contains=lojbanCmavoDiphtongError,lojbanCmavoVowelError 261 | SUB syn match lojbanCmavoExperimental contained "C\=V\%('\=V\)\{2,}" contains=lojbanCmavoDiphtongError,lojbanCmavoVowelError 262 | 263 | SUB syn match lojbanCmavoIllegal contained "V\%('\=Y\)*'\=y\%('\=Y\)*" contains=lojbanCmavoDiphtongError,lojbanCmavoVowelError 264 | SUB syn match lojbanCmavoIllegal contained "y\%('\=Y\)*'\=V\%('\=Y\)*" contains=lojbanCmavoDiphtongError,lojbanCmavoVowelError 265 | SUB syn match lojbanCmavoIllegal contained "y'yy\+" contains=lojbanCmavoVowelError 266 | SUB syn match lojbanCmavoIllegal contained "yy\+'y\+" contains=lojbanCmavoVowelError 267 | SUB syn match lojbanCmavoIllegal contained "Cy\%('\=Y\)\+" contains=lojbanCmavoDiphtongError,lojbanCmavoVowelError 268 | SUB syn match lojbanCmavoIllegal contained "CV\%('\=Y\)*'\=y\%('\=Y\)*" contains=lojbanCmavoDiphtongError,lojbanCmavoVowelError 269 | 270 | syn match lojbanCmavoUnassigned contained "bi'a\|bo'a\|bo'e\|bo'i\|bo'o\|bo'u\|ci'a" 271 | syn match lojbanCmavoUnassigned contained "ja'u\|ne'e\|po'a\|te'i\|zi'a\|zi'i\|zi'u" 272 | 273 | SUB syn match lojbanCmavoWrongHesitation contained "\" 276 | SUB syn match lojbanCmavoSimple contained "\" contains=lojbanCmeneConsonantError,lojbanCmeneSpecificError 282 | 283 | SUB syn match lojbanCmeneConsonantError contained "\(C\)\1" 284 | SUB syn match lojbanCmeneConsonantError contained "OU\|UO" 285 | SUB syn match lojbanCmeneConsonantError contained "BB" 286 | 287 | syn match lojbanCmeneSpecificError contained "\" contains=lojbanValsiIllegalConsonantError,lojbanValsiIllegalSpecificError 293 | SUB syn match lojbanValsiIllegal "\<\k*'C\k*\>" contains=lojbanValsiIllegalConsonantError,lojbanValsiIllegalSpecificError 294 | syn match lojbanValsiIllegal "\<[,']\k*\>" contains=lojbanValsiIllegalConsonantError,lojbanValsiIllegalSpecificError 295 | syn match lojbanValsiIllegal "\k*[,']\>" contains=lojbanValsiIllegalConsonantError,lojbanValsiIllegalSpecificError 296 | syn match lojbanValsiIllegal "\<\k*[,'][,']\k*\>" contains=lojbanValsiIllegalConsonantError,lojbanValsiIllegalSpecificError 297 | SUB syn match lojbanValsiIllegal "\<\k*[hqw]\k*\>" contains=lojbanValsiIllegalConsonantError,lojbanValsiIllegalSpecificError 298 | 299 | SUB syn match lojbanValsiIllegalConsonantError contained "\(C\)\1" 300 | SUB syn match lojbanValsiIllegalConsonantError contained "OU\|UO" 301 | SUB syn match lojbanValsiIllegalConsonantError contained "BB" 302 | 303 | SUB syn match lojbanValsiIllegalSpecificError contained "C'"hs=s+1 304 | SUB syn match lojbanValsiIllegalSpecificError contained "'C"he=e-1 305 | syn match lojbanValsiIllegalSpecificError contained "\<[,']" 306 | syn match lojbanValsiIllegalSpecificError contained "[,']\>" 307 | syn match lojbanValsiIllegalSpecificError contained "[,'][,']" 308 | SUB syn match lojbanValsiIllegalSpecificError contained "[hqw]" 309 | 310 | syn region lojbanQuoteBalanced start="\" end="\" transparent extend keepend contains=TOP 311 | 312 | SUB syn match lojbanLetteral "\(\\)\@!\<\k\+\>\(__\+\\)\+" transparent extend contains=TOP,lojbanQuoteBalanced,lojbanLetteral,lojbanQuoteSequence,lojbanQuoteForeign,lojbanQuoteSingle 313 | 314 | syn region lojbanQuoteSequence start="\" end="\" transparent extend keepend contains=TOP,lojbanQuoteBalanced,lojbanLetteral,lojbanQuoteSequence 315 | 316 | syn match lojbanQuoteForeign "\\|\" nextgroup=lojbanQuoteJoiner transparent extend contains=TOP 317 | SUB syn match lojbanQuoteJoiner "__\{-1,}\%(\.*\k\)\@=" contained nextgroup=lojbanTextForeign transparent extend contains=lojbanComment,lojbanPause 318 | syn region lojbanTextForeign contained matchgroup=lojbanQuoteSymbol start="\.*\<\z(\k\+\)\>\.*" end="\.*\<\z1\>\.*" extend 319 | 320 | SUB syn match lojbanQuoteSingle "\__\+\<\k\+\>" transparent extend contains=TOP,lojbanQuoteBalanced,lojbanLetteral,lojbanQuoteSequence,lojbanQuoteForeign,lojbanQuoteSingle 321 | 322 | SUB syn region lojbanParagraph start="\_^##*\\%(##\+\\)\@!" end="\ze\_^##*\<\(ni'o\)\+\>\|\_^##*\<\(no'i\)\+\>" fold transparent keepend contains=TOP 323 | SUB syn region lojbanParagraph start="\_^##*\##\+\\%(##\+\\)\@!\|\_^##*\" end="\ze\_^##*\##\+\\|\ze\_^##*\<\(ni'o\)\{2,}\>\|\_^##*\##\+\\|\_^##*\<\(no'i\)\{2,}\>" fold transparent keepend contains=TOP 324 | SUB syn region lojbanParagraph start="\_^##*\##\+\##\+\\|\_^##*\<\(ni'o\)\{3,}\>" end="\ze\_^##*\##\+\##\+\\|\ze\_^##*\<\(ni'o\)\{3,}\>\|\_^##*\##\+\##\+\\|\_^##*\<\(no'i\)\{3,}\>" fold transparent keepend contains=TOP 325 | 326 | syn keyword lojbanGismu bacru badna badri bajra bakfu bakni bakri baktu balji balni 327 | syn keyword lojbanGismu balre balvi bancu bandu banfi bangu banli banro banxa banzu 328 | syn keyword lojbanGismu bapli barda bargu barja barna bartu basna basti batci batke 329 | syn keyword lojbanGismu bavmi baxso bebna bemro bende bengo benji bersa berti besna 330 | syn keyword lojbanGismu betfu betri bevri bidju bifce bikla bilga bilma bilni bindo 331 | syn keyword lojbanGismu binra binxo birje birka birti bisli bitmu blabi blaci blanu 332 | syn keyword lojbanGismu bliku bloti bolci bongu botpi boxfo boxna bradi bratu brazo 333 | syn keyword lojbanGismu bredi bridi brife briju brito broda brode brodi brodo brodu 334 | syn keyword lojbanGismu bruna budjo bukpu bumru bunda bunre burcu burna cabna cabra 335 | syn keyword lojbanGismu cacra cadzu cafne cakla calku canci cando cange canja canko 336 | syn keyword lojbanGismu canlu canpa canre canti carce carmi carna cartu carvi casnu 337 | syn keyword lojbanGismu catke catlu catni catra caxno cecla cecmu cedra cenba censa 338 | syn keyword lojbanGismu centi cerda cerni certu cevni cfari cfika cfila cfine cfipu 339 | syn keyword lojbanGismu ciblu cicna cidja cidni cidro cifnu cigla cikna cikre ciksi 340 | syn keyword lojbanGismu cilce cilmo cilre cilta cimde cimni cinba cindu cinfo cinje 341 | syn keyword lojbanGismu cinki cinla cinmo cinri cinse cinta cinza cipni cipra cirko 342 | syn keyword lojbanGismu cirla ciska cisma ciste citka citno citri citsi civla cizra 343 | syn keyword lojbanGismu ckabu ckafi ckaji ckana ckape ckasu ckeji ckiku ckilu ckini 344 | syn keyword lojbanGismu ckire ckule ckunu cladu clani claxu clika clira clite cliva 345 | syn keyword lojbanGismu clupa cmaci cmalu cmana cmavo cmene cmila cmima cmoni cnano 346 | syn keyword lojbanGismu cnebo cnemu cnici cnino cnisa cnita cokcu condi cortu cpacu 347 | syn keyword lojbanGismu cpana cpare cpedu cpina cradi crane creka crepu cribe crida 348 | syn keyword lojbanGismu crino cripu crisa critu ctaru ctebi cteki ctile ctino ctuca 349 | syn keyword lojbanGismu cukla cukta culno cumki cumla cunmi cunso cuntu cupra curmi 350 | syn keyword lojbanGismu curnu curve cusku cutci cutne cuxna dacru dacti dadjo dakfu 351 | syn keyword lojbanGismu dakli damba damri dandu danfu danlu danmo danre dansu danti 352 | syn keyword lojbanGismu daplu dapma dargu darlu darno darsi darxi daski dasni daspo 353 | syn keyword lojbanGismu dasri datka datni decti degji dejni dekpu dekto delno dembi 354 | syn keyword lojbanGismu denci denmi denpa dertu derxi desku detri dicra dikca diklo 355 | syn keyword lojbanGismu dikni dilcu dilnu dimna dinju dinko dirba dirce dirgo dizlo 356 | syn keyword lojbanGismu djacu djedi djica djine djuno donri dotco draci drani drata 357 | syn keyword lojbanGismu drudi dugri dukse dukti dunda dunja dunku dunli dunra dzena 358 | syn keyword lojbanGismu dzipo facki fadni fagri falnu famti fancu fange fanmo fanri 359 | syn keyword lojbanGismu fanta fanva fanza fapro farlu farna farvi fasnu fatci fatne 360 | syn keyword lojbanGismu fatri febvi femti fendi fengu fenki fenra fenso fepni fepri 361 | syn keyword lojbanGismu ferti festi fetsi figre filso finpe finti flalu flani flecu 362 | syn keyword lojbanGismu fliba flira foldi fonmo fonxa forca fraso frati fraxu frica 363 | syn keyword lojbanGismu friko frili frinu friti frumu fukpi fulta funca fusra fuzme 364 | syn keyword lojbanGismu gacri gadri galfi galtu galxe ganlo ganra ganse ganti ganxo 365 | syn keyword lojbanGismu ganzu gapci gapru garna gasnu gasta genja gento genxu gerku 366 | syn keyword lojbanGismu gerna gidva gigdo ginka girzu gismu glare gleki gletu glico 367 | syn keyword lojbanGismu gluta gocti gotro gradu grake grana grasu greku grusi grute 368 | syn keyword lojbanGismu gubni gugde gundi gunka gunma gunro gunse gunta gurni guska 369 | syn keyword lojbanGismu gusni gusta gutci gutra guzme jabre jadni jakne jalge jalna 370 | syn keyword lojbanGismu jalra jamfu jamna janbe janco janli jansu janta jarbu jarco 371 | syn keyword lojbanGismu jarki jaspu jatna javni jbama jbari jbena jbera jbini jdari 372 | syn keyword lojbanGismu jdice jdika jdima jdini jduli jecta jeftu jegvo jelca jemna 373 | syn keyword lojbanGismu jenca jendu jenmi jerna jersi jerxo jesni jetce jetnu jgalu 374 | syn keyword lojbanGismu jganu jgari jgena jgina jgira jgita jibni jibri jicla jicmu 375 | syn keyword lojbanGismu jijnu jikca jikru jilka jilra jimca jimpe jimte jinci jinga 376 | syn keyword lojbanGismu jinku jinme jinru jinsa jinto jinvi jinzi jipci jipno jirna 377 | syn keyword lojbanGismu jisra jitfa jitro jivbu jivna jmaji jmifa jmina jmive jordo 378 | syn keyword lojbanGismu jorne jubme judri jufra jukni jukpa julne jundi jungo junla 379 | syn keyword lojbanGismu junri junta jurme jursa jutsi juxre jvinu kabri kacma kadno 380 | syn keyword lojbanGismu kafke kagni kajde kajna kakne kakpa kalci kalri kalsa kalte 381 | syn keyword lojbanGismu kamju kamni kampu kanba kancu kandi kanji kanla kanro kansa 382 | syn keyword lojbanGismu kantu kanxe karbi karce karda kargu karli karni katna kavbu 383 | syn keyword lojbanGismu kecti kelci kelvo kenra kensa kerfa kerlo ketco kevna kicne 384 | syn keyword lojbanGismu kijno kilto kinli kisto klaji klaku klama klani klesi klina 385 | syn keyword lojbanGismu kliru kliti klupe kluza kobli kojna kolme komcu konju korbi 386 | syn keyword lojbanGismu korcu korka kosta kramu krasi krati krefu krici krili krinu 387 | syn keyword lojbanGismu krixa kruca kruji kruvi kubli kucli kufra kukte kulnu kumfa 388 | syn keyword lojbanGismu kumte kunra kunti kurfa kurji kurki kuspe kusru labno lacpu 389 | syn keyword lojbanGismu lacri ladru lafti lakne lakse lalxu lamji lanbi lanci lanka 390 | syn keyword lojbanGismu lanli lanme lante lanxe lanzu larcu lasna lastu latmo latna 391 | syn keyword lojbanGismu lazni lebna lenjo lenku lerci lerfu libjo lidne lifri lijda 392 | syn keyword lojbanGismu limna lindi linji linsi linto lisri liste litce litki litru 393 | syn keyword lojbanGismu livga livla logji lojbo loldi lorxu lubno lujvo lumci lunbe 394 | syn keyword lojbanGismu lunra lunsa mabla mabru macnu makcu makfa maksi malsi mamta 395 | syn keyword lojbanGismu manci manfo manku manri mansa manti mapku mapni mapti marbi 396 | syn keyword lojbanGismu marce marde margu marji marna marxa masno masti matci matli 397 | syn keyword lojbanGismu matne matra mavji maxri mebri megdo mekso melbi meljo menli 398 | syn keyword lojbanGismu mensi mentu merko merli mexno midju mifra mikce mikri milti 399 | syn keyword lojbanGismu milxe minde minji minli minra mintu mipri mirli misno misro 400 | syn keyword lojbanGismu mitre mixre mlana mlatu mleca mledi mluni mokca moklu molki 401 | syn keyword lojbanGismu molro morji morko morna morsi mosra mraji mrilu mruli mucti 402 | syn keyword lojbanGismu mudri mukti mulno munje mupli murse murta muslo mutce muvdu 403 | syn keyword lojbanGismu muzga nabmi nakni nalci namcu nanba nanca nandu nanla nanmu 404 | syn keyword lojbanGismu nanvi narge narju natfe natmi navni naxle nazbi nejni nelci 405 | syn keyword lojbanGismu nenri nibli nicte nikle nilce nimre ninmu nirna nitcu nivji 406 | syn keyword lojbanGismu nixli nobli notci nukni nupre nurma nutli nuzba pacna pagbu 407 | syn keyword lojbanGismu pagre pajni palci palku palne palta pambe panci pandi panje 408 | syn keyword lojbanGismu panka panlo panpi panra pante panzi papri parbi pastu patfu 409 | syn keyword lojbanGismu patlu patxu pelji pelxu pemci penbi pencu pendo penmi pensi 410 | syn keyword lojbanGismu perli pesxu petso pezli picti pijne pikci pikta pilji pilka 411 | syn keyword lojbanGismu pilno pimlu pinca pindi pinfu pinji pinka pinsi pinta pinxe 412 | syn keyword lojbanGismu pipno pixra plana platu pleji plibu plini plipe plise plita 413 | syn keyword lojbanGismu plixa pluja pluka pluta polje polno ponjo ponse porpi porsi 414 | syn keyword lojbanGismu porto prali prami prane preja prenu preti prije prina pritu 415 | syn keyword lojbanGismu prosa pruce pruni pruxi pulce pulji pulni punji punli purci 416 | syn keyword lojbanGismu purdi purmo racli ractu radno rafsi ragve rakso raktu ralci 417 | syn keyword lojbanGismu ralju ralte randa rango ranji ranmi ransu ranti ranxi rapli 418 | syn keyword lojbanGismu rarna ratcu ratni rebla rectu remna renro renvi respa ricfu 419 | syn keyword lojbanGismu rigni rijno rilti rimni rinci rinju rinka rinsa rirci rirni 420 | syn keyword lojbanGismu rirxe rismi risna ritli rivbi rokci romge ropno rorci rotsu 421 | syn keyword lojbanGismu rozgu ruble rufsu runme runta rupnu rusko rutni sabji sabnu 422 | syn keyword lojbanGismu sacki saclu sadjo sakci sakli sakta salci salpo salta samcu 423 | syn keyword lojbanGismu sampu sance sanga sanji sanli sanmi sanso santa sarcu sarji 424 | syn keyword lojbanGismu sarlu sarxe saske satci satre savru sazri sefta selci selfu 425 | syn keyword lojbanGismu semto senci senpi senta senva sepli serti setca sevzi sfani 426 | syn keyword lojbanGismu sfasa sfofa sfubu siclu sicni sidbo sidju sigja silka silna 427 | syn keyword lojbanGismu simlu simsa simxu since sinma sinso sinxa sipna sirji sirxo 428 | syn keyword lojbanGismu sisku sisti sitna sivni skaci skami skapi skari skicu skiji 429 | syn keyword lojbanGismu skina skori skoto skuro slabu slaka slami slanu slari slasi 430 | syn keyword lojbanGismu sligu slilu sliri slovo sluji sluni smacu smadi smaji smani 431 | syn keyword lojbanGismu smoka smuci smuni snada snanu snidu snime snipa snuji snura 432 | syn keyword lojbanGismu snuti sobde sodna sodva softo solji solri sombo sonci sorcu 433 | syn keyword lojbanGismu sorgu sovda spaji spali spano spati speni spisa spita spofu 434 | syn keyword lojbanGismu spoja spuda sputu sraji sraku sralo srana srasu srera srito 435 | syn keyword lojbanGismu sruma sruri stace stagi staku stali stani stapa stasu stati 436 | syn keyword lojbanGismu steba steci stedu stela stero stici stidi stika stizu stodi 437 | syn keyword lojbanGismu stuna stura stuzi sucta sudga sufti suksa sumji sumne sumti 438 | syn keyword lojbanGismu sunga sunla surla sutra tabno tabra tadji tadni tagji talsa 439 | syn keyword lojbanGismu tamca tamji tamne tanbo tance tanjo tanko tanru tansi tanxe 440 | syn keyword lojbanGismu tapla tarbi tarci tarla tarmi tarti taske tatpi tatru tavla 441 | syn keyword lojbanGismu taxfu tcaci tcadu tcana tcati tcena tcica tcidu tcika tcila 442 | syn keyword lojbanGismu tcima tcini tcita temci tenfa tengu terdi terpa terto tigni 443 | syn keyword lojbanGismu tikpa tilju tinbe tinci tinsa tirna tirse tirxu tisna titla 444 | syn keyword lojbanGismu tivni tixnu toknu toldi tonga tordu torni traji trano trati 445 | syn keyword lojbanGismu trene tricu trina trixe troci tsali tsani tsapi tsiju tsina 446 | syn keyword lojbanGismu tubnu tugni tujli tumla tunba tunka tunlo tunta tuple turni 447 | syn keyword lojbanGismu tutci tutra vacri vajni valsi vamji vamtu vanbi vanci vanju 448 | syn keyword lojbanGismu vasru vasxu vecnu venfu vensa verba vibna vidni vidru vifne 449 | syn keyword lojbanGismu vikmi viknu vimcu vindu vinji vipsi virnu viska vitci vitke 450 | syn keyword lojbanGismu vitno vlagi vlile vlina vlipa vofli voksa vorme vraga vreji 451 | syn keyword lojbanGismu vreta vrici vrude vrusi vukro xabju xadba xadni xagji xagri 452 | syn keyword lojbanGismu xajmi xaksu xalbo xalka xalni xamgu xampo xamsi xance xanka 453 | syn keyword lojbanGismu xanri xanto xarci xarju xarnu xasli xasne xatra xatsi xazdo 454 | syn keyword lojbanGismu xebni xebro xecto xedja xekri xelso xendo xenru xexso xindo 455 | syn keyword lojbanGismu xinmo xirma xislu xispo xlali xlura xotli xrabo xrani xriso 456 | syn keyword lojbanGismu xruba xruki xrula xruti xukmi xunre xurdo xusra xutla zabna 457 | syn keyword lojbanGismu zajba zalvi zanru zarci zargu zasni zasti zbabu zbani zbasu 458 | syn keyword lojbanGismu zbepi zdani zdile zekri zenba zepti zetro zgana zgike zifre 459 | syn keyword lojbanGismu zinki zirpu zivle zmadu zmiku zukte zumri zungi zunle zunti 460 | syn keyword lojbanGismu zutse zvati 461 | 462 | " Add your favorite unofficial cultural gismu here! 463 | 464 | syn keyword lojbanGismuUnofficial loglo norgo nuzlo spero talno turko xorvo 465 | 466 | hi def lojbanComment term=None cterm=None gui=None 467 | hi def lojbanPause term=bold cterm=bold gui=bold 468 | hi def lojbanValsiUnrecognized term=reverse ctermfg=Red gui=undercurl guifg=Red guisp=Magenta 469 | hi def lojbanValsiUnrecognizedConsonantError term=reverse ctermbg=Red gui=undercurl guibg=Red guisp=Red 470 | hi def lojbanValsiUnrecognizedVowelError term=reverse ctermbg=Red gui=undercurl guibg=Red guisp=Red 471 | hi def lojbanFuhivlaUnrecognized term=reverse ctermfg=Red gui=undercurl guifg=Blue guisp=Magenta 472 | hi def lojbanFuhivlaUnrecognizedConsonantError term=reverse ctermbg=Red gui=undercurl guibg=Red guisp=Red 473 | hi def lojbanFuhivlaUnrecognizedVowelError term=reverse ctermbg=Red gui=undercurl guibg=Red guisp=Red 474 | hi def lojbanFuhivlaUnrecognizedHyphenError term=reverse ctermbg=Red gui=undercurl guibg=Red guisp=Red 475 | hi def lojbanFuhivla term=underline ctermfg=Blue guifg=Blue 476 | hi def lojbanFuhivlaConsonantError term=reverse ctermbg=Red gui=undercurl guibg=Red guisp=Red 477 | hi def lojbanFuhivlaVowelError term=reverse ctermbg=Red gui=undercurl guibg=Red guisp=Red 478 | hi def lojbanFuhivlaSlinkuhi term=reverse ctermfg=Red gui=undercurl guifg=Blue guisp=Magenta 479 | hi def lojbanFuhivlaSlinkuhiConsonantError term=reverse ctermbg=Red gui=undercurl guibg=Red guisp=Red 480 | hi def lojbanFuhivlaBreakable term=reverse ctermfg=Red gui=undercurl guifg=Blue guisp=Magenta 481 | hi def lojbanFuhivlaBreakableConsonantError term=reverse ctermbg=Red gui=undercurl guibg=Red guisp=Red 482 | hi def lojbanFuhivlaBreakableVowelError term=reverse ctermbg=Red gui=undercurl guibg=Red guisp=Red 483 | hi def lojbanFuhivlaStrong term=underline ctermfg=Blue guifg=Blue 484 | hi def lojbanFuhivlaStrongConsonantError term=reverse ctermbg=Red gui=undercurl guibg=Red guisp=Red 485 | hi def lojbanFuhivlaStrongVowelError term=reverse ctermbg=Red gui=undercurl guibg=Red guisp=Red 486 | hi def lojbanLujvo term=underline ctermfg=Cyan guifg=Cyan 487 | hi def lojbanLujvoConsonantError term=reverse ctermbg=Red gui=undercurl guibg=Red guisp=Red 488 | hi def lojbanLujvoVowelError term=reverse ctermbg=Red gui=undercurl guibg=Red guisp=Red 489 | hi def lojbanRafsiCultural term=underline ctermfg=Blue gui=undercurl guifg=Cyan guisp=Blue 490 | hi def lojbanRafsiCulturalConsonantError term=reverse ctermbg=Red gui=undercurl guibg=Red guisp=Red 491 | hi def lojbanRafsiCulturalVowelError term=reverse ctermbg=Red gui=undercurl guibg=Red guisp=Red 492 | hi def lojbanLujvoTosmabru term=reverse ctermfg=Red gui=undercurl guifg=Cyan guisp=Magenta 493 | hi def lojbanLujvoTosmabruConsonantError term=reverse ctermbg=Red gui=undercurl guibg=Red guisp=Red 494 | hi def lojbanLujvoTosmabruVowelError term=reverse ctermbg=Red gui=undercurl guibg=Red guisp=Red 495 | hi def lojbanGismuUnknown term=reverse ctermfg=Red gui=undercurl guifg=Green guisp=Magenta 496 | hi def lojbanGismuSpecificError term=reverse ctermbg=Green gui=undercurl guibg=Green guisp=Green 497 | hi def lojbanGismuConsonantError term=reverse ctermbg=Red gui=undercurl guibg=Red guisp=Red 498 | hi def lojbanCmavoSimple term=bold ctermfg=Yellow guifg=Brown 499 | hi def lojbanCmavoExperimental term=bold ctermfg=Blue gui=undercurl guifg=Brown guisp=Blue 500 | hi def lojbanCmavoIllegal term=reverse ctermfg=Red gui=undercurl guifg=Brown guisp=Magenta 501 | hi def lojbanCmavoUnassigned term=reverse ctermfg=Blue gui=undercurl guifg=Brown guisp=Blue 502 | hi def lojbanCmavoWrongHesitation term=reverse ctermfg=Red gui=undercurl guifg=Brown guisp=Magenta 503 | hi def lojbanCmavoDiphtongError term=reverse ctermbg=Red gui=undercurl guibg=Red guisp=Red 504 | hi def lojbanCmavoVowelError term=reverse ctermbg=Red gui=undercurl guibg=Red guisp=Red 505 | hi def lojbanCmene term=italic ctermfg=Magenta guifg=Magenta 506 | hi def lojbanCmeneConsonantError term=reverse ctermbg=Red gui=undercurl guibg=Red guisp=Red 507 | hi def lojbanCmeneSpecificError term=reverse ctermbg=Red gui=undercurl guibg=Red guisp=Red 508 | hi def lojbanValsiIllegal term=reverse ctermfg=Red gui=undercurl guifg=Red guisp=Magenta 509 | hi def lojbanValsiIllegalConsonantError term=reverse ctermbg=Red gui=undercurl guibg=Red guisp=Red 510 | hi def lojbanValsiIllegalSpecificError term=reverse ctermbg=Red gui=undercurl guibg=Red guisp=Red 511 | hi def lojbanQuoteSymbol term=bold cterm=bold gui=bold 512 | hi def lojbanTextForeign term=None cterm=None gui=None 513 | hi def lojbanGismu term=underline ctermfg=Green guifg=Green 514 | hi def lojbanGismuUnofficial term=underline ctermfg=Blue gui=undercurl guifg=Green guisp=Blue 515 | 516 | if g:lojban_fancy == 0 517 | 518 | let s:colors = ["Black", "DarkBlue", "DarkGreen", "DarkCyan", 519 | \ "DarkRed", "DarkMagenta", "Brown", "Gray", 520 | \ "DarkGray", "Blue", "Green", "Cyan", 521 | \ "Red", "Magenta", "Yellow", "White"] 522 | 523 | let s:synID = 1 524 | let s:name = synIDattr(s:synID, "name", "cterm") 525 | 526 | while s:name != "" 527 | if s:name =~ "^lojban" 528 | let s:fg = synIDattr(s:synID, "fg", "cterm") 529 | let s:fgarg = "" 530 | if s:fg != -1 531 | if s:fg =~ '^\d\+$' 532 | let s:fg = s:colors[s:fg] 533 | endif 534 | let s:guifg = s:fg == "Yellow" ? "Brown" : s:fg 535 | let s:fgarg = " ctermfg=" . s:fg . " guifg=" . s:guifg 536 | endif 537 | let s:bg = synIDattr(s:synID, "bg", "cterm") 538 | let s:bgarg = "" 539 | if s:bg != -1 540 | if s:bg =~ '^\d\+$' 541 | let s:bg = s:colors[s:bg] 542 | endif 543 | let s:bgarg = " ctermbg=" . s:bg . " guibg=" . s:bg 544 | endif 545 | let s:attr = "None" 546 | for s:what in ["bold", "italic", "reverse", "underline", "undercurl"] 547 | if synIDattr(s:synID, s:what, "cterm") 548 | let s:attr .= "," . s:what 549 | endif 550 | endfor 551 | let s:arg = " cterm=" . s:attr . " gui=" . s:attr 552 | execute "hi clear " . s:name 553 | execute "hi def " . s:name . s:arg . s:fgarg . s:bgarg 554 | endif 555 | let s:synID += 1 556 | let s:name = synIDattr(s:synID, "name", "cterm") 557 | endwhile 558 | 559 | endif 560 | 561 | delcommand SUB 562 | 563 | let b:current_syntax = "lojban" 564 | --------------------------------------------------------------------------------