diff --git a/user-doc/Miscelaneous.md b/user-doc/Miscelaneous.md index de99e8fe4d8eaddd66f4cb53db3a221f0656e13b..a73eaa3b123545528ca46d5bb85074b5e17ca003 100644 --- a/user-doc/Miscelaneous.md +++ b/user-doc/Miscelaneous.md @@ -190,6 +190,7 @@ As such, all the meaningful words in the input should be highlighted: - Values provided by users (such as the number of the atoms following `ATOMS=`) will be highlighted with a different color (`String` in VIM). - Comments (see \ref comments) will be highlighted as comments (`Comment` in VIM). +- String `__FILL__` (extensively used in tutorials to indicate parts to be completed) is highlighted (`Todo` in VIM). If you see something that is not highlighted and appears in black, this is likely going to result in an error at runtime. Think of this as a sort of preliminary spell-check. diff --git a/vim/vimsyntax.sh b/vim/vimsyntax.sh index d5a6714b11d117709bd123509d29ce2f2ed3af0f..6b3418ec6a67227582b3f93480bcbac6d59a7a50 100755 --- a/vim/vimsyntax.sh +++ b/vim/vimsyntax.sh @@ -216,13 +216,13 @@ for a in b:plumedActions elseif(b["menu"]=="(flag)") let string='"\v<' . b["word"] . '>"' endif - execute 'syntax match plumedKeywords' . action_ . ' ' . string . ' contained contains=plumedStringInKeyword' + execute 'syntax match plumedKeywords' . action_ . ' ' . string . ' contained contains=plumedStringInKeyword,plumedFillTodo' endfor " single line, with explicit LABEL " matching action at beginning of line, till the end of the line " can contain all the keywords associated with this action, plus strings, label, and comments -execute 'syntax region plumedLine' . action_ . ' matchgroup=plumedAction' . action_ . ' start=/\v^\s*' . action . '>/ excludenl end=/$/ contains=plumedComment,plumedKeywords' . action_ . ',plumedLabel,plumedStringOneline fold' +execute 'syntax region plumedLine' . action_ . ' matchgroup=plumedAction' . action_ . ' start=/\v^\s*' . action . '>/ excludenl end=/$/ contains=plumedComment,plumedKeywords' . action_ . ',plumedLabel,plumedStringOneline,plumedFillTodo fold' " multiple line, with explicit LABEL " first row might contain extra words before arriving at the dots " thus continuation dots are matched by plumedDots @@ -230,12 +230,12 @@ execute 'syntax region plumedLine' . action_ . ' matchgroup=plumedAction' . acti " ends on dots, possibly followed by the same action name and possibly a comment " comments and initial dots are not part of the match " can contain all the keywords associated with this action, plus strings, label, and comments -execute 'syntax region plumedCLine' . action_ . ' matchgroup=plumedAction' . action_ . ' start=/\v^\s*' . action . '>(.+\.\.\.\s*(#.*)*$)@=/ end=/\v^\s*\.\.\.(\s+' . action . ')?\s*((#.*)*$)@=/ contains=plumedComment,plumedKeywords' . action_ . ',plumedLabel,plumedString,plumedDots fold' +execute 'syntax region plumedCLine' . action_ . ' matchgroup=plumedAction' . action_ . ' start=/\v^\s*' . action . '>(.+\.\.\.\s*(#.*)*$)@=/ end=/\v^\s*\.\.\.(\s+' . action . ')?\s*((#.*)*$)@=/ contains=plumedComment,plumedKeywords' . action_ . ',plumedLabel,plumedString,plumedDots,plumedFillTodo fold' " single line, with label: syntax " matching label followed by action " can contain all the keywords associated with this action, plus strings and comments " labels are not allwed -execute 'syntax region plumedLLine' . action_ . ' matchgroup=plumedAction' . action_ . ' start=/\v^\s*[^ #@][^ #]*:\s+' . action . '/ excludenl end=/$/ contains=plumedComment,plumedKeywords' . action_ . ',plumedStringOneline fold' +execute 'syntax region plumedLLine' . action_ . ' matchgroup=plumedAction' . action_ . ' start=/\v^\s*[^ #@][^ #]*:\s+' . action . '/ excludenl end=/$/ contains=plumedComment,plumedKeywords' . action_ . ',plumedStringOneline,plumedFillTodo fold' " multiple line, with label: syntax " first row might contain extra words before arriving at the dots " thus continuation dots are matched by plumedDots @@ -243,7 +243,7 @@ execute 'syntax region plumedLLine' . action_ . ' matchgroup=plumedAction' . act " comments and dots are not part of the match " ends on dots, possibly followed by the same label and possibly a comment " comments and initial dots are not part of the match -execute 'syntax region plumedLCLine' . action_ . ' matchgroup=plumedAction' . action_ . ' start=/\v^\s*\z([^ #@][^ #]*\:)\s+' . action . '>(.+\.\.\.\s*(#.*)*$)@=/ end=/\v^\s*\.\.\.(\s+\z1)?\s*((#.*)*$)@=/ contains=plumedComment,plumedKeywords' . action_ . ',plumedString,plumedDots fold' +execute 'syntax region plumedLCLine' . action_ . ' matchgroup=plumedAction' . action_ . ' start=/\v^\s*\z([^ #@][^ #]*\:)\s+' . action . '>(.+\.\.\.\s*(#.*)*$)@=/ end=/\v^\s*\.\.\.(\s+\z1)?\s*((#.*)*$)@=/ contains=plumedComment,plumedKeywords' . action_ . ',plumedString,plumedDots,plumedFillTodo fold' " this is a hack required to match the ACTION when it is in the second line execute 'syntax match plumedSpecial' . action_ . ' /\v(\.\.\.\s*(#.*)*\_s*)@<=' . action . '>/ contained' execute 'highlight link plumedSpecial' . action_ . ' Type' @@ -252,7 +252,7 @@ execute 'highlight link plumedSpecial' . action_ . ' Type' " matching label, dots, possibly comments, newline, then action name " comments, dots, and action are not part of the match " ends on dots possibly followed by the same label and possibly a comment -execute 'syntax region plumedLCLine' . action_ . ' matchgroup=plumedAction' . action_ . ' start=/\v^\s*\z([^ #@][^ #]*\:)\s+(\.\.\.\s*(#.*)*\_s*' . action . ')@=/ end=/\v^\s*\.\.\.(\s+\z1)?\s*((#.*)*$)@=/ contains=plumedComment,plumedKeywords' . action_ . ',plumedString,plumedSpecial' . action_ . ',plumedDots fold' +execute 'syntax region plumedLCLine' . action_ . ' matchgroup=plumedAction' . action_ . ' start=/\v^\s*\z([^ #@][^ #]*\:)\s+(\.\.\.\s*(#.*)*\_s*' . action . ')@=/ end=/\v^\s*\.\.\.(\s+\z1)?\s*((#.*)*$)@=/ contains=plumedComment,plumedKeywords' . action_ . ',plumedString,plumedSpecial' . action_ . ',plumedDots,plumedFillTodo fold' execute 'highlight link plumedAction' . action_ . ' Type' execute 'highlight link plumedKeywords' . action_ . ' Statement' endfor @@ -266,13 +266,19 @@ syntax match plumedStringInKeyword /\v(<[^ #]+\=)@<=[^ #]+/ contained highlight link plumedStringInKeyword String " Matching label -syntax match plumedLabel "\v<LABEL\=[^ #]*" contained contains=plumedLabelWrong +syntax match plumedLabel "\v<LABEL\=[^ #]*" contained contains=plumedLabelWrong,plumedFillTodo highlight link plumedLabel Type " Errors syntax match plumedLabelWrong "\v<LABEL\=\@[^ #]*" contained highlight link plumedLabelWrong Error +" Todo +" This is used since the Trieste tutorials to indicate +" parts that should be filled by the user +syntax match plumedFillTodo "__FILL__" +highlight link plumedFillTodo Todo + syntax region plumedComment start="\v^\s*ENDPLUMED>" end="\%$" fold syntax match plumedComment excludenl "\v#.*$" highlight link plumedComment Comment