210322.1.1 · 75285f816de0d2bfbddcbb7ac832d41e9158b5d4
Resolve "Roadmap 4.0"
reading declarations
@@ -40,7 +40,7 @@ insert_final_newline = true ## Make Files #############-[{*[Mm]akefile*,*.mak,*.mk,depend}]+[makefile] indent_style = tab indent_size = 2 end_of_line = lf
@@ -8,12 +8,16 @@ Developer of the Artistic Style lib: Tal Davidson <davidsont at bigfoot com> Jim Pattee <jimp03 at email com> +Developer of the PicoJSON lib:+Kazuho Oku+ Developer of xterm 256 colour best matching functions: Wolfgang Frisch <wf at frexx de> Developer of the argparser class: Antonio Diaz Diaz + Language definitions: Christian Perle (Povray)
@@ -6,6 +6,61 @@ :toc: left :toclevels: 1 +== highlight 4.0 beta 7++15.03.2021++ - removed `extras/web_plugins`++== highlight 4.0 beta 6++20.02.2021++ - added user-select default property to HTML line number style++== highlight 4.0 beta 5++20.02.2021++ - revised color themes++== highlight 4.0 beta 4++16.02.2021++ - added two more keyword styles for default themes+ - added Custom theme attributes for Plain TeX, LaTeX, SVG and Pango+ - enabled syntax message output with `--ls-syntax-error`+ - GUI: enabled syntax error checkbox++== highlight 4.0 beta 3++11.02.2021++ - added Custom theme attribute+ - enabled inline stylesheets with `--ls-hover`+ - added Error and Hover theme properties+ - enabled syntax error highlighting with `ls-semantic`++== highlight 4.0 beta 2++09.02.2021++ - improved LSP message handling+ - added delay LSP parameter+ - added LSP semantic token styles to base16 themes+ - CLI: enabled `--ls-semantic` option+ - GUI: enabled semantic checkbox and a server capability test++== highlight 4.0 beta 1++30.01.2021++ - added support for the language server protocol+ - added new configuration file lsp.conf+ - CLI: added `ls-profile`, `--ls-workspace`,`--ls-hover`+ - CLI: deprecated `--start-nested`, `--reformat=user`, `--reformat-option`, `--base16`, `--delim-cr`, `--plug-in-read`+ - GUI: added LSP configuration tab == highlight 3.61
@@ -21,11 +21,11 @@ root of highlight-x.x | |-- extras # extras for highlight scripting | |-- css-themes # detailed theme explanation+| |-- eclipse-themes # eclipsecolorthemes.org converter script | |-- json # Lua to JSON converters | |-- langdefs-res. # language definition template with explanations | |-- pandoc # Pandoc macros | |-- tcl # TCL extension-| |-- web_plugins # plugins for various web toolkits | |-- pywal # pywal terminal colouring template | `-- swig # SWIG interface and sample code |-- gui_files # supporting files for the optional GUI@@ -56,9 +56,11 @@ makefile # basic makefile README # user manual README_DE # German user manual README_LANGLIST # list of supported languages+README_LSP_CLIENT # Language server instructions README_PLUGINS # plug-in manual README_REGEX # regular expression manual README_RELEASE # information for packagers+README_V4_MIGRATION # version 4 breaking changes TODO # just ideas, no plans @@ -117,7 +119,7 @@ a) Install Qt Creator IDE (www.qt.io) b) Install MingW (gcc toolchain) - -Download Online-Installer: + -Download Online-Installer: https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/installer/ -Start mingw-w64-install.exe and select default options -Add bin directory of the downloaded files to the system PATH@@ -129,7 +131,7 @@ c) Compile Qt: -If you install Strawberry Perl, remove its g++ compiler path from your system PATH -Open cmd.exe and change into a directory "QT-ROOT" which will contain the Qt sources -Execute the following cmds- git clone git://code.qt.io/qt/qt5.git + git clone git://code.qt.io/qt/qt5.git cd qt5 git checkout 5.15.0 perl init-repository@@ -150,13 +152,13 @@ e) Install Boost -Download and extract package from boost.org (no compilation needed) -f) Compile Lua +f) Compile Lua -Download source package: https://www.lua.org/download.html -Open QtCreator and create a new Project ("without Qt") -Import all c files of the Lua package except lua.c and luac.c- -Edit the project file like this: - + -Edit the project file like this:+ TEMPLATE = lib CONFIG += console CONFIG -= app_bundle@@ -169,10 +171,10 @@ f) Compile Lua g) Install upx from http://upx.sourceforge.net/ -h) Open the pro files in src/w32-projects and src/gui_qt in QtCreator and +h) Open the pro files in src/w32-projects and src/gui_qt in QtCreator and adjust the paths of libraries and tools. Compile the lib project first. - + 3.3 Precompiled packages ------------------------ @@ -218,7 +220,7 @@ http://packages.ubuntu.com/oneiric/allpackages Windows Chocolatey https://chocolatey.org/packages/highlight - + 4. Known compiler issues ======================== @@ -261,19 +263,19 @@ it with the -static option (see src/makefile, LDFLAGS variable). Linux Mint -There is a system script called highlight which is located in a preferenced path: +There is a system script called highlight which is located in a preferenced path: mintsystem provides: /usr/local/bin/highlight highlight provides: /usr/bin/highlight -Calling this script with the true highlight command line options will have no effect. +Calling this script with the true highlight command line options will have no effect. See bug tracker items: https://bugs.launchpad.net/linuxmint/+bug/593583 and https://bugs.launchpad.net/linuxmint/+bug/815005- + OpenSUSE Leap 42.2 ================== -The lua-devel package installation causes error messages. +The lua-devel package installation causes error messages. Workaround: ignore dependency conflict.
@@ -1,6 +1,6 @@ = HIGHLIGHT MANUAL André Simon-v3.58, August 2020+v4.0-beta, January 2021 :lang: en :toc: left :toc-title: Contents@@ -22,10 +22,12 @@ v3.58, August 2020 :README_PLUGINS: pass:q[link:README_PLUGINS.adoc[`README_PLUGINS`]] :README_REGEX: pass:q[link:README_REGEX.adoc[`README_REGEX`]] :README_TESTCASES: pass:q[link:README_TESTCASES.adoc[`README_TESTCASES`]]+:README_LSP_CLIENT: pass:q[link:README_LSP_CLIENT.adoc[`README_LSP_CLIENT`]] // Highlight Docs (uncovenrted): :INSTALL: pass:q[link:INSTALL[`INSTALL`]] // Source files: :cpp_qt_lua: pass:q[link:plugins/cpp_qt.lua[`cpp_qt.lua`^]]+:lsp_conf: pass:q[link:lsp.conf[`lsp.conf`^]] :filetypes_conf: pass:q[link:filetypes.conf[`filetypes.conf`^]] :fileopenfilter_conf: pass:q[link:gui_files/ext/fileopenfilter.conf[`gui_files/ext/fileopenfilter.conf`^]] :makefile: pass:q[link:makefile[`makefile`^]]@@ -41,9 +43,7 @@ v3.58, August 2020 :README_pandoc: pass:q[link:extras/pandoc/README.html[`README.html`]] :extras_tcl: pass:q[link:extras/tcl/[`extras/tcl/`]] :README_TCL: pass:q[link:extras/tcl/README_TCL[`README_TCL`]]-:extras_web_plugins: pass:q[link:extras/web_plugins/[`extras/web_plugins/`]] // External Links:-:source-highlight: pass:[http://www.gnu.org/software/src-highlite/[source-highlight^]] :andre-simon_de: pass:[http://www.andre-simon.de[www.andre-simon.de^]] @@ -187,7 +187,7 @@ General options: --config-file=<file> set path to a lang or theme file -d, --outdir=<directory> name of output directory -h, --help[=topic] print this help or a topic description- <topic> = [syntax, theme, plugin, config, test]+ <topic> = [syntax, theme, plugin, config, test, lsp] -i, --input=<file> name of single input file -o, --output=<file> name of single output file -P, --progress print progress bar in batch mode@@ -195,7 +195,8 @@ General options: -S, --syntax=<type|path> specify type of source code or syntax file path --syntax-by-name=<name> specify type of source code by given name will not read a file of this name, useful for stdin- -v, --verbose print debug info+ --syntax-supported test if the given syntax can be loaded+ -v, --verbose print debug info; repeat to show more information --force[=syntax] generate output if input syntax is unknown --list-scripts=<type> list installed scripts <type> = [langs, themes, plugins]@@ -210,8 +211,6 @@ General options: --print-style print stylesheet only (see --style-outfile) --skip=<list> ignore listed unknown file types (Example: --skip='bak;c~;h~')- --start-nested=<lang> define nested language which starts input- without opening delimiter --stdout output to stdout (batch mode, --print-style) --validate-input test if input is text, remove Unicode BOM --version print version and copyright information@@ -230,10 +229,7 @@ Output formatting options: -F, --reformat=<style> reformats and indents output in given style <style> = [allman, gnu, google, horstmann, java, kr, linux, lisp, mozilla, otbs, pico,- vtk, ratliff, stroustrup, webkit, whitesmith, user]- The user style does not apply a predefined scheme.- Use --reformat-option to define the reformatting.- --reformat-option=<opt> apply an astyle cmd line option (assumes -F)+ vtk, ratliff, stroustrup, webkit, whitesmith] -I, --include-style include style definition in output file -J, --line-length=<num> line length before wrapping (see -V, -W) -j, --line-number-length=<num> line number width incl. left padding (default: 5)@@ -253,8 +249,6 @@ Output formatting options: --wrap-no-numbers omit line numbers of wrapped lines (assumes -l) -z, --zeroes pad line numbers with 0's- --base16[=theme] use a theme of the Base16 collection- --delim-cr set CR as end-of-line delimiter (MacOS 9) --isolate output each syntax token separately (verbose output) --keep-injections output plug-in injections in spite of -f --kw-case=<case> change case of case insensitive keywords@@ -274,7 +268,7 @@ Output formatting options: --class-name=<name> set CSS class name prefix; omit class name if set to NONE --inline-css output CSS within each tag (verbose output)- --enclose-pre enclose fragmented output with pre tag + --enclose-pre enclose fragmented output with pre tag (assumes -f) @@ -289,7 +283,7 @@ LaTeX output options: RTF output options: --page-color include page color attributes- -x, --page-size=<ps> set page size + -x, --page-size=<ps> set page size <ps> = [a3, a4, a5, b4, b5, b6, letter] --char-styles include character stylesheets @@ -305,20 +299,18 @@ Terminal escape output options (xterm256 or truecolor): --canvas[=width] set background colour padding (default: 80) -GNU source-highlight compatibility options:-- --doc create stand alone document- --no-doc cancel the --doc option- --css=filename the external style sheet filename- --src-lang=STRING source language- -t, --tab=INT specify tab length- -n, --line-number[=0] number all output lines, optional padding- --line-number-ref[=p] number all output lines and generate an anchor,- made of the specified prefix p + the line- number (default='line')- --output-dir=path output directory- --failsafe if no language definition is found for the- input, it is simply copied to the output+Language Server options:++ --ls-profile=<server> read LSP configuration from lsp.conf+ --ls-delay=<ms> set server initialization delay+ --ls-exec=<bin> set server executable name+ --ls-option=<option> set server CLI option (can be repeated)+ --ls-hover execute hover requests (HTML output only)+ --ls-semantic retrieve semantic token types (requires LSP 3.16)+ --ls-syntax=<lang> set syntax which is understood by the server+ --ls-syntax-error retrieve syntax error information+ (assumes --ls-hover or --ls-semantic)+ --ls-workspace=<dir> set workspace directory to init. the server ................................................................................ === GUI OPTIONS@@ -352,7 +344,7 @@ cat test.py | highlight --syntax py ................................................................................ If there exist multiple suffixes (like `C`, `cc`, `cpp` and `h` for C++ files),-they are mapped to a language definition in `$CONF_DIR/filetypes.conf`.+they are mapped to a language definition in {filetypes_conf}. Highlight enters the batch processing mode if multiple input files are given or if `--batch-recursive` is set.@@ -410,23 +402,6 @@ highlight -S txt --out-format=latex README > README.tex ....................................................... -=== GNU SOURCE-HIGHLIGHT COMPATIBILITY--The command line interface is extensively harmonised with {source-highlight}.--The following highlight options have the same meaning as in source-highlight:--`--input`, `--output`, `--help`, `--version`, `--out-format`, `--title`, `--data-dir`,-`--verbose`, `--quiet`--These options were added to enhance compatibility:--`--css`, `--doc`, `--failsafe`, `--line-number`, `--line-number-ref`, `--no-doc`, `--tab`,-`--output-dir`, `--src-lang`--These switches provide a common highlighter interface for scripts, plugins etc.-- === ADVANCED OPTIONS ==== Prevent parsing of binary input files@@ -436,20 +411,6 @@ files using `--validate-input`. This flag causes highlight to match the input fi header with a list of magic numbers. If a binary file type is detected, highlight quits with an error message. This switch also removes an UTF-8 BOM in the output. -==== Highlight nested code without starting delimiter--If a file starts with an embedded code section which misses an appropriate opening-delimiter, the `--start-nested` option will switch to the nested language mode.-This can be useful with LuaTeX files:--......................................................-highlight luatex.tex --latex --start-nested=inc_luatex-......................................................--`inc_luatex` is a Lua language definition with TeX line comments.-The nested code section has to end with the ending delimiter defined in the host-language definition.- ==== Test new configuration scripts The option `--config-file` helps to test new config files. The argument file must be@@ -461,7 +422,7 @@ highlight --config-file xxx.lang --config-file yyy.theme -I ==== Debug language definitions -Use `--verbose` to display Lua and syntax data.+Use `--verbose` to display Lua and syntax data. Apply twice to print more information. ==== Remove an UTF8 BOM: @@ -490,14 +451,16 @@ Since version 2.45, highlight supports special notations within comments to test its syntax recognition. See {README_TESTCASES} for details. +=== LSP CLIENT++Since version 4.0, highlight supports LSP to enhance its output.+See {README_LSP_CLIENT} for details. == CONFIGURATION === FILE FORMAT Configuration files are Lua scripts.-Please refer to http://www.lua.org/manual/5.1/manual.html for more details-about the Lua syntax. For more details about the Lua syntax, please refer to: @@ -557,16 +520,16 @@ Keywords = { { Id, List|Regex, Group?, Priority?, Constraints? } } List: List, list of keywords Regex: String, regular expression Group: Integer, capturing group id of regular expression, defines part of- regex which should be returned as keyword (optional; if not set, - the match with the highest group number is returned (counts from + regex which should be returned as keyword (optional; if not set,+ the match with the highest group number is returned (counts from left to right)) Priority: Integer, if not zero no more regexes will be evaluated if this regex matches Constraints: table consisting of:- Line: Integer, limit match to line number, + Line: Integer, limit match to line number, Filename: String, limit match to input file name- -Regular expressions are evaluated in the their order within Keywords. If a regex ++Regular expressions are evaluated in the their order within Keywords. If a regex does not appear to match, there might be a conflicting expression listed before. @@ -602,16 +565,16 @@ NestedSections = {Lang, Delimiter= {} } Lang: String, name of nested language Delimiter: List, contains open and close delimiters of the code section - + KeywordFormatHints={ { Id, Bold?, Italic?, Underline? } } Id: Integer, keyword group id whose attributes should be changed Bold: Boolean, font weight property Italic: Boolean, font style property Underline: Boolean, font decoration property- + These hints may have no effect if multiple syntax types are highlighted in batch mode without --include-style.- + Description: String, Defines syntax description Categories: Table, List of categories (config, source, script, etc)@@ -761,14 +724,14 @@ Colour themes contain the formatting information of the syntax elements which are described in language definitions. The files have to be stored as `.theme` in {themes}.-Apply a theme with the `--style` option. Use `--base16` to use one of the included-Base16 themes (located in {themes_base16}).+Apply a theme with the `--style` option. Prepend `base16/` to the name in order+to use one of the included Base16 themes (located in {themes_base16}). ==== Format attributes ................................................................................-Attributes = {Colour, Bold?, Italic?, Underline? }+Attributes = {Colour, Bold?, Italic?, Underline?, Custom? } ................................................................................ [horizontal]@@ -776,8 +739,7 @@ Colour:: String, defines colour in HTML hex notation (`#rrggbb`) Bold:: Boolean, true if font should be bold (optional) Italic:: Boolean, true if font should be italic (optional) Underline:: Boolean, true if font should be underlined (optional)--+Custom:: Array, contains `Format` and `Style` elements to define custom styling ==== Theme elements @@ -788,38 +750,48 @@ Categories = Table, List of categories (dark, light, etc) Default = Attributes (Colour of unspecified text) -Canvas = Attributes (Background colour )+Canvas = Attributes (Background colour) -Number = Attributes (Formatting of numbers)+Number = Attributes (numbers) -Escape = Attributes (Formatting of escape sequences)+Escape = Attributes (escape sequences) -String = Attributes (Formatting of strings)+String = Attributes (strings) -Interpolation = Attributes (Formatting of interpolation sequences)+Interpolation = Attributes (interpolation sequences) -PreProcessor = Attributes (Formatting of preprocessor directives)+PreProcessor = Attributes (preprocessor directives) -StringPreProc = Attributes (Formatting of strings within preprocessor directives)+StringPreProc = Attributes (strings within preprocessor directives) -BlockComment = Attributes (Formatting of block comments)+BlockComment = Attributes (block comments) -LineComment = Attributes (Formatting of line comments)+LineComment = Attributes (line comments) -LineNum = Attributes (Formatting of line numbers)+LineNum = Attributes (line numbers) -Operator = Attributes (Formatting of operators)+Operator = Attributes (operators)++Hover = Attibutes (LSP Hover elements)++Error = Attibutes (LSP syntax errors)++ErrorMessage = Attibutes (LSP error descriptions) Keywords= { Attributes1, Attributes2, Attributes3, Attributes4,+ Attributes5,+ Attributes6, } -AttributesN: Formatting of keyword group N. There should be at least four items- to match the number of keyword groups defined in the language- definitions+AttributesN: Formatting of keyword group N.++SemanticAttributesN: An array consisting of:+ `Type`: Token Identifier of the LS protocol (V 3.16)+ `Style`: formatting of the token ................................................................................ .Example@@ -827,26 +799,46 @@ AttributesN: Formatting of keyword group N. There should be at least four items -------------------------------------------------------------------------------- Description = "vim autumn" -Categories = {"light"}+Categories = {"light", "vim"} -Default = { Colour="#404040" }-Canvas = { Colour="#fff4e8" }-Number = { Colour="#00884c" }-Escape = { Colour="#8040f0" }-String = { Colour="#00884c" }-BlockComment = { Colour="#ff5050" }+Default = { Colour="#404040" }+Canvas = { Colour="#fff4e8" }+Number = { Colour="#00884c" }+Escape = { Colour="#8040f0" }+String = { Colour="#00884c" }+BlockComment = { Colour="#ff5050" } StringPreProc = String LineComment = BlockComment-Operator = { Colour="#513d2b" } -LineNum = { Colour="#555555" } -PreProcessor = { Colour="#660000" }-Interpolation = { Colour="#CA6DE1" }+Operator = { Colour="#513d2b" }+LineNum = { Colour="#555555" }+PreProcessor = { Colour="#660000" }+Interpolation = { Colour="#CA6DE1" } Keywords = { { Colour="#80a030" }, { Colour="#b06c58" }, { Colour="#30a188" }, { Colour="#990000" },+ { Colour="#9a85ff" },+ { Colour="#85adff" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, } -------------------------------------------------------------------------------- @@ -930,7 +922,7 @@ Configuration scripts are searched in the following directories: 2. user defined directory set with `--data-dir` 3. value of the environment variable `HIGHLIGHT_DATADIR` 4. `/usr/share/highlight/`-5. `/etc/highlight/` (default location of `filetypes.conf`)+5. `/etc/highlight/` (default location of `filetypes.conf` and `lsp.conf`) 6. current working directory (fallback) These subdirectories are expected to contain the corresponding scripts:@@ -975,21 +967,6 @@ A TCL extension is located in {extras_tcl}. See {README_TCL} for installation instructions. -=== THIRD PARTY SCRIPTS AND PLUG-INS--See the {extras_web_plugins} subdirectory in the highlight package for-some plugins which integrate highlight in Wiki and Blogging software:--* DokuWiki-* MovableType-* Wordpress-* Serendipity--Other uses of highlight can be found on {andre-simon_de}-This site shows several use cases of highlight in projects like Webgit,-Evolution, Inkscape, Ranger and more.-- == BUILDING AND INSTALLING === PRECOMPILED PACKAGES
@@ -1,6 +1,6 @@ = HIGHLIGHT HANDBUCH André Simon-v3.58, August 2020+v4.0-beta, January 2021 :lang: de :toc: left :toc-title: Contents@@ -22,10 +22,12 @@ v3.58, August 2020 :README_PLUGINS: pass:q[link:README_PLUGINS.adoc[`README_PLUGINS`]] :README_REGEX: pass:q[link:README_REGEX.adoc[`README_REGEX`]] :README_TESTCASES: pass:q[link:README_TESTCASES.adoc[`README_TESTCASES`]]+:README_LSP_CLIENT: pass:q[link:README_LSP_CLIENT.adoc[`README_LSP_CLIENT`]] // Highlight Docs ( uncovenrted): :INSTALL: pass:q[link:INSTALL[`INSTALL`]] // Source files: :cpp_qt_lua: pass:q[link:plugins/cpp_qt.lua[`cpp_qt.lua`^]]+:lsp_conf: pass:q[link:lsp.conf[`lsp.conf`^]] :filetypes_conf: pass:q[link:filetypes.conf[`filetypes.conf`^]] :fileopenfilter_conf: pass:q[link:gui_files/ext/fileopenfilter.conf[`gui_files/ext/fileopenfilter.conf`^]] :makefile: pass:q[link:makefile[`makefile`^]]@@ -41,9 +43,7 @@ v3.58, August 2020 :README_pandoc: pass:q[link:extras/pandoc/README.html[`README.html`]] :extras_tcl: pass:q[link:extras/tcl/[`extras/tcl/`]] :README_TCL: pass:q[link:extras/tcl/README_TCL[`README_TCL`]]-:extras_web_plugins: pass:q[link:extras/web_plugins/[`extras/web_plugins/`]] // External Links:-:source-highlight: pass:[http://www.gnu.org/software/src-highlite/[source-highlight^]] :andre-simon_de: pass:[http://www.andre-simon.de[www.andre-simon.de^]] @@ -111,7 +111,7 @@ highlight < source.tmp > main.cpp.html --syntax-by-name main.cpp ................................................. + Sie werden die HTML-Datei und die CSS-Datei `highlight.css` im aktuellen-Verzeichnis finden. Falls Sie Eingabe-Umleitung verwenden, geben Sie den +Verzeichnis finden. Falls Sie Eingabe-Umleitung verwenden, geben Sie den Typ der Programmiersprache mit `--syntax` oder `--syntax-by-name` an. HTML mit eingebetteter CSS Definition und Zeilennummerierung ausgeben::@@ -177,7 +177,7 @@ General options: --config-file=<file> set path to a lang or theme file -d, --outdir=<directory> name of output directory -h, --help[=topic] print this help or a topic description- <topic> = [syntax, theme, plugin, config, test]+ <topic> = [syntax, theme, plugin, config, test, lsp] -i, --input=<file> name of single input file -o, --output=<file> name of single output file -P, --progress print progress bar in batch mode@@ -185,7 +185,8 @@ General options: -S, --syntax=<type|path> specify type of source code or syntax file path --syntax-by-name=<name> specify type of source code by given name will not read a file of this name, useful for stdin- -v, --verbose print debug info+ --syntax-supported test if the given syntax can be loaded+ -v, --verbose print debug info; repeat to show more information --force[=syntax] generate output if input syntax is unknown --list-scripts=<type> list installed scripts <type> = [langs, themes, plugins]@@ -200,8 +201,6 @@ General options: --print-style print stylesheet only (see --style-outfile) --skip=<list> ignore listed unknown file types (Example: --skip='bak;c~;h~')- --start-nested=<lang> define nested language which starts input- without opening delimiter --stdout output to stdout (batch mode, --print-style) --validate-input test if input is text, remove Unicode BOM --version print version and copyright information@@ -220,10 +219,7 @@ Output formatting options: -F, --reformat=<style> reformats and indents output in given style <style> = [allman, gnu, google, horstmann, java, kr, linux, lisp, mozilla, otbs, pico,- vtk, ratliff, stroustrup, webkit, whitesmith, user]- The user style does not apply a predefined scheme.- Use --reformat-option to define the reformatting.- --reformat-option=<opt> apply an astyle cmd line option (assumes -F)+ vtk, ratliff, stroustrup, webkit, whitesmith] -I, --include-style include style definition in output file -J, --line-length=<num> line length before wrapping (see -V, -W) -j, --line-number-length=<num> line number width incl. left padding (default: 5)@@ -243,8 +239,6 @@ Output formatting options: --wrap-no-numbers omit line numbers of wrapped lines (assumes -l) -z, --zeroes pad line numbers with 0's- --base16[=theme] use a theme of the Base16 collection- --delim-cr set CR as end-of-line delimiter (MacOS 9) --isolate output each syntax token separately (verbose output) --keep-injections output plug-in injections in spite of -f --kw-case=<case> change case of case insensitive keywords@@ -264,7 +258,7 @@ Output formatting options: --class-name=<name> set CSS class name prefix; omit class name if set to NONE --inline-css output CSS within each tag (verbose output)- --enclose-pre enclose fragmented output with pre tag + --enclose-pre enclose fragmented output with pre tag (assumes -f) @@ -279,7 +273,7 @@ LaTeX output options: RTF output options: --page-color include page color attributes- -x, --page-size=<ps> set page size + -x, --page-size=<ps> set page size <ps> = [a3, a4, a5, b4, b5, b6, letter] --char-styles include character stylesheets @@ -295,22 +289,19 @@ Terminal escape output options (xterm256 or truecolor): --canvas[=width] set background colour padding (default: 80) -GNU source-highlight compatibility options:-- --doc create stand alone document- --no-doc cancel the --doc option- --css=filename the external style sheet filename- --src-lang=STRING source language- -t, --tab=INT specify tab length- -n, --line-number[=0] number all output lines, optional padding- --line-number-ref[=p] number all output lines and generate an anchor,- made of the specified prefix p + the line- number (default='line')- --output-dir=path output directory- --failsafe if no language definition is found for the- input, it is simply copied to the output-................................................................................+Language Server options: + --ls-profile=<server> read LSP configuration from lsp.conf+ --ls-delay=<ms> set server initialization delay+ --ls-exec=<bin> set server executable name+ --ls-option=<option> set server CLI option (can be repeated)+ --ls-hover execute hover requests (HTML output only)+ --ls-semantic retrieve semantic token types (requires LSP 3.16)+ --ls-syntax=<lang> set syntax which is understood by the server+ --ls-syntax-error retrieve syntax error information+ (assumes --ls-hover or --ls-semantic)+ --ls-workspace=<dir> set workspace directory to init. the server+................................................................................ === GUI OPTIONEN@@ -332,8 +323,8 @@ Wird die Eingabedatei nicht direkt auf der Kommandozeile als Argument bzw. mit `--input` angegeben, kann Highlight die passende Sprachinformation nicht automatisch anhand der Dateiendung bestimmen. Lediglich einige Skriptsprachen werden anhand des Shebangs in der ersten Zeile erkannt.-Mit der Option `--syntax` oder `--syntax-by-name` muss dann der Typ der Datei -vom Benutzer angegeben werden (das Argument ist normalerweise die fuer die +Mit der Option `--syntax` oder `--syntax-by-name` muss dann der Typ der Datei+vom Benutzer angegeben werden (das Argument ist normalerweise die fuer die Programmiersprache uebliche Dateierweiterung bzw. der Dateiname). Beispiel: Wenn Sie eine Python-Datei konvertieren wollen, muss highlight die Sprachdefinition py.lang einlesen. Das korrekte Argument fuer `--syntax` ist@@ -347,7 +338,7 @@ cat test.py | highlight --syntax py Sollte es mehrere Dateierweiterungen fuer Dateien einer Programmiersprache geben (wie z.B. `C`, `cc`, `cpp`, `h` bei C++), werden diese in der Datei-`$CONF_DIR/filetypes.conf` einer Sprachdefinition zugewiesen.+{filetypes_conf} einer Sprachdefinition zugewiesen. Wenn mehrere Eingabedateien an Highlight uebergeben werden oder `--batch-recursive` gesetzt ist, wechselt das Tool in den Batch-Modus. In diesem Modus werden die@@ -407,22 +398,6 @@ highlight -S txt --out-format=latex README > readme.tex ....................................................... -=== GNU SOURCE-HIGHLIGHT KOMPATIBILITAET--Die Kommandozeilenschnittstelle ueberschneidet sich zu einem grossen Teil mit {source-highlight}.--Diese highlight-Optionen haben dieselbe Bedeutung wie bei source-highlight:- `--input`, `--output`, `--help`, `--version`, `--out-format`, `--title`, `--data-dir`,- `--verbose`, `--quiet`--Diese Optionen wurden hinzugefuegt, um die Kompatibilitaet zu verbessern:- `--css`, `--doc`, `--failsafe`, `--line-number`, `--line-number-ref`, `--no-doc`, `--tab`,- `--output-dir`, `--src-lang`--Die obigen Optionen bilden eine gemeinsame Highlighter-Schnittstelle fuer-Skripte, Plugins etc.-- === FORTGESCHRITTENE OPTIONEN ==== Parsen von Binaerdaten vermeiden@@ -434,18 +409,6 @@ Dieser Schalter fuehrt zu einem Vergleich der Datei-Header mit einer Liste von Verarbeitung mit einer Fehlermeldung ab. Mit `--validate-input` wird zusaetzlich der UTF-8 BOM in der Ausgabe unterdrueckt. -==== Hervorhebung von eingebettetem Code ohne oeffnenden Delimiter--Wenn eine Datei mit eingebettetem Code ohne einen fuer diese Syntax ueblichen-einleitenden Delimiter beginnt, kann mit der `--start-nested` Option in diese-Sprache gewechselt werden. Dies kann bei LuaTeX Dateien noetig sein:--......................................................-highlight luatex.tex --latex --start-nested=inc_luatex-......................................................--Die `inc_luatex` Definition ist eine Lua-Beschreibung mit TeX Kommentaren.- ==== Neue Konfigurationsskripte testen: Die Option `--config-file` ermoeglicht es, neue Skripte vor der Installation zu@@ -457,7 +420,8 @@ highlight --config-file xxx.lang --config-file yyy.theme -I ==== Sprachdefinitionen debuggen: -Benutzen Sie `--verbose`, um Lua- und Syntax-Daten anzuzeigen.+Benutzen Sie `--verbose`, um Lua- und Syntax-Daten anzuzeigen. Zweifach angeben+um mehr Informationen zu erhalten. ==== UTF8 BOM entfernen: @@ -485,6 +449,10 @@ Die Kommandozeilenversion beruecksichtigt folgende Variablen: Seit Version 2.45 unterstuetzt highlight spezielle Sequenzen in Kommentaren, um die eigene Syntaxerkennung zu testen. Mehr dazu in {README_TESTCASES}. +=== LSP-CLIENT++Seit Version 4.0 unterstuetzt highlight LSP, um die Ausgabe zu erweitern.+Mehr dazu in {README_LSP_CLIENT}. == KONFIGURATION @@ -555,14 +523,14 @@ Keywords = { { Id, List|Regex, Group?, Priority?, Constraints? } } Default-Themes unterstuetzen 4 Gruppen, Base16-Themes 6. List: Liste, Auflistung von Schluesselwoertern Regex: String, Regulaerer Ausdruck- Group: Integer, Capturing Group ID der Regex, bestimmt den Teil des + Group: Integer, Capturing Group ID der Regex, bestimmt den Teil des gefundenen Ausdrucks, der als Schluesselwort hervorgehoben werden- soll (optional, wenn nicht gesetzt wird der Match mit der + soll (optional, wenn nicht gesetzt wird der Match mit der hoechsten Group-ID zurueckgegeben (Zaehlung von links nach rechts))- Priority: Integer, wenn nicht Null werden keine weiteren Ausdruecke + Priority: Integer, wenn nicht Null werden keine weiteren Ausdruecke ausgewertet wenn diese Regex einen Treffer liefert Constraints: Tabelle, bestehend aus:- Line: Integer, begrenzt Suche auf die Zeilennummer, + Line: Integer, begrenzt Suche auf die Zeilennummer, Filename: String, begrenzt Suche auf den DAteinamen Regulaere Ausdruecke werden in ihrer Reihenfolge innerhalb von Keywords ausgewertet.@@ -607,7 +575,7 @@ KeywordFormatHints={ { Id, Bold?, Italic?, Underline? } } Bold: Boolean, font weight property Italic: Boolean, font style property Underline: Boolean, font decoration property- + Diese Angaben werden bei gemischten Syntaxtypen im Batch-Modus ohne --include-style nicht in allen Faellen uebernommen. @@ -763,8 +731,8 @@ Farbdefinitionen legen die Formatierung der Sprachelemente fest, die in den Sprachdefinitionen beschrieben wurden. Die Dateien muessen mit der Endung `.theme` in {themes} gespeichert werden.-Mit der `--style` (`-s`) Option wird das Farbschema angewandt. Mit `--base16` wird-eins der mitgelieferten Base16 Themes gelesen (gespeichert in {themes_base16}).+Mit der `--style` (`-s`) Option wird das Farbschema angewandt. Setze `base16/` vor+den Namen, um eines der Base16 Themes zu benutzen (gespeichert in {themes_base16}). ==== Formatattribute@@ -778,8 +746,7 @@ Colour:: String, Farbe in Hex-Notation (`#rrggbb`) Bold:: Boolean, True wenn Font bold sein soll (optional) Italic:: Boolean, True wenn Font kursiv sein soll (optional) Underline:: Boolean, True wenn Font unterstrichen sein soll (optional)--+Custom:: Array, enthaelt `Format` und `Style` Attribute fuer spezielle Formatierungen ==== Theme-Elemente @@ -792,38 +759,55 @@ Default = Attributes (Farbe des nicht hervorgehobenen Texts) Canvas = Attributes (Hintergrundfarbe) -Number = Attributes (Formatierung von Zahlen)+Number = Attributes (Zahlen)++Escape = Attributes (Escape-Sequenzen)++String = Attributes (Strings) -Escape = Attributes (Formatierung von Escape-Sequenzen)+Interpolation = Attributes (Interpolationen) -String = Attributes (Formatierung von Strings)+PreProcessor = Attributes (Praeprozessor-Direktiven) -Interpolation = Attributes (Formatierung von Interpolationen)+StringPreProc = Attributes (Strings in Praeprozessor-Direktiven) -PreProcessor = Attributes (Formatierung von Praeprozessor-Direktiven)+BlockComment = Attributes (Blockkommentare) -StringPreProc = Attributes (Formatierung von Strings in- Praeprozessor-Direktiven)+LineComment = Attributes (Zeilenkommentare) -BlockComment = Attributes (Formatierung von Blockkommentaren)+LineNum = Attributes (Zeilennummern) -LineComment = Attributes (Formatierung von Zeilenkommentaren)+Operator = Attributes (Operatoren) -LineNum = Attributes (Formatierung von Zeilennummern)+Hover = Attibutes (LSP Hover Elemente) -Operator = Attributes (Formatierung von Operatoren)+Error = Attibutes (LSP Syntaxfehler)++ErrorMessage = Attibutes (LSP Fehlerbeschreibungen) Keywords= { Attributes1, Attributes2, Attributes3, Attributes4,+ Attributes5,+ Attributes6,+}++SemanticTokenTypes = {+ SemanticAttributes1,+ SemanticAttributes2 } AttributesN: Liste, Formatierung von Schluesselwoertgruppen. Es sollten mindestens vier Elemente angegeben werden, um mit der Anzahl von Schluesselwortgruppen in den Sprachdefinitionen uebereinzustimmen.++SemanticAttributesN: Ein Array bestehend aus diesen Elementen:+ `Type`: Der Token Identifier des LS-Protokolls (V 3.16)+ `Style`: Die Formatierung des Tokens+ ................................................................................ .Example@@ -831,28 +815,47 @@ AttributesN: Liste, Formatierung von Schluesselwoertgruppen. Es sollten -------------------------------------------------------------------------------- Description = "vim autumn" -Categories = {"light"}+Categories = {"light", "vim"} -Default = { Colour="#404040" }-Canvas = { Colour="#fff4e8" }-Number = { Colour="#00884c" }-Escape = { Colour="#8040f0" }-String = { Colour="#00884c" }-BlockComment = { Colour="#ff5050" }+Default = { Colour="#404040" }+Canvas = { Colour="#fff4e8" }+Number = { Colour="#00884c" }+Escape = { Colour="#8040f0" }+String = { Colour="#00884c" }+BlockComment = { Colour="#ff5050" } StringPreProc = String LineComment = BlockComment-Operator = { Colour="#513d2b" } -LineNum = { Colour="#555555" } -PreProcessor = { Colour="#660000" }-Interpolation = { Colour="#CA6DE1" }+Operator = { Colour="#513d2b" }+LineNum = { Colour="#555555" }+PreProcessor = { Colour="#660000" }+Interpolation = { Colour="#CA6DE1" } Keywords = { { Colour="#80a030" }, { Colour="#b06c58" }, { Colour="#30a188" }, { Colour="#990000" },+ { Colour="#9a85ff" },+ { Colour="#85adff" }, } +-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+} -------------------------------------------------------------------------------- @@ -941,7 +944,7 @@ Konfigurationsskripte werden in folgenden Verzeichnissen gesucht: 2. benutzerdefiniertes Verz., definiert mit `--data-dir` 3. Wert der Umgebungsvariablen `HIGHLIGHT_DATADIR` 4. `/usr/share/highlight/`-5. `/etc/highlight/` (Pfad von `filetypes.conf`)+5. `/etc/highlight/` (Pfad von `filetypes.conf` und `lsp.conf`) 6. aktuelles Arbeitsverzeichnis (Fallback) Es wird erwartet, dass folgende Unterverzeichnisse die entsprechenden Skripte@@ -982,20 +985,6 @@ Python vorhanden. Eine TCL-Erweiterung befindet sich in {extras_tcl}. Installationshinweise stehen in {README_TCL}. -=== SKRIPTE UND PLUG-INS FUER DRITTSOFTWARE--Im {extras_web_plugins} Unterverzeichnis befinden sich einige Plugins, die-Highlight in Webanwendungen integrieren:--* DokuWiki-* MovableType-* Wordpress-* Serendipity--Andere Anwendungen von highlight sind auf andre-simon.de aufgelistet.-Diese Seite verweist auf unterschiedliche Projekte die highlight integrieren,-z.B. Webgit, Evolution, Inkscape, Ranger, ...).- == KOMPILIEREN UND INSTALLIEREN
@@ -0,0 +1,147 @@+= HIGHLIGHT LANGUAGE SERVER PROTOCOL CLIENT+André Simon+:revdate: February 2021+:lang: en+:toc: left+:toc-title: Contents+:toclevels: 4+:sectnums:+:sectnumlevels: 2+:sectanchors:+// Misc Settings:+:experimental: true+:icons: font+:linkattrs: true+++== LSP SUPPORT++Starting with version 4.0, highlight will use the LSP protocol to enhance+its output.++What does this mean?++Many editors make use of "Language Servers" to get syntax information of various+programming languages without the need to implement a deep understanding of the+files'' syntax they process. Most prominent editor using LSP is VSCode.+A lot of language servers are designed and tested for this editor, since MS+published the LSP specification and VSCode is the reference. Other well known+editors with LSP support are Kate, vim, Emacs and Eclipse.++More information about LSP and editor support:+https://langserver.org/++Several beta releases are planned to introduce these features:++* add enhanced tooltips using hover requests+* add semantic highlighting+* add syntax error highlighting+++== PROFILES++Language servers are configured in lsp.conf:++++..........................................................................++Servers = {++ { Server="clangd", Exec="clangd", Syntax="c", Options={"--log=error"} },+ { Server="ccls", Exec="ccls", Syntax="c", Options={"-v=-3", "--"} },+ { Server="ccls-objc", Exec="ccls", Syntax="objc", Options={"-v=-3", "--"} },++ { Server="gopls", Exec="gopls", Syntax="go", Options={} },++ { Server="rls", Exec="rls", Syntax="rust", Options={} },+ { Server="rust-analyzer", Exec="rust-analyzer", Syntax="rust", Delay=250, Options={} },++ { Server="pyls", Exec="pyls", Syntax="python", Options={"--check-parent-process"} },++ { Server="R", Exec="R", Syntax="r", Options={"--slave", "-e", "languageserver::run()"} },++ { Server="clangd-win", Exec="F:\\LLVM\\bin\\clangd.exe", Syntax="c", Options={"--log=error"} },++}+..........................................................................++The profile settings here may be set with the corresponding --ls-* options.+++== OPTIONS++Command line options:+++..........................................................................+Language Server options:++ --ls-profile=<server> read LSP configuration from lsp.conf+ --ls-delay=<ms> set server initialization delay+ --ls-exec=<bin> set server executable name+ --ls-option=<option> set server CLI option (can be repeated)+ --ls-hover execute hover requests (HTML output only)+ --ls-semantic retrieve semantic token types (requires LSP 3.16)+ --ls-syntax=<lang> set syntax which is understood by the server+ --ls-syntax-error retrieve syntax error information+ (assumes --ls-hover or --ls-semantic)+ --ls-workspace=<dir> set workspace directory to init. the server+..........................................................................+++== THEMES++Colour themes have a new section to define semantic token styles. The+types use the same identifiers which are reported by the language server.+If the server reports a token type not listed here, it will be ignored.++++..........................................................................+-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[5] },+ { Type = 'variable', Style = Keywords[6] },+ { Type = 'enumMember', Style = Keywords[6] },+ { Type = 'function', Style = Keywords[3] },+ { Type = 'method', Style = Keywords[3] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}++-- Error token (default: red color)+Error = { Custom = { { Format = "html", Style = "color: green" } } }++-- Error message (default: color:red; border:solid 1px red;)+ErrorMessage = { Custom = { { Format = "html", Style = "color: green" } } }++-- Hover tooltip span (default: cursor:help )+Hover = { Custom = { { Format = "html", Style = "cursor:help" } } }++..........................................................................++Additional elements to describe token modifiers will be added in a later release.++=== EXAMPLE INVOCATION+++..........................................................................++highlight -I --ls-profile ccls --ls-workspace '/home/andre/Projekte/c' /home/andre/Projekte/c/re.cpp --out-format html --ls-hover > /home/andre/Projekte/c/re.cpp.ccls.html++highlight -I --ls-profile rust-analyzer --ls-workspace '/home/andre/Projekte/rust/fibo' /home/andre/Projekte/rust/fibo/src/main.rs --out-format html --ls-semantic > fibo.html+..........................................................................++The GUI offers an LSP tab to enable these options.+++=== DEBUGGING++Apply `-v -v` to print LSP messages.+++// EOF //
@@ -1,6 +1,6 @@ = HIGHLIGHT IMPORTANT RELEASE AND PACKAGING INFORMATION André Simon-:revdate: August 2017+:revdate: February 2021 :lang: en :toc: left :toc-title: Contents
@@ -0,0 +1,107 @@+= HIGHLIGHT VERSION 4.0 MIGRATION+André Simon+:revdate: March 2021+:lang: en+:toc: left+:toc-title: Contents+:toclevels: 4+:sectnums:+:sectnumlevels: 2+:sectanchors:+// Misc Settings:+:experimental: true+:icons: font+:linkattrs: true+++The major version bump will be used to enforce the following interface+and file changes:+++== REMOVED CLI OPTIONS++The following options will be removed:+++..........................................................................+ --start-nested=<lang> define nested language which starts input+ without opening delimiter++ --reformat=user+ --reformat-option=<opt> apply an astyle cmd line option (assumes -F)++ --base16[=theme] use a theme of the Base16 collection++ --delim-cr set CR as end-of-line delimiter (MacOS 9)+ --plug-in-read see --plug-in-param+..........................................................................+++These options will no longer be documented but continue to work:+++=== GNU SOURCE-HIGHLIGHT COMPATIBILITY OPTIONS+++..........................................................................+ --doc create stand alone document+ --no-doc cancel the --doc option+ --css=filename the external style sheet filename+ --src-lang=STRING source language+ -t, --tab=INT specify tab length+ -n, --line-number[=0] number all output lines, optional padding+ --line-number-ref[=p] number all output lines and generate an anchor,+ made of the specified prefix p + the line+ number (default='line')+ --output-dir=path output directory+ --failsafe if no language definition is found for the+ input, it is simply copied to the output+..........................................................................++A deprecation notice is outputted during the beta release cycle.+++== REMOVED LIBRARY FUNCTIONS+++..........................................................................++DataDir::searchDataDir -> DataDir::initSearchDirectories+CodeGenerator::setIndentationOptions+CodeGenerator::setStartingNestedLang+..........................................................................+++=== REMOVED FILES+++..........................................................................+ extras/web_plugins/*+..........................................................................+++=== RENAMED FILES+++..........................................................................+ langDefs/abap4.lang -> langDefs/abap.lang+ langDefs/coffee.lang -> langDefs/coffeescript.lang+ langDefs/docker.lang -> langDefs/dockerfile.lang+ langDefs/js.lang -> langDefs/javascript.lang+ langDefs/make.lang -> langDefs/makefile.lang+ langDefs/ps1.lang -> langDefs/powershell.lang+ langDefs/rs.lang -> langDefs/rust.lang+ langDefs/sh.lang -> langDefs/shellscript.lang+ langDefs/ts.lang -> langDefs/typescript.lang++ themes/fine_blue.theme -> themes/fineblue.theme+..........................................................................+++== NEW CONFIG FILES++++lsp.conf+++== CSS STYLE NAMES++++The `str` class was renamed to `sng` (conflicts with new st* names).++// EOF //
extras/eclipse-themes/eclipse_color_themes.py
@@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- #!/usr/bin/python -# Script to pull one of the thousands of themes available at eclipsecolorthemes.org.-# The XML file is converted to the highlight Lua file format.+# Script to pull one of the themes available at eclipsecolorthemes.org.+# The retrieved XML file is converted to the highlight Lua file format. import requests import sys@@ -10,17 +10,17 @@ import xml.etree.ElementTree as ET from datetime import date if __name__ == '__main__':- - if (len(sys.argv)!=2):- print ("Please define the theme number to download from eclipsecolorthemes.org")++ if (len(sys.argv) != 2):+ print("Please define the theme number to download from eclipsecolorthemes.org") sys.exit() themeID = sys.argv[1] - print ("Retrieving Theme #%s..." % themeID)+ print("Retrieving Theme #%s..." % themeID) r = requests.get( 'http://www.eclipsecolorthemes.org/',- params=[('view', 'empty'), ('action', 'download'),('theme', themeID),('type', 'xml')],+ params=[('view', 'empty'), ('action', 'download'), ('theme', themeID), ('type', 'xml')], ) root = ET.fromstring(r.text)@@ -31,14 +31,14 @@ if __name__ == '__main__': scheme = root.attrib['name'] author = root.attrib['author'] id = root.attrib['id']- - if (id==""):- print ("This ID is not known.")++ if (id == ""):+ print("This ID is not known.") sys.exit() - canvas = root.find('background').attrib['color'] + canvas = root.find('background').attrib['color'] default = root.find('foreground').attrib['color']- number = root.find('number').attrib['color'] + number = root.find('number').attrib['color'] operator = root.find('operator').attrib['color'] string = root.find('string').attrib['color'] escape = root.find('commentTaskTag').attrib['color']@@ -86,14 +86,30 @@ Keywords = { { Colour = "%s", Italic = false, Bold = true }, --> kwd 5 { Colour = "%s", Italic = false, Bold = true }, --> kwd 6 }++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+} """ % (today, author, url, id, scheme, canvas, default, number, operator, string, escape, stringPreProc, interpolation, lineComment, blockComment, lineNum, preprocessor, kwa, kwb, kwc, kwd, kwe, kwf) - themeName = '%s.theme' % "_".join(scheme.lower().split())+ themeName = '%s.theme' % "_".join(scheme.lower().split()) - print ("Saving Highlight Theme File %s..." % themeName)+ print("Saving Highlight Theme File %s..." % themeName) f = open(themeName, 'w') f.write(theme)
@@ -39,8 +39,6 @@ class HighlightPipe { function getInfo(){ return array( 'author' => 'Andre Simon',- 'email' => 'andre.simon1@gmx.de',- 'date' => '2015-10-13', 'url' => 'http://www.andre-simon.de/', 'version' => '1.2', );@@ -62,7 +60,7 @@ class HighlightPipe { if ($this->hl_option['line-numbers']){ $this->hl_cmd_str .= " -l -m 1";- /*$this->hl_cmd_str .= $this->get_config('hl_linenumbersberstart');*/+ if ($this->hl_option['zeroes']){ $this->hl_cmd_str .= " -z "; }
@@ -1,3 +1,5 @@+# -*- coding: utf-8 -*-+ from subprocess import * class HighlightPipe:@@ -13,14 +15,14 @@ class HighlightPipe: def getResult(self): cmd = self.cmd- for k, v in self.options.iteritems():+ for k, v in self.options.items(): option=" --%s" % k if ( v != '1'): option += "=%s" % v if (len(option)<50): cmd += option p = Popen(cmd, shell=True, bufsize=512, stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True) (child_stdin, child_stdout, child_stderr) = (p.stdin, p.stdout, p.stderr) - child_stdin.write(self.src)+ child_stdin.write(self.src.encode()) child_stdin.close() err_msg = child_stderr.readlines() if (len(err_msg)>0): return err_msg@@ -39,8 +41,8 @@ def main(): gen.options['inline-css'] = '1' gen.src = 'int main ()\n{ return 0; }' - print gen.getResult()- if not gen.success: print "Execution failed."+ print (gen.getResult())+ if not gen.success: print ("Execution failed.") if __name__=="__main__": main()
extras/langDefs-resources/template.lang
@@ -237,7 +237,7 @@ Digits = [=[ (?:0x|0X)[0-9a-fA-F]+|\d*[\.]?\d+(?:[eE][\-\+]\d+)?[lLuU]* ]=] ================================================================================ Keywords = { Id, List|Regex, Group? } - Id: Integer, keyword group id (values 1-4, can be reused for several keyword+ Id: Integer, keyword group id (values 1-6, can be reused for several keyword groups) List: List, list of keywords Regex: String, regular expression@@ -245,10 +245,10 @@ Keywords = { Id, List|Regex, Group? } which should be returned as keyword (optional; if not set, the match with the highest group number is returned (counts from left to right)) -NOTE: Keyword group Ids are not limited to 4, you can create as many as you+NOTE: Keyword group Ids are not limited to 6, you can create as many as you need; but bare in mind that most themes that ship with Highlight usually- provide definitions only for Ids 1-4, so in order to syntax-color Keyword- groups with Ids greater than 4 you'll need to define a theme that covers+ provide definitions only for Ids 1-6, so in order to syntax-color Keyword+ groups with Ids greater than 6 you'll need to define a theme that covers their definitions. --]] Keywords = {@@ -413,6 +413,9 @@ your langDef from where you left it. --[[============================================================================ CHANGELOG ================================================================================+v1.1.1 (2021/03/15) | Highlight v4+ - Updated keyword default count+ v1.1.0 (2019/03/02) | Highlight v3.49 - Added new 'Categories' element.
@@ -24,3 +24,19 @@ Keywords = {{ {{ Colour="{color14}" }}, {{ Colour="{color15}" }}, }}++SemanticTokenTypes = {{+ {{ Type = "type", Style = Keywords[2] }},+ {{ Type = "class", Style = Keywords[1] }},+ {{ Type = "struct", Style = Keywords[4] }},+ {{ Type = "interface", Style = Keywords[1] }},+ {{ Type = "parameter", Style = Keywords[6] }},+ {{ Type = "variable", Style = Keywords[5] }},+ {{ Type = "enumMember", Style = Keywords[5] }},+ {{ Type = "function", Style = Keywords[4] }},+ {{ Type = "method", Style = Keywords[4] }},+ {{ Type = "keyword", Style = Keywords[1]}},+ {{ Type = "number", Style = Number }},+ {{ Type = "regexp", Style = String }},+ {{ Type = "operator", Style = Operator }},+}}
@@ -1,5 +1,5 @@-# Simple Makefile for tclansifilter-# This file will compile the tclansifilter shared object.+# Simple Makefile for tclhighlight+# This file will compile the tclhighlight shared object. CC=g++ @@ -19,7 +19,8 @@ astyle/ASStreamIterator.cpp astyle/ASResource.cpp astyle/ASFormatter.cpp\ astyle/ASBeautifier.cpp astyle/ASEnhancer.cpp \ Diluculum/InternalUtils.cpp Diluculum/LuaExceptions.cpp Diluculum/LuaFunction.cpp\ Diluculum/LuaState.cpp Diluculum/LuaUserData.cpp Diluculum/LuaUtils.cpp Diluculum/LuaValue.cpp\-Diluculum/LuaVariable.cpp Diluculum/LuaWrappers.cpp+Diluculum/LuaVariable.cpp Diluculum/LuaWrappers.cpp\+lspclient.cpp keystore.cpp OBJECTS=$(SOURCES:.cpp=.o) tclhighlight.o BINARY=tclhighlight.so
extras/themes-resources/boilerplate.theme
@@ -2,7 +2,7 @@ * * * Highlight Theme Definition Boilerplate * * *-* v1.0.0 (2019/03/02) | Highlight v3.49 | Lua 5.3 *+* v1.0.0 (2019/03/02) | Highlight v4.0 | Lua 5.3 * * * * by Tristano Ajmone * * *@@ -38,14 +38,37 @@ Keywords = { { Colour = "#FFFFFF", Italic = false, Bold = false }, -- Id 2 / .hl .kwb { Colour = "#FFFFFF", Italic = false, Bold = false }, -- Id 3 / .hl .kwc { Colour = "#FFFFFF", Italic = false, Bold = false }, -- Id 4 / .hl .kwd+ { Colour = "#FFFFFF", Italic = false, Bold = false }, -- Id 5 / .hl .kwe+ { Colour = "#FFFFFF", Italic = false, Bold = false }, -- Id 6 / .hl .kwf ------------------------------------------------------------------------------- -- If you need to define more Keywords Groups (5, 6, 7, etc.), just add more- -- copies of the above lines.+ -- If you need to define more Groups, just add more copies of the above lines.+ ------------------------------------------------------------------------------+}++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },++ ------------------------------------------------------------------------------+ -- Add any token type your LSP server supports. ------------------------------------------------------------------------------ } --[[============================================================================ CHANGELOG ================================================================================+v1.0.1 (2021/03/15) | Highlight v4.0+ - Added SemanticTokenTypes v1.0.0 (2019/03/02) | Highlight v3.49 - First release. --]]
extras/themes-resources/css-themes/hl-theme-boilerplate.css
@@ -22,7 +22,7 @@ pre.hl { .hl.ipl { color: #cc6633; }-.hl.str {+.hl.sng { color: #a6e22e; } .hl.ppc {
extras/themes-resources/css-themes/hl-theme-boilerplate.scss
@@ -11,14 +11,14 @@ // This template covers all of Highlight syntax elements. // ==============================================================================-// Colors Scheme Definition +// Colors Scheme Definition // ============================================================================== // Define here the colors you'd like to assign to the Syntax Elements.-// +// // Example color scheme based on Wimer Hazenberg's "Base16 Monokai": // -- https://github.com/chriskempson/base16-builder/blob/master/schemes/monokai.yml -$HL-CanvasBG: #49483e; // base02 -- Fuscous Gray +$HL-CanvasBG: #49483e; // base02 -- Fuscous Gray $HL-Default: #f8f8f2; // base05 -- Pearl white $HL-Border: #a59f85; // base04 -- Tallow@@ -45,17 +45,17 @@ $HL-Keywords4: #ae81ff; // base0E -- Lavender */ // ==============================================================================-// Theme Definition +// Theme Definition // ============================================================================== pre.hl { background-color: $HL-CanvasBG; color: $HL-Default;- + // Border and padding border-radius: 4px; border: 1px solid $HL-Border; padding: 1em;- + // Some basic styling, just in case you need it... overflow: auto; font-size: 16px;@@ -68,14 +68,14 @@ pre.hl { color: $HL-Number; } &.esc {- // Escape sequences + // Escape sequences color: $HL-Escape; } &.ipl {- // Interpolation sequences + // Interpolation sequences color: $HL-Interpolation; }- &.str {+ &.sng { // Strings color: $HL-String; }@@ -98,7 +98,7 @@ pre.hl { font-style: italic; } &.lin {- // Line numbers + // Line numbers color: $HL-LineNum; } &.opt {
extras/web_plugins/dokuwiki/syntax.php
@@ -1,242 +0,0 @@-<?php-/*-Plugin Name: Highlight-Plugin URI: http://www.andre-simon.de-Description: Plugin which uses the highlight utility to generate coloured source code-Author: André Simon-Version: 1.2-Author URI: http://www.andre-simon.de---This file is part of Highlight.--Highlight is free software: you can redistribute it and/or modify-it under the terms of the GNU General Public License as published by-the Free Software Foundation, either version 3 of the License, or-(at your option) any later version.--Highlight is distributed in the hope that it will be useful,-but WITHOUT ANY WARRANTY; without even the implied warranty of-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the-GNU General Public License for more details.--You should have received a copy of the GNU General Public License-along with Highlight. If not, see <http://www.gnu.org/licenses/>.-*/--/*-== Description ==--The highlight utility converts source code of 120 programming languages to HTML -with syntax highlighting. This plugin pipes the content of <highlight>-Tags associated-with a lang parameter to highlight, and returns the output code which is included-in the Wiki page.--Usage:--Paste the following in the edit section of the wiki editing form:--<highlight cpp>#include <stdio.h>--int main (void){- printf("This is some random code");- return 0;-}</highlight>--Use the lang parameter to define the programming language (c, php, py, xml, etc).-See the highlight documentation to learn all possible languages.-See the syntax.php file for some formatting options (line numbering, code-indentation, line wrapping etc).--== Installation ==--1. Install highlight (www.andre-simon.de) on your host-2. Unzip the dokuwiki_highlight.zip file and upload the content to the - `lib/plugins/` directory- */- -if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');-if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');-require_once(DOKU_PLUGIN.'syntax.php');- -class syntax_plugin_highlight extends DokuWiki_Syntax_Plugin {-- function getInfo(){- return array(- 'author' => 'Andre Simon',- 'email' => 'andre.simon1@gmx.de',- 'date' => '2007-05-29',- 'name' => 'Highlight Plugin',- 'desc' => 'Plugin which uses the highlight utility (http://www.andre-simon.de) instead of Geshi for source code highlighting',- 'url' => 'http://wiki.splitbrain.org/wiki:plugins',- );- }- - /**- * What kind of syntax are we?- */- function getType(){- return 'formatting';- }- - /**- * What kind of syntax do we allow (optional)- */-// function getAllowedTypes() {-// return array();-// }- - /**- * What about paragraphs? (optional)- */- function getPType(){- return 'block';- }- - /**- * Where to sort in?- */ - function getSort(){- return 199;- }- - - /**- * Connect pattern to lexer- */- function connectTo($mode) {- $this->Lexer->addEntryPattern('<highlight(?=[^\r\n]*?>.*?</highlight>)',$mode,'plugin_highlight');- }- - function postConnect() {- $this->Lexer->addExitPattern('</highlight>','plugin_highlight');- }-- /**- * Handle the match- */- function handle($match, $state, $pos, &$handler){-- switch ($state) {- case DOKU_LEXER_ENTER :- break;- case DOKU_LEXER_UNMATCHED : - list($lang, $content) = preg_split('/>/u',$match,2);- $lang = trim($lang);- return array($state, $lang, $content);-- case DOKU_LEXER_EXIT :- break;- }- return array();- }- - /**- * Create output- */- function render($mode, &$renderer, $data) {- // Highlight options:- $hl_options=array();- $hl_options['hl_binary']='/highlight'; // path to the highlight binary- $hl_options['line-numbers']=false;- $hl_options['theme']='edit-kwrite'; // set color theme- $hl_options['linenumber-start']=1;- $hl_options['linenumber-zeroes']=1; // set to 1 if line numbers should be padded with zeros- $hl_options['linenumber-length']=2;- $hl_options['reformat-style']="gnu"; // possible values for C, C++ and Java Code: ansi, gnu, java, kr, linux- $hl_options['replace-tabs']=4; //number of spaces which replace a tab- $hl_options['wrap-style']=2; //0 -> disable, 1-> wrap, 2-> wrap and indent function names- $hl_options['wrap-line-length']=80; // if wrap-style <>0, this defines the line length before wrapping takes place--- if($mode == 'xhtml'){- list($state, $lang, $input_code) = $data;- $lang = preg_replace("'[^a-zA-Z]'","",$lang);- switch ($state) {- case DOKU_LEXER_ENTER :- break;- - case DOKU_LEXER_UNMATCHED : // $renderer->doc .= $renderer->_xmlEntities($match); break;- - $search = array("&",""", "<", ">","\","'"," ");- $replace = array("&","\"", "<", ">","\\","\'", " ");- $input_code = str_replace($search, $replace, $input_code);- - $descriptorspec = array(- 0 => array("pipe", "r"), // stdin is a pipe that the child will read from- 1 => array("pipe", "w") // stdout is a pipe that the child will write to- );- - $hl_cmd_str = $hl_options['hl_binary'];- $hl_cmd_str .= ' --inline-css -f ';- - if ($hl_options['line-numbers']){- $hl_cmd_str .= " -l -m ";- $hl_cmd_str .= $hl_options['linenumber-start'];- if ($hl_options['linenumber-zeroes']){- $hl_cmd_str .= " -z -j ";- $hl_cmd_str .= $hl_options['linenumber-length'];- }- }- - if ($hl_options['replace-tabs']) {- $hl_cmd_str .= " -t ";- $hl_cmd_str .= $hl_options['replace-tabs'];- }- - if ($hl_options['wrap-style']){- $hl_cmd_str .= ($hl_options['wrap-style'] == 1)? ' -V ':' -W ';- $hl_cmd_str .= " -J ";- $hl_cmd_str .= $hl_options['wrap-line-length'];- }- - if ($hl_options['reformat-style']){- $hl_cmd_str .= " -F ";- $hl_cmd_str .= $hl_options['reformat-style'];- }- - if ($hl_options['theme']){- $hl_cmd_str .= " -s ";- $hl_cmd_str .= $hl_options['theme'];- }-- $hl_cmd_str .= " -S $lang ";- - $process = proc_open($hl_cmd_str, $descriptorspec, $pipes);- - if (is_resource($process)) {- - fwrite($pipes[0], $input_code);- fclose($pipes[0]);- - $output = stream_get_contents($pipes[1]);- fclose($pipes[1]);- - // It is important that you close any pipes before calling- // proc_close in order to avoid a deadlock- proc_close($process);- }- if (!strlen($output)) {- $renderer->doc .= "<small>ERROR: Execution of highlight ($hl_cmd_str) failed or missing input. Check binary path.</small>"; - $renderer->doc .= "<pre style=\"font-size:9pt;\">";- $renderer->doc .= $renderer->_xmlEntities($input_code); - $renderer->doc .= "</pre>"; - - } else {- $renderer->doc .= "<pre style=\"font-size:9pt;\">";- $renderer->doc .= $output;- $renderer->doc .= "</pre>"; - }-- //$renderer->doc .= "<br>cmd=".$hl_cmd_str;-- break;- case DOKU_LEXER_EXIT :- break;- }- return true;- }- return false;- }-}-
extras/web_plugins/movabletype/README
@@ -1,35 +0,0 @@-Plugin Name: Highlight-Plugin URI: http://www.andre-simon.de-Description: Plugin which uses the highlight utility to generate coloured source code-Author: André Simon-Version: 1.2-Author URI: http://www.andre-simon.de/--== Description ==--The highlight utility converts source code of 120 programming languages to HTML -with syntax highlighting. This plugin pipes the content of <highlight>-Tags associated-with a lang parameter to highlight, and returns the output code which is finally included-in the MT page.--Usage:--Paste the following in the edit section of the MT blog editing form:--<highlight lang="cpp">#include <stdio.h>--int main (void){- printf("This is some random code");- return 0;-}</highlight>--Use the lang parameter to define the programming language (c, php, py, xml, etc).-See the highlight documentation to learn all possible languages.-See the syntax.php file for some formatting options (line numbering, code-indentation, line wrapping etc).--== Installation ==--1. Install highlight (www.andre-simon.de) on your host-2. Unzip the mt_highlight.zip file and upload the content to the - `plugins/` directory
extras/web_plugins/movabletype/highlight.pl
@@ -1,88 +0,0 @@-#Plugin Name: Highlight-#Plugin URI: http://www.andre-simon.de-#Description: Plugin which uses the highlight utility to generate coloured source code-#Author: André Simon-#Version: 1.2-#Author URI: http://www.andre-simon.de/--#This file is part of Highlight.-#-#Highlight is free software: you can redistribute it and/or modify-#it under the terms of the GNU General Public License as published by-#the Free Software Foundation, either version 3 of the License, or-#(at your option) any later version.-#-#Highlight is distributed in the hope that it will be useful,-#but WITHOUT ANY WARRANTY; without even the implied warranty of-#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the-#GNU General Public License for more details.-#-#You should have received a copy of the GNU General Public License-#along with Highlight. If not, see <http://www.gnu.org/licenses/>.--package MT::Plugin::Highlight;--use strict;-use IPC::Open3;-use MT;-use MT::Entry;-use MT::Plugin;-use MT::Template::Context;-use MT::WeblogPublisher;--my $plugin = new MT::Plugin();-$plugin->name("MT Highlight");-$plugin->description('Source code highlighter using highlight (http://www.andre-simon.de)');-$plugin->doc_link('http://wiki.andre-simon.de/');-$plugin->author_name('Andre Simon');-$plugin->author_link('http://www.andre-simon.de/');-$plugin->plugin_link('http://wiki.andre-simon.de/');-$plugin->version('1.3');--MT->add_callback("BuildPage", 1, $plugin, \&highlight_callback);-MT->add_plugin($plugin);--sub highlight_callback-{- my ($cb, %args) = @_;- use Data::Dumper;- my $html = ${$args{'Content'}};- $html =~ s/<highlight([^>]*?)lang="([^"]+?)"([^>]*?)>(.*?)<\/highlight>/highlight_code($2,$4)/ges;- ${$args{'Content'}} = $html;- return 1;-}--sub highlight_code-{- my ($lang, $source) = @_;-- $lang =~ s/[^a-zA-Z]//g; # delete special chars in user input- $source =~ s/\<br \/\>//g; # get rid of <br> Tags inserted by MT- $source =~ s/\<\/?p\>//g; # MT inserts <p> Tags if <, > are present in input code-- local(*HIS_IN, *HIS_OUT, *HIS_ERR);-- my @hl_args = ('-f', "-S$lang");- push (@hl_args, '--inline-css'); # use inline css definitions- push (@hl_args, '-sedit-kwrite'); # coloring theme- push (@hl_args, '-l'); # linenumbers- push (@hl_args, '-j2'); # linenumber length- push (@hl_args, '-z'); # linenumber zeroes- push (@hl_args, '-Fgnu'); # reformat- push (@hl_args, '-t4'); # replace tabs- my $childpid = IPC::Open3::open3(*HIS_IN, *HIS_OUT, *HIS_ERR, 'highlight', @hl_args);- print HIS_IN $source;- close(HIS_IN); # Give end of file to kid.- my @outlines = <HIS_OUT>; # Read till EOF.-- close HIS_OUT;- close HIS_ERR;- waitpid($childpid, 0);-- my $htext = join "", @outlines;-- return "<pre>".$htext."</pre>";-}---
extras/web_plugins/serendipity_event_highlight/lang_de.inc.php
@@ -1,32 +0,0 @@-<?php --@define('PLUGIN_EVENT_HIGHLIGHT_NAME', 'Markup: Highlight');-@define('PLUGIN_EVENT_HIGHLIGHT_DESC', 'Farbige Syntax-Hervorhebung mit dem highlight tool. Einbindung mit dem Tag: [highlight lang=langName ] code [/highlight]');-@define('PLUGIN_EVENT_HIGHLIGHT_TRANSFORM', 'Benutzen Sie <b>[highlight lang=langName][/highlight]</b> Tags, um Sourcecode farbig hervorzuheben.');-@define('PLUGIN_EVENT_HIGHLIGHT_VERSION','01');--@define('PLUGIN_EVENT_HIGHLIGHT_HLBINDIR','Highlight Pfad');-@define('PLUGIN_EVENT_HIGHLIGHT_HLBINDIR_DESC','Pfad der highlight Programdatei');-@define('PLUGIN_EVENT_HIGHLIGHT_HLDATADIR','Highlight Datenverzeichnis');-@define('PLUGIN_EVENT_HIGHLIGHT_HLDATADIR_DESC','Dieses Verzeichnis enthält die Programmdaten, z.B. die Unterverzeichnisse langDefs, themes etc');-@define('PLUGIN_EVENT_HIGHLIGHT_LINENUMBERS', 'Ausgabe Zeilennummern');-@define('PLUGIN_EVENT_HIGHLIGHT_LINENUMBERS_DESC','Sollen Zeilennummern ausgegeben werden?');-@define('PLUGIN_EVENT_HIGHLIGHT_LINENUMBERZEROES', 'Zeilennummern füllen');-@define('PLUGIN_EVENT_HIGHLIGHT_LINENUMBERZEROES_DESC','Sollen Zeilennummern mit Nullen aufgefüllt werden?');-@define('PLUGIN_EVENT_HIGHLIGHT_LINENUMBERSTART', 'Beginn der Nummerierung');-@define('PLUGIN_EVENT_HIGHLIGHT_LINENUMBERSTART_DESC','Wo soll die Nummerierung beginnen?');-@define('PLUGIN_EVENT_HIGHLIGHT_LINENUMBERLEN', 'Zeilennnummernbreite');-@define('PLUGIN_EVENT_HIGHLIGHT_LINENUMBERLEN_DESC','Mit wievielen Stellen soll die Nummerierung ausgegeben werden?');-@define('PLUGIN_EVENT_HIGHLIGHT_THEMES', 'Farbschema');-@define('PLUGIN_EVENT_HIGHLIGHT_THEMES_DESC','Wähle ein Farbschema aus, das zu deinem Blog-Style passt.');-@define('PLUGIN_EVENT_HIGHLIGHT_FORMAT', 'Neuformatierung und Einrückung');-@define('PLUGIN_EVENT_HIGHLIGHT_FORMAT_DESC','Wähle ein Schema aus, um C, C++, C# und Java Code einheitlich zu formatieren.');--@define('PLUGIN_EVENT_HIGHLIGHT_WRAP', 'Zeilenumbruch');-@define('PLUGIN_EVENT_HIGHLIGHT_WRAP_DESC','Bestimme, ob Zeilen umgebrochen werden sollen. WRAP INTELLIGENT bedeutet, dass Funktionsparameter und Zuweisungen nach dem Umbruch korrekt eingerückt werden.');-@define('PLUGIN_EVENT_HIGHLIGHT_WRAPLEN', 'Zeilenlänge vor Umbruch');-@define('PLUGIN_EVENT_HIGHLIGHT_WRAPLEN_DESC','Gib die maximale Zeilenlänge an (nur wirksam wenn obige Option Zeilenumbruch nicht deaktiviert ist).');-@define('PLUGIN_EVENT_HIGHLIGHT_TABLEN', 'Tabulatorbreite');-@define('PLUGIN_EVENT_HIGHLIGHT_TABLEN_DESC','Bestimme die Anzahl von Leerzeichen, die ein Tab ersetzen.');--?>
extras/web_plugins/serendipity_event_highlight/lang_en.inc.php
@@ -1,32 +0,0 @@-<?php --@define('PLUGIN_EVENT_HIGHLIGHT_NAME', 'Markup: Highlight');-@define('PLUGIN_EVENT_HIGHLIGHT_DESC', 'Coloured Syntax Highlighting using the highlight utility. Tag usage: [highlight lang=langName ] code [/highlight]');-@define('PLUGIN_EVENT_HIGHLIGHT_TRANSFORM', 'You can use <b>[highlight lang=langName][/highlight]</b> tags to embed source code snippets');-@define('PLUGIN_EVENT_HIGHLIGHT_VERSION','01');--@define('PLUGIN_EVENT_HIGHLIGHT_HLBINDIR','Path of highlight binary');-@define('PLUGIN_EVENT_HIGHLIGHT_HLBINDIR_DESC','Path of the highlight binary');-@define('PLUGIN_EVENT_HIGHLIGHT_HLDATADIR','Path of highlight data directory');-@define('PLUGIN_EVENT_HIGHLIGHT_HLDATADIR_DESC','This directory contains the data files located in the subdirectories langDefs, themes etc');-@define('PLUGIN_EVENT_HIGHLIGHT_LINENUMBERS', 'Line number printout');-@define('PLUGIN_EVENT_HIGHLIGHT_LINENUMBERS_DESC','Define if the line numbers should be shown.');-@define('PLUGIN_EVENT_HIGHLIGHT_LINENUMBERZEROES', 'Line number padding');-@define('PLUGIN_EVENT_HIGHLIGHT_LINENUMBERZEROES_DESC','Define if the line numbers should be padded with zeroes.');-@define('PLUGIN_EVENT_HIGHLIGHT_LINENUMBERSTART', 'Line number start');-@define('PLUGIN_EVENT_HIGHLIGHT_LINENUMBERSTART_DESC','Define where the line numbering should start.');-@define('PLUGIN_EVENT_HIGHLIGHT_LINENUMBERLEN', 'Line number width');-@define('PLUGIN_EVENT_HIGHLIGHT_LINENUMBERLEN_DESC','Define the line number width.');-@define('PLUGIN_EVENT_HIGHLIGHT_THEMES', 'Color theme');-@define('PLUGIN_EVENT_HIGHLIGHT_THEMES_DESC','Choose a color theme which matches your blog.');-@define('PLUGIN_EVENT_HIGHLIGHT_FORMAT', 'Code reformatting');-@define('PLUGIN_EVENT_HIGHLIGHT_FORMAT_DESC','Choose a indentation and reformatting scheme to reformat C, C++, C# and Java code.');--@define('PLUGIN_EVENT_HIGHLIGHT_WRAP', 'Line wrapping');-@define('PLUGIN_EVENT_HIGHLIGHT_WRAP_DESC','Define if long lines should be wrapped. WRAP INTELLIGENT means that function parameters and assignments are intended after wrapping.');-@define('PLUGIN_EVENT_HIGHLIGHT_WRAPLEN', 'Line length before wrapping');-@define('PLUGIN_EVENT_HIGHLIGHT_WRAPLEN_DESC','Set the maximum line length (only available if line wrapping is not disabled above).');-@define('PLUGIN_EVENT_HIGHLIGHT_TABLEN', 'Tab width');-@define('PLUGIN_EVENT_HIGHLIGHT_TABLEN_DESC','Define how many spaces should replace a tab.');--?>
extras/web_plugins/serendipity_event_highlight/serendipity_event_highlight.php
@@ -1,343 +0,0 @@-<?php-/**--serendipity_event_highlight.php--=== Highlight plugin ===--This plugin uses highlight (http://www.andre-simon.de/) to add syntax highlighting to serendipity.--== Description ==--The highlight utility converts source code of 120 programming languages to HTML-with syntax highlighting. This plugin pipes the content of [highlight] tags associated-with a lang parameter to highlight, and returns the output code which is included-in the Serendipity blog entry.-The plugin configuration menu offers the most important options of the highlight utility.-The highlighted code is formatted with inline CSS to avoid complicated plugin setup.--Usage:--Paste the following in the code section of the blog editing form:--[highlight lang=c]#include <stdio.h>--int main (void){- printf("This is some random code");- return 0;-} [/highlight]--Normally the file extension can be used for the lang parameter (like pl, py, java, pas etc).-Execute 'highlight --list-langs' to get a list of all supported programming languages.--== Installation ==--1. Install the highlight utility on your host (www.andre-simon.de)-2. Copy the serendipity_event_highlight dir into the serendipity plugin dir-3. Activate and configure the plugin in the serendipity administration menu-- IMPORTANT:- To avoid insertion of superfluous <br> Tags by the nl2br plugin, add the- string "highlight" to the "list of HTML-tags where no breaks shall be- converted" in the nl2br configuration menu.-- */---if (IN_serendipity !== true) {- die ("Don't hack!");-}--// Probe for a language include with constants. Still include defines later on, if some constants were missing-$probelang = dirname(__FILE__) . '/' . $serendipity['charset'] . 'lang_' . $serendipity['lang'] . '.inc.php';-if (file_exists($probelang)) {- include $probelang;-}--include dirname(__FILE__) . '/lang_en.inc.php';--class serendipity_event_highlight extends serendipity_event-{- var $title = PLUGIN_EVENT_HIGHLIGHT_NAME;- // Top Level Configuration, requires name of the Plugin, description text, and configuration information in an array..- function introspect(&$propbag)- {- global $serendipity;-- $propbag->add('name', PLUGIN_EVENT_HIGHLIGHT_NAME);- $propbag->add('description', PLUGIN_EVENT_HIGHLIGHT_DESC);- $propbag->add('stackable', false);- $propbag->add('author', 'Andre Simon');- $propbag->add('requirements', array(- 'serendipity' => '0.9',- 'highlight' => '3.23'- ));- $propbag->add('version', '0.2');- $propbag->add('event_hooks', array('frontend_display' => true, 'frontend_comment' => true));- $propbag->add('groups', array('MARKUP'));-- $this->markup_elements = array(- array(- 'name' => 'ENTRY_BODY',- 'element' => 'body',- ),- array(- 'name' => 'EXTENDED_BODY',- 'element' => 'extended',- ),- array(- 'name' => 'COMMENT',- 'element' => 'comment',- ),- array(- 'name' => 'HTML_NUGGET',- 'element' => 'html_nugget',- )- );-- #Colour themes of a highlight default installation- $this->themes = array(- "acid", "aiseered", "andes", "anotherdark", "autumn", "baycomb",- "bclear", "biogoo", "bipolar", "blacknblue", "bluegreen", "breeze",- "bright", "camo", "candy", "clarity", "dante", "darkblue",- "darkbone", "darkness", "darkslategray", "darkspectrum", "denim",- "dusk", "earendel", "easter", "edit-anjuta", "edit-eclipse",- "edit-emacs", "edit-flashdevelop", "edit-gedit", "edit-jedit",- "edit-kwrite", "edit-matlab", "edit-msvs2008", "edit-nedit",- "edit-vim-dark", "edit-vim", "edit-xcode", "ekvoli", "fine_blue",- "freya", "fruit", "golden", "greenlcd", "kellys", "leo",- "lucretia", "manxome", "maroloccio", "matrix", "moe", "molokai",- "moria", "navajo-night", "navy", "neon", "night", "nightshimmer",- "nuvola", "olive", "orion", "oxygenated", "pablo", "peaksea",- "print", "rand01", "rdark", "relaxedgreen", "rootwater",- "seashell", "solarized-dark", "solarized-light", "tabula",- "tcsoft", "the", "vampire", "whitengrey", "xoria256", "zellner",- "zenburn", "zmrok"- );-- #Reformatting schemes of a highlight default installation- $this->reformatschemes = array ("disabled","allman", "ansi", "banner",- "gnu", "google", "horstmann", "java", "kr", "linux", "lisp",- "otbs", "pico", "stroustrup", "vtk", "whitesmith");-- #highlight output options- $conf_array = array('hl_bin_dir','hl_data_dir','hl_linenumbers','hl_linenumberstart','hl_linenumberzeroes','hl_linenumberlen',- 'hl_wrap','hl_wrap_len','hl_tab_len', 'hl_theme','hl_format');-- foreach($this->markup_elements as $element) {- $conf_array[] = $element['name'];- }- $propbag->add('configuration', $conf_array);- }-- function generate_content(&$title) {- $title = $this->title;- }--- function introspect_config_item($name, &$propbag) {- switch ($name) {- case 'hl_bin_dir' :- $propbag->add('name', PLUGIN_EVENT_HIGHLIGHT_HLBINDIR);- $propbag->add('type', 'string');- $propbag->add('description', PLUGIN_EVENT_HIGHLIGHT_HLBINDIR_DESC);- $propbag->add('default', 'highlight');- break;- case 'hl_data_dir' :- $propbag->add('name', PLUGIN_EVENT_HIGHLIGHT_HLDATADIR);- $propbag->add('type', 'string');- $propbag->add('description', PLUGIN_EVENT_HIGHLIGHT_HLDATADIR_DESC);- $propbag->add('default', '/usr/share/highlight/');- break;- case 'hl_linenumbers' :- $propbag->add('name', PLUGIN_EVENT_HIGHLIGHT_LINENUMBERS);- $propbag->add('type', 'boolean');- $propbag->add('description', PLUGIN_EVENT_HIGHLIGHT_LINENUMBERS_DESC);- $propbag->add('default', 'false');- break;- case 'hl_linenumberzeroes' :- $propbag->add('name', PLUGIN_EVENT_HIGHLIGHT_LINENUMBERZEROES);- $propbag->add('type', 'boolean');- $propbag->add('description', PLUGIN_EVENT_HIGHLIGHT_LINENUMBERZEROES_DESC);- $propbag->add('default', 'false');- break;- case 'hl_linenumberstart' :- $propbag->add('name', PLUGIN_EVENT_HIGHLIGHT_LINENUMBERSTART);- $propbag->add('type', 'string');- $propbag->add('description', PLUGIN_EVENT_HIGHLIGHT_LINENUMBERSTART_DESC);- $propbag->add('default', '1');- $propbag->add('validate', 'number');- break;-- case 'hl_linenumberlen' :- $propbag->add('name', PLUGIN_EVENT_HIGHLIGHT_LINENUMBERLEN);- $propbag->add('type', 'string');- $propbag->add('description', PLUGIN_EVENT_HIGHLIGHT_LINENUMBERLEN_DESC);- $propbag->add('default', '2');- $propbag->add('validate', 'number');- break;-- case 'hl_theme' :- $propbag->add('type', 'select');- $propbag->add('name', PLUGIN_EVENT_HIGHLIGHT_THEMES);- $propbag->add('description', PLUGIN_EVENT_HIGHLIGHT_THEMES_DESC);- $propbag->add('select_values', $this->themes);- $propbag->add('default', '1');- break;-- case 'hl_format' :- $propbag->add('type', 'select');- $propbag->add('name', PLUGIN_EVENT_HIGHLIGHT_FORMAT);- $propbag->add('description', PLUGIN_EVENT_HIGHLIGHT_FORMAT_DESC);- $propbag->add('select_values', $this->reformatschemes);- $propbag->add('default', '0');- break;-- case 'hl_wrap' :- $wrapstyles=array ('No wrap', 'Simple wrap','Intelligent wrap');- $propbag->add('type', 'select');- $propbag->add('name', PLUGIN_EVENT_HIGHLIGHT_WRAP);- $propbag->add('description', PLUGIN_EVENT_HIGHLIGHT_WRAP_DESC);- $propbag->add('select_values', $wrapstyles);- $propbag->add('default', '0');- break;- case 'hl_wrap_len' :- $propbag->add('name', PLUGIN_EVENT_HIGHLIGHT_WRAPLEN);- $propbag->add('type', 'string');- $propbag->add('description', PLUGIN_EVENT_HIGHLIGHT_WRAPLEN_DESC);- $propbag->add('default', '60');- $propbag->add('validate', 'number');- break;- case 'hl_tab_len' :- $propbag->add('name', PLUGIN_EVENT_HIGHLIGHT_TABLEN);- $propbag->add('type', 'string');- $propbag->add('description', PLUGIN_EVENT_HIGHLIGHT_TABLEN_DESC);- $propbag->add('default', '4');- $propbag->add('validate', 'number');- break;- default :- $propbag->add('name', constant($name));- $propbag->add('type', 'boolean');- $propbag->add('default', 'true');- $propbag->add('description', sprintf(APPLY_MARKUP_TO, constant($name)));- }- return true;- }-- function geshi($input) {- $input = preg_replace_callback('/\[highlight(?:\s)*lang=([A-Za-z0-9_\-]+)(?:\s)*()?\](.*?)\[\/highlight\]/si', array(&$this, 'highlightcallback'), $input);- return $input;- }-- function event_hook($event, &$bag, &$eventData) {- global $serendipity;-- $hooks = &$bag->get('event_hooks');-- if (isset($hooks[$event])) {- switch($event) {- case 'frontend_display':- foreach ($this->markup_elements as $temp) {- if (serendipity_db_bool($this->get_config($temp['name'], true)) && isset($eventData[$temp['element']]) &&- !$eventData['properties']['ep_disable_markup_' . $this->instance] &&- !isset($serendipity['POST']['properties']['disable_markup_' . $this->instance])) {- $element = $temp['element'];- $eventData[$element] = $this->geshi($eventData[$element]);- }- }- return true;- break;-- case 'frontend_comment':- if (serendipity_db_bool($this->get_config('COMMENT', true))) {- echo '<div class="serendipity_commentDirection serendipity_comment_geshi">' . PLUGIN_EVENT_HIGHLIGHT_TRANSFORM . '</div>';- }- return true;- break;-- default:- return false;- }- } else {- return false;- }- }-- function highlightcallback($matches) {-- $search = array("&",""", "<", ">","\","'"," ");- $replace = array("&","\"", "<", ">","\\","\'", " ");- $input_code = str_replace($search, $replace, $matches[3]);-- $descriptorspec = array(- 0 => array("pipe", "r"), // stdin is a pipe that the child will read from- 1 => array("pipe", "w") // stdout is a pipe that the child will write to- );-- $hl_cmd_str = $this->get_config('hl_bin_dir');- $hl_cmd_str .= ' --inline-css -f ';-- if ( $this->get_config('hl_linenumbers')){- $hl_cmd_str .= " -l -m ";- $hl_cmd_str .= $this->get_config('hl_linenumberstart');- if ($this->get_config('hl_linenumberzeroes')){- $hl_cmd_str .= " -z ";- }- $hl_cmd_str .= ' -j ';- $hl_cmd_str .= $this->get_config('hl_linenumberlen');- }-- if ($this->get_config('hl_tab_len')) {- $hl_cmd_str .= " -t ";- $hl_cmd_str .= $this->get_config('hl_tab_len');- }-- if ($this->get_config('hl_wrap')>0){- $hl_cmd_str .= ($this->get_config('hl_wrap') == 1)? ' -V ':' -W ';- $hl_cmd_str .= " -J ";- $hl_cmd_str .= $this->get_config('hl_wrap_len');- }-- if ($this->get_config('hl_format')>1){- $hl_cmd_str .= " -F ";- $hl_cmd_str .= $this->reformatschemes[$this->get_config('hl_format')];- }--- $hl_cmd_str .= " -s ";- $hl_cmd_str .= $this->themes[$this->get_config('hl_theme')];--- $lang = strtolower($matches[1]);- $hl_cmd_str .= " -S $lang ";-- $process = proc_open($hl_cmd_str, $descriptorspec, $pipes);- if (is_resource($process)) {-- fwrite($pipes[0], $matches[3]);- fclose($pipes[0]);-- $output = stream_get_contents($pipes[1]);- fclose($pipes[1]);-- // It is important that you close any pipes before calling- // proc_close in order to avoid a deadlock- proc_close($process);- }- $result='';- if (!strlen($output)) {- $result .= "<small>ERROR: Execution of highlight ($hl_cmd_str) failed or missing input. Check binary path.</small>";- $result .= "<pre style=\"font-size:9pt;\">";- $result .= $input_code;- $result .= "</pre>";-- } else {- $result .= "<pre style=\"font-size:9pt;\">";- $result .= $output;- $result .= "</pre>";- }- return $result;- }-}--?>
extras/web_plugins/wordpress/README
@@ -1,39 +0,0 @@-=== Highlight plugin ===--This plugin uses highlight (http://www.andre-simon.de) to add syntax highlighting to WordPress.--== Description ==--The highlight utility converts source code of 190 programming languages to HTML-with syntax highlighting. This plugin pipes the content of <pre>-Tags associated-with a lang parameter to highlight, and returns the output code which is included-in the WordPress blog entry.--Usage:--Paste the following in the code section of the blog editing form (HTML mode !):--<pre lang="c">#include <stdio.h>--int main (void){- printf("This is some random code");- return 0;-}</pre>--Use the lang parameter to define the programming language (c, php, py, xml, etc).-See the highlight documentation to learn all possible languages.-See the highlight.php file for some formatting options (line numbering, code-indentation, line wrapping etc).--== Installation ==--1. Install highlight (www.andre-simon.de) on your host--2. Unzip the wp_highlight.zip file and upload the content to the- `/wp-content/plugins/` directory-- OR-- Copy the highlight.php file to the `/wp-content/plugins/` directory--3. Activate the plugin in the WordPress backend
extras/web_plugins/wordpress/highlight.php
@@ -1,144 +0,0 @@-<?php-/*-Plugin Name: Highlight-Plugin URI: http://www.andre-simon.de-Description: Plugin which uses the highlight utility to generate coloured source code.-Author: Andre Simon-Version: 1.3-Author URI: http://www.andre-simon.de---This file is part of Highlight.--Highlight is free software: you can redistribute it and/or modify-it under the terms of the GNU General Public License as published by-the Free Software Foundation, either version 3 of the License, or-(at your option) any later version.--Highlight is distributed in the hope that it will be useful,-but WITHOUT ANY WARRANTY; without even the implied warranty of-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the-GNU General Public License for more details.--You should have received a copy of the GNU General Public License-along with Highlight. If not, see <http://www.gnu.org/licenses/>.-*/--// Highlight options:--$hl_options=array();-$hl_options['hl_binary']='highlight'; // path to the highlight binary-$hl_options['theme']='edit-kwrite'; // set color theme-$hl_options['line-numbers']=false;-$hl_options['linenumber-start']=1;-$hl_options['linenumber-zeroes']=1; // set to 1 if line numbers should be padded with zeros-$hl_options['linenumber-length']=2;-$hl_options['reformat-style']="gnu"; // possible values for C, C++ and Java Code: ansi, gnu, java, kr, linux-$hl_options['replace-tabs']=4; // number of spaces which replace a tab-$hl_options['wrap-style']=0; // 0 -> disable, 1-> wrap, 2-> wrap and indent function names-$hl_options['wrap-line-length']=60; // if wrap-style <>0, this defines the line length before wrapping takes place--class as_highlight {- - var $ch_is_excerpt = false;- function __construct()- {- openlog("myScripLog", LOG_PID | LOG_PERROR, LOG_LOCAL0);- add_filter('the_content',array(&$this, 'hl_the_content_filter'),1);- }- // PHP 4 Constructor- function as_highlight ()- {- $this->__construct() ;- }- - function as_highlight_code($matches){- - global $hl_options;- - $lang = preg_replace("'[^a-zA-Z\-]'","",$matches[1]);- // undo nl and p formatting- $input_code = $matches[2];- $input_code = preg_replace("'<br\s*\/?>\r?\n?'","\n",$input_code);- $search = array("&",""", "<", ">","\","'"," ");- $replace = array("&","\"", "<", ">","\\","\'", " ");- $input_code = str_replace($search, $replace, $input_code);- - $descriptorspec = array(- 0 => array("pipe", "r"), // stdin is a pipe that the child will read from- 1 => array("pipe", "w") // stdout is a pipe that the child will write to- );- - $hl_cmd_str = $hl_options['hl_binary'];- $hl_cmd_str .= ' --inline-css -I -f ';- - if ($hl_options['line-numbers']){- $hl_cmd_str .= " -l -m ";- $hl_cmd_str .= $hl_options['linenumber-start'];- if ($hl_options['linenumber-zeroes']){- $hl_cmd_str .= " -z -j ";- $hl_cmd_str .= $hl_options['linenumber-length'];- }- }- - if ($hl_options['replace-tabs']) {- $hl_cmd_str .= " -t ";- $hl_cmd_str .= $hl_options['replace-tabs'];- }- - if ($hl_options['wrap-style']){- $hl_cmd_str .= ($hl_options['wrap-style'] == 1)? ' -V ':' -W ';- $hl_cmd_str .= " -J ";- $hl_cmd_str .= $hl_options['wrap-line-length'];- }- - if ($hl_options['reformat-style']){- $hl_cmd_str .= " -F ";- $hl_cmd_str .= $hl_options['reformat-style'];- }-- if ($hl_options['theme']){- $hl_cmd_str .= " -s ";- $hl_cmd_str .= $hl_options['theme'];- }- - $hl_cmd_str .= " -S $lang ";- - $process = proc_open($hl_cmd_str, $descriptorspec, $pipes);--- if (is_resource($process)) {-- fwrite($pipes[0], $input_code);- fclose($pipes[0]);- if (function_exists("stream_get_contents"))- {- $output = $output . stream_get_contents($pipes[1]);- }- else- {- $output = "";- while (!feof($pipes[1])) $output .= fgets($pipes[1]);- }- fclose($pipes[1]);-- // It is important that you close any pipes before calling- // proc_close in order to avoid a deadlock- $return_value = proc_close($process);- }- $newContent = "<pre>". $output ."</pre>";- return $newContent;- }- - function hl_the_content_filter($content) {-- return preg_replace_callback("/<pre\s+lang=\"(.*?)\">(.*)<\/pre>/siU",- array(&$this, "as_highlight_code"),- $content);- }-}--if (!function_exists('as_highlight'))- $as_highlight = new as_highlight();--?>
@@ -9,7 +9,7 @@ -- - CLI: the first association listed here will be used -- - GUI: a syntax selection prompt will be shown ----- If a filename has no extension by convention (ie. makefile), it may be added here nevertheless or be +-- If a filename has no extension by convention (ie. makefile), it may be added here nevertheless or be -- configured as "Shebang". -- -- You can assign complete filenames to a syntax with "Filenames", see the "cmake" entry.@@ -27,6 +27,7 @@ FileMapping = { + { Lang="abap", Extensions={"abp"} }, { Lang="ada", Extensions={"adb", "ads", "a", "gnad"} }, { Lang="alan", Extensions={"alan", "i"} }, { Lang="algol", Extensions={"alg"} },@@ -45,10 +46,10 @@ FileMapping = { { Lang="coldfusion", Extensions={"cfc","cfm"} }, { Lang="cobol", Extensions={"cob", "cbl"} }, { Lang="crystal", Extensions={"cr"} },+ { Lang="coffeescript", Extensions={"coffee"} }, { Lang="conf", Extensions={"anacrontab"} }, { Lang="delphi", Extensions={"pas", "dpr"} }, { Lang="diff", Extensions={"patch"} },- { Lang="docker", Extensions={"dockerfile"} }, { Lang="dts", Extensions={"dtsi"} }, { Lang="eiffel", Extensions={"e", "se"} }, { Lang="elixir", Extensions={"ex", "exs"} },@@ -62,11 +63,12 @@ FileMapping = { { Lang="hugo", Extensions={"hug"} }, { Lang="ini", Extensions={"doxyfile", "desktop", "kdev3", "reg", "cfg", "inf"} }, { Lang="java", Extensions={"groovy", "grv", "jenkinsfile", "gradle"} },+ { Lang="javascript", Extensions={"js"} }, { Lang="julia", Extensions={"jl"} }, { Lang="kotlin", Extensions={"kt", "kts"} }, { Lang="limbo", Extensions={"b"} }, { Lang="lisp", Extensions={"cl", "clisp", "el", "lsp", "sbcl", "scom", "fas", "scm", "mud", "fasl" } },- { Lang="make", Extensions={"mak", "mk", "makefile", "gnumakefile"} },+ { Lang="makefile", Extensions={"mak", "mk", "gnumakefile"} }, { Lang="meson", Filenames={ "meson.build", "meson_options.txt" } }, { Lang="snmp", Extensions={"mib", "smi"} }, { Lang="ocaml", Extensions={"ml","mli"} },@@ -82,13 +84,13 @@ FileMapping = { { Lang="pro", Extensions={"pro"} }, { Lang="qmake", Extensions={"pro"} }, { Lang="progress", Extensions={"p", "i", "w"} },- { Lang="ruby", Extensions={"rb","ruby", "pp", "rjs", "gemfile", "rakefile", "appfile", "appraisals", "berksfile", + { Lang="ruby", Extensions={"rb","ruby", "pp", "rjs", "gemfile", "rakefile", "appfile", "appraisals", "berksfile", "brewfile", "capfile", "cgi", "cheffile", "config.ru", "deliverfile", "fastfile", "fcgi", "gemspec",- "guardfile", "irbrc", "jbuilder", "podfile", "podspec", "prawn", "rabl", "rake", "rantfile", "rbx", + "guardfile", "irbrc", "jbuilder", "podfile", "podspec", "prawn", "rabl", "rake", "rantfile", "rbx", "scanfile", "simplecov", "snapfile", "thor", "thorfile", "vagrantfile" } }, { Lang="rexx", Extensions={"rex", "rx", "the"} },- { Lang="sh", Filenames={".zshrc", ".bashrc"} },- { Lang="sh", Extensions={"bash", "zsh", "ebuild", "eclass"} },+ { Lang="shellscript", Filenames={".zshrc", ".bashrc"} },+ { Lang="shellscript", Extensions={"sh", "bash", "zsh", "ebuild", "eclass"} }, { Lang="smalltalk", Extensions={"st", "gst", "sq"} }, { Lang="sybase", Extensions={"sp"} }, { Lang="tcl", Extensions={"wish", "itcl"} },@@ -97,7 +99,7 @@ FileMapping = { { Lang="verilog", Extensions={"v"} }, { Lang="html", Extensions={"htm", "xhtml", "twig", "jinja"} }, { Lang="xml", Extensions={"sgm", "sgml", "nrm", "ent","hdr", "hub", "dtd", "glade",- "wml","vxml", "wml", "tld", "csproj","xsl", "ecf", "jnlp", "xsd", + "wml","vxml", "wml", "tld", "csproj","xsl", "ecf", "jnlp", "xsd", "resx", "rss", "opml"} }, { Lang="fsharp", Extensions={"fs","fsi","fsx"} }, { Lang="informix", Extensions={"4gl"} },@@ -141,9 +143,11 @@ FileMapping = { { Lang="nasal", Extensions={"nas"} }, { Lang="clean", Extensions={"icl"} }, { Lang="bibtex", Extensions={"bib"} },- { Lang="python", Extensions={"py", "py3", "pyw", "pyi", "pyx", "pxd", "pxi", "rpy", "cpy", + { Lang="python", Extensions={"py", "py3", "pyw", "pyi", "pyx", "pxd", "pxi", "rpy", "cpy", "sconstruct", "gyp", "gypi", "snakefile", "wscript" } }, { Lang="python", Filenames={"SConstruct"} },+ { Lang="rust", Extensions={"rs"} },+ { Lang="txt", Extensions={"text"} }, { Lang="n3", Extensions={"ttl", "nt"} }, { Lang="biferno", Extensions={"bfr"} },@@ -155,19 +159,20 @@ FileMapping = { { Lang="markdown", Extensions={"md", "markdown"} }, { Lang="clojure", Extensions={"clj", "cljc", "cljs", "edn"} }, { Lang="solidity", Extensions={"sol"} },- { Lang="ps1", Extensions={"psm1", "psd1"} },- + { Lang="powershell", Extensions={"ps1", "psm1", "psd1"} },+ { Lang="typescript", Extensions={"ts"} },+ { Lang="exapunks", Extensions={"exapunks", "exa"} }, { Lang="exapunks", Shebang=[[^(?i:NOTE\sEXAPUNKS)\b]] }, { Lang="xml", Shebang=[[^\s*<\?xml\s+version=\"1\.0\"\s+[^(>)]*?>\s*$]] },- { Lang="sh", Shebang=[[^#!\s*(/usr)?(/local)?/bin/(env\s+)?([bd]ash|t?csh|[akz]?sh)]] },- { Lang="make",Shebang=[[^#!\s*(/usr)?(/local)?/bin/(env\s+)?make]] },+ { Lang="shellscript", Shebang=[[^#!\s*(/usr)?(/local)?/bin/(env\s+)?([bd]ash|t?csh|[akz]?sh)]] },+ { Lang="makefile",Shebang=[[^#!\s*(/usr)?(/local)?/bin/(env\s+)?make]] }, { Lang="awk", Shebang=[[^#!\s*(/usr)?(/local)?/bin/(env\s+)?[gnm]?awk]] }, { Lang="perl", Shebang=[[^#!\s*(/usr)?(/local)?/bin/(env\s+)?perl]] }, { Lang="python", Shebang=[[^#!\s*(/usr)?(/local)?/bin/(env\s+)?python]] }, { Lang="ruby", Shebang=[[^#!\s*(/usr)?(/local)?/bin/(env\s+)?ruby]] }, { Lang="php", Shebang=[[^#!\s*(/usr)?(/local)?/bin/(env\s+)?php]] },- { Lang="js", Shebang=[[^#!\s*(/usr)?(/local)?/bin/(env\s+)?node]] }+ { Lang="javascript", Shebang=[[^#!\s*(/usr)?(/local)?/bin/(env\s+)?node]] } }
gui_files/ext/fileopenfilter.conf
@@ -1,5 +1,5 @@ All source files (*)-ABAP/4 (*.abp)+ABAP/4 (*.abp *.abap) ABC (*.abc) ABNF (*.abnf) ActionScript (*.as)@@ -25,7 +25,7 @@ AutoIt3 (*.au3) Avenue (*.avenue) AWK (*.awk) Ballerina (*.bal)-Bash (*.sh)+Bash (*.sh *.sh *.bash *.zsh) Batch (*.bat) BBCode (*.bbcode) BCPL (*.bcpl)@@ -59,7 +59,7 @@ Dart (*.dart) Delphi (*.pas) Diff (*.diff *.patch) DeviceTree (*.dts *.dtsi)-Dockerfile (*.docker)+Dockerfile (*.dockerfile) Dylan (*.dylan) EBNF (*.ebnf) Eiffel (*.e *.ecf *.se)@@ -121,7 +121,7 @@ Lotos (*.lotos) LotusScript (*.ls) Lua (*.lua) Luban (*.lbn)-Make (*.mak *.mk)+Makefile (*.mak *.mk) Maple (*.mpl) MagicExtensibleMarkup (*.mxml) Markdown (*.md *.markdown)@@ -173,7 +173,7 @@ Pony (*.pony) PostScript (*.ps) POV-Ray (*.pov) PowerPC-Assembler (*.s)-PowerShell (*.ps1)+PowerShell (*.ps1 *.psm1 *.psd1) Progress (*.p *.i *.w) Prolog (*.pro) Pure (*.pure)
gui_files/l10n/highlight_de_DE.qm
@@ -0,0 +1,70 @@++Description="ABAP/4"++Categories = {"source"}++Identifiers=[[ [a-zA-Z_][\w\-]* ]]++Keywords={+ { Id=1,+ List={"abs", "acos", "add", "add-corresponding", "adjacent", "all", "and",+ "analyzer", "append", "ascending", "asin", "at", "atan", "authority-check",+ "avg", "back", "begin", "between", "binary", "blank", "block", "break-point",+ "by", "ca", "call", "case", "catch", "ceil", "centered", "change", "check",+ "checkbox", "clear", "clear:", "close", "cn", "cnt", "co", "collect", "color",+ "commit", "communication", "compute", "concatenate", "condense", "constants",+ "constants:", "continue", "control", "controls", "convert", "copy", "cos",+ "cosh", "count", "country", "cp", "currency", "customer-function", "data",+ "data:", "dataset", "decimals", "define", "default", "delete", "descending",+ "describe", "dialog", "distinct", "div", "divide", "divide-", "corresponding",+ "do", "duplicates", "editor-call", "else", "elseif", "end", "endcatch",+ "end-of-definition", "end-of-page", "end-of-selection", "endat", "endcase",+ "enddo", "endform", "endfunction", "endif", "endloop", "endmodule", "endon",+ "endprovide", "endselect", "endwhile", "entries", "eq", "exceptions", "exec",+ "exit", "exp", "exponent", "export", "exporting", "extended", "extract",+ "fetch", "field-group", "field-symbols", "field-symbols:", "floor", "for",+ "form", "format", "frac", "frame", "free", "from", "function", "function-",+ "pool", "ge", "generate", "get", "gt", "hide", "hotspot", "header", "heading.",+ "heading", "icon", "if", "import", "importing", "in", "include", "index",+ "infotypes", "initial", "initialization", "input", "insert", "into",+ "intensified", "inverse", "is", "key", "language", "le", "leave",+ "left-justified", "like", "line", "line-count", "line-size", "lines",+ "list-processing", "load", "local", "local", "locale", "log", "log10", "loop",+ "lt", "message-id", "message", "m", "margin", "max", "min", "mod", "mode",+ "modify", "module", "move", "move-corresponding", "multiply",+ "multiply-corresponding", "na", "ne", "new-line", "new-page", "no-gap",+ "no-heading", "no-scrolling", "no-sign", "no-title", "no-zero", "not", "np",+ "ns", "no", "standard", "page", "heading", "o", "obligatory", "occurs", "of",+ "off", "on", "open", "or", "order", "output", "overlay", "pack", "parameters",+ "parameters:", "perform", "pf-status", "position", "print", "print-", "control",+ "program", "provide", "put", "page", "radiobutton", "raise", "raising",+ "ranges", "read", "receive", "refresh", "reject", "replace", "report",+ "reserve", "reset", "right-", "justified", "rollback", "round", "run", "scan",+ "screen", "scroll", "scroll-boundary", "search", "select", "select-options",+ "select-options:", "selection-screen", "selection-", "screen:",+ "selection-table", "set", "shift", "sign", "sin", "select", "single", "sinh",+ "skip", "sort", "space", "split", "sql", "sqrt", "standard",+ "start-of-selection", "statics", "stop", "strlen", "structure", "submit",+ "substract", "substract-corresponding", "sum", "suppress", "dialog", "symbol",+ "syntax-check", "syntax-trace", "system-exceptions", "table", "tables",+ "tables:", "tan", "tanh", "then", "time", "title", "titlebar", "to",+ "top-of-page", "transaction", "transfer", "translate", "trunc", "type-pools",+ "type-pool", "types", "type", "uline", "under", "unit", "unpack", "update",+ "user-command", "using", "value", "when", "where", "while", "window", "with",+ "with-title", "work", "write", "write-to"},+ },+}++Strings={+ Delimiter=[[']],+}++IgnoreCase=true++Comments={+ { Block=false,+ Delimiter= { [[\*]], [[\"]] },+ },+}++Operators=[[\(|\)|\[|\]|\{|\}|\,|\;|\:|\&|<|>|\!|\=|\/|\*|\%|\+|\-|\.]]
langDefs/abap4.lang
@@ -1,70 +0,0 @@--Description="ABAP/4"--Categories = {"source"}--Identifiers=[[ [a-zA-Z_][\w\-]* ]]--Keywords={- { Id=1,- List={"abs", "acos", "add", "add-corresponding", "adjacent", "all", "and",- "analyzer", "append", "ascending", "asin", "at", "atan", "authority-check",- "avg", "back", "begin", "between", "binary", "blank", "block", "break-point",- "by", "ca", "call", "case", "catch", "ceil", "centered", "change", "check",- "checkbox", "clear", "clear:", "close", "cn", "cnt", "co", "collect", "color",- "commit", "communication", "compute", "concatenate", "condense", "constants",- "constants:", "continue", "control", "controls", "convert", "copy", "cos",- "cosh", "count", "country", "cp", "currency", "customer-function", "data",- "data:", "dataset", "decimals", "define", "default", "delete", "descending",- "describe", "dialog", "distinct", "div", "divide", "divide-", "corresponding",- "do", "duplicates", "editor-call", "else", "elseif", "end", "endcatch",- "end-of-definition", "end-of-page", "end-of-selection", "endat", "endcase",- "enddo", "endform", "endfunction", "endif", "endloop", "endmodule", "endon",- "endprovide", "endselect", "endwhile", "entries", "eq", "exceptions", "exec",- "exit", "exp", "exponent", "export", "exporting", "extended", "extract",- "fetch", "field-group", "field-symbols", "field-symbols:", "floor", "for",- "form", "format", "frac", "frame", "free", "from", "function", "function-",- "pool", "ge", "generate", "get", "gt", "hide", "hotspot", "header", "heading.",- "heading", "icon", "if", "import", "importing", "in", "include", "index",- "infotypes", "initial", "initialization", "input", "insert", "into",- "intensified", "inverse", "is", "key", "language", "le", "leave",- "left-justified", "like", "line", "line-count", "line-size", "lines",- "list-processing", "load", "local", "local", "locale", "log", "log10", "loop",- "lt", "message-id", "message", "m", "margin", "max", "min", "mod", "mode",- "modify", "module", "move", "move-corresponding", "multiply",- "multiply-corresponding", "na", "ne", "new-line", "new-page", "no-gap",- "no-heading", "no-scrolling", "no-sign", "no-title", "no-zero", "not", "np",- "ns", "no", "standard", "page", "heading", "o", "obligatory", "occurs", "of",- "off", "on", "open", "or", "order", "output", "overlay", "pack", "parameters",- "parameters:", "perform", "pf-status", "position", "print", "print-", "control",- "program", "provide", "put", "page", "radiobutton", "raise", "raising",- "ranges", "read", "receive", "refresh", "reject", "replace", "report",- "reserve", "reset", "right-", "justified", "rollback", "round", "run", "scan",- "screen", "scroll", "scroll-boundary", "search", "select", "select-options",- "select-options:", "selection-screen", "selection-", "screen:",- "selection-table", "set", "shift", "sign", "sin", "select", "single", "sinh",- "skip", "sort", "space", "split", "sql", "sqrt", "standard",- "start-of-selection", "statics", "stop", "strlen", "structure", "submit",- "substract", "substract-corresponding", "sum", "suppress", "dialog", "symbol",- "syntax-check", "syntax-trace", "system-exceptions", "table", "tables",- "tables:", "tan", "tanh", "then", "time", "title", "titlebar", "to",- "top-of-page", "transaction", "transfer", "translate", "trunc", "type-pools",- "type-pool", "types", "type", "uline", "under", "unit", "unpack", "update",- "user-command", "using", "value", "when", "where", "while", "window", "with",- "with-title", "work", "write", "write-to"},- },-}--Strings={- Delimiter=[[']],-}--IgnoreCase=true--Comments={- { Block=false,- Delimiter= { [[\*]], [[\"]] },- },-}--Operators=[[\(|\)|\[|\]|\{|\}|\,|\;|\:|\&|<|>|\!|\=|\/|\*|\%|\+|\-|\.]]
@@ -31,9 +31,9 @@ Comments={ NestedSections = { { Lang="csharp", Delimiter= { [[<%(?!\-\-)[=#\$]?]], [[%>]] } }, { Lang="css", Delimiter= { [[<style\s+type\=[\'\"]text\/css[\'\"]>]], [[<\/style>]] } },- { Lang="js", Delimiter= { [[<script>]], [[<\/script>]] } },- { Lang="js", Delimiter= { [[<script\s+language\=\"[jJ]ava[sS]cript\"(?:\s+type\=\"text\/javascript\")?>]], [[<\/script>]] } },- { Lang="js", Delimiter= { [[<script\s+language=[\"\'][jJ]ava[sS]cript[\"\'](?:\s+type=[\"\']text/javascript[\"\'])?[^>]*>]], [[<\/script>]] } },- { Lang="js", Delimiter= { [[<script(?:\s+type=[\"\']text/javascript[\"\'])\s+language=[\"\'][jJ]ava[sS]cript[\"\']?[^>]*>]], [[<\/script>]] } },- { Lang="js", Delimiter= { [[<script(?:\s+type=[\"\']text/javascript[\"\'])>]], [[<\/script>]] } },+ { Lang="javascript", Delimiter= { [[<script>]], [[<\/script>]] } },+ { Lang="javascript", Delimiter= { [[<script\s+language\=\"[jJ]ava[sS]cript\"(?:\s+type\=\"text\/javascript\")?>]], [[<\/script>]] } },+ { Lang="javascript", Delimiter= { [[<script\s+language=[\"\'][jJ]ava[sS]cript[\"\'](?:\s+type=[\"\']text/javascript[\"\'])?[^>]*>]], [[<\/script>]] } },+ { Lang="javascript", Delimiter= { [[<script(?:\s+type=[\"\']text/javascript[\"\'])\s+language=[\"\'][jJ]ava[sS]cript[\"\']?[^>]*>]], [[<\/script>]] } },+ { Lang="javascript", Delimiter= { [[<script(?:\s+type=[\"\']text/javascript[\"\'])>]], [[<\/script>]] } }, }
@@ -27,19 +27,19 @@ Keywords={ "uint_fast64_t", "intptr_t", "uintptr_t", "intmax_t", "uintmax_t", "char8_t","char16_t","char32_t" } },- { Id=3,+ { Id=4, List= { "typedef", "inline", "auto", "class", "explicit", "extern", "friend", "inline", "mutable", "operator", "register", "template", "private", "protected", "public", "typeid", "virtual", "volatile", "constexpr", "nullptr", "decltype" } },- { Id=3,+ { Id=5, Regex=[[(\w+)\s*\:\:]] }, { Id=4, Regex=[[(\w+)\s*\(]] },- { Id=5,+ { Id=6, Regex=[=[ \[\[[\w\:\,\s]+?\]\] ]=] } }
langDefs/coffee.lang
@@ -1,66 +0,0 @@--- a highlight lang definition for coffeescript, by Jess Austin-Description = "Coffeescript"--Categories = {"source", "script"}--Keywords = {- {- Id = 1,- List = { "and", "break", "by", "catch", "class", "continue", "debugger",- "default", "delete", "do", "else", "export", "extends", "finally", "for",- "if", "import", "in", "instanceof", "is", "isnt", "loop", "new", "not",- "of", "or", "return", "super", "switch", "then", "throw", "try", "typeof",- "unless", "until", "when", "while", "yield", "as", "from", "var"- }- },- {- Id = 2,- List = { "false", "Infinity", "NaN", "no", "null", "off", "on", "this",- "undefined", "true", "yes" }- },- { -- property names in object literals- Id = 3,- Regex = [[\w+(?=:)]]- },- {- Id = 1,- Regex = [[///|/(?!//)]]- },-}--Comments = {- {- Block = true,- Nested = false,- Delimiter = { [[###]], [[###]] }- },- {- Block = false,- Delimiter = { [[#(?!\{)]] } -- lookahead so string interpolation will work- }-}--Strings = {- Delimiter = [["""|'''|"|']],- Escape = [=[\\u\{[[:xdigit:]]+\}|\\u[[:xdigit:]]{4}|\\x[[:xdigit:]]{2}|\\[\\bfnrtv0'"]]=],- Interpolation = [[#\{[^}]+}]]-}--NestedSections = { -- regex as nested language seems to work?- {- Lang = "cs_block_regex",- Delimiter = { [[///]], [[///[gimuy]*]] }- },- {- Lang = "js_regex", -- js.lang might want to use this too- Delimiter = { [[/(?!//)]], [[(?!\\)/[gimuy]*]] }- },--}--Digits = [=[0[Bb][01]+|0[Oo][0-7]+|0[Xx][[:xdigit:]]+|\d+]=]-Identifiers = [=[[A-Za-z$_][A-Za-z$_0-9]*]=]-Operators = [[=|\+|-|\*|\/|%|<|>|&|\||^|!|\?|:|\.|,|@|\(|\)|\[|]|\{|}]]--EnableIndentation = false-IgnoreCase = false
@@ -0,0 +1,66 @@+-- a highlight lang definition for coffeescript, by Jess Austin+Description = "Coffeescript"++Categories = {"source", "script"}++Keywords = {+ {+ Id = 1,+ List = { "and", "break", "by", "catch", "class", "continue", "debugger",+ "default", "delete", "do", "else", "export", "extends", "finally", "for",+ "if", "import", "in", "instanceof", "is", "isnt", "loop", "new", "not",+ "of", "or", "return", "super", "switch", "then", "throw", "try", "typeof",+ "unless", "until", "when", "while", "yield", "as", "from", "var"+ }+ },+ {+ Id = 2,+ List = { "false", "Infinity", "NaN", "no", "null", "off", "on", "this",+ "undefined", "true", "yes" }+ },+ { -- property names in object literals+ Id = 3,+ Regex = [[\w+(?=:)]]+ },+ {+ Id = 1,+ Regex = [[///|/(?!//)]]+ },+}++Comments = {+ {+ Block = true,+ Nested = false,+ Delimiter = { [[###]], [[###]] }+ },+ {+ Block = false,+ Delimiter = { [[#(?!\{)]] } -- lookahead so string interpolation will work+ }+}++Strings = {+ Delimiter = [["""|'''|"|']],+ Escape = [=[\\u\{[[:xdigit:]]+\}|\\u[[:xdigit:]]{4}|\\x[[:xdigit:]]{2}|\\[\\bfnrtv0'"]]=],+ Interpolation = [[#\{[^}]+}]]+}++NestedSections = { -- regex as nested language seems to work?+ {+ Lang = "cs_block_regex",+ Delimiter = { [[///]], [[///[gimuy]*]] }+ },+ {+ Lang = "js_regex", -- js.lang might want to use this too+ Delimiter = { [[/(?!//)]], [[(?!\\)/[gimuy]*]] }+ },++}++Digits = [=[0[Bb][01]+|0[Oo][0-7]+|0[Xx][[:xdigit:]]+|\d+]=]+Identifiers = [=[[A-Za-z$_][A-Za-z$_0-9]*]=]+Operators = [[=|\+|-|\*|\/|%|<|>|&|\||^|!|\?|:|\.|,|@|\(|\)|\[|]|\{|}]]++EnableIndentation = false+IgnoreCase = false
langDefs/docker.lang
@@ -1,24 +0,0 @@-Description="Dockerfile"--Categories = {"config"}--Keywords={- { Id=1,- List={ "from", "run", "cmd", "label", "maintainer", "expose", "env", "add", "copy", "entrypoint", "volume", "user", "workdir", "arg", "onbuild", "stopsignal", "healthcheck", "shell" }- },--}--Strings={- Delimiter=[["|']],-}--IgnoreCase=true--Comments={- { Block=false,- Delimiter= { [[#]] },- },-}--Operators=[[\(|\)|\[|\]|\{|\}|\,|\;|\.|\:|\&|<|>|\!|\=|\/|\*|\%|\+|\-|\@]]
@@ -0,0 +1,24 @@+Description="Dockerfile"++Categories = {"config"}++Keywords={+ { Id=1,+ List={ "from", "run", "cmd", "label", "maintainer", "expose", "env", "add", "copy", "entrypoint", "volume", "user", "workdir", "arg", "onbuild", "stopsignal", "healthcheck", "shell" }+ },++}++Strings={+ Delimiter=[["|']],+}++IgnoreCase=true++Comments={+ { Block=false,+ Delimiter= { [[#]] },+ },+}++Operators=[[\(|\)|\[|\]|\{|\}|\,|\;|\.|\:|\&|<|>|\!|\=|\/|\*|\%|\+|\-|\@]]
@@ -40,12 +40,12 @@ NestedSections = { { Lang="php", Delimiter= { [[<\?php]], [[\?>]] } }, { Lang="jsp", Delimiter= { [[<\%[@!\=]?]], [[.*(%>).*]] } }, { Lang="css", Delimiter= { [[<style>]], [[<\/style>]] } },- { Lang="js", Delimiter= { [[<script>]], [[<\/script>]] } },+ { Lang="javascript", Delimiter= { [[<script>]], [[<\/script>]] } }, { Lang="css", Delimiter= { [[<style\s+type\=[\'\"]text\/css[\'\"]>]], [[<\/style>]] } },- { Lang="js", Delimiter= { [[<script\s+language\=\"[jJ]ava[sS]cript\"(?:\s+type\=\"text\/javascript\")?>]], [[<\/script>]] } },- { Lang="js", Delimiter= { [[<script\s+language=[\"\'][jJ]ava[sS]cript[\"\'](?:\s+type=[\"\']text/javascript[\"\'])?[^>]*>]], [[<\/script>]] } },- { Lang="js", Delimiter= { [[<script(?:\s+type=[\"\']text/javascript[\"\'])\s+language=[\"\'][jJ]ava[sS]cript[\"\']?[^>]*>]], [[<\/script>]] } },- { Lang="js", Delimiter= { [[<script(?:\s+type=[\"\']text/javascript[\"\'])>]], [[<\/script>]] } },+ { Lang="javascript", Delimiter= { [[<script\s+language\=\"[jJ]ava[sS]cript\"(?:\s+type\=\"text\/javascript\")?>]], [[<\/script>]] } },+ { Lang="javascript", Delimiter= { [[<script\s+language=[\"\'][jJ]ava[sS]cript[\"\'](?:\s+type=[\"\']text/javascript[\"\'])?[^>]*>]], [[<\/script>]] } },+ { Lang="javascript", Delimiter= { [[<script(?:\s+type=[\"\']text/javascript[\"\'])\s+language=[\"\'][jJ]ava[sS]cript[\"\']?[^>]*>]], [[<\/script>]] } },+ { Lang="javascript", Delimiter= { [[<script(?:\s+type=[\"\']text/javascript[\"\'])>]], [[<\/script>]] } }, --{ Lang="python", Delimiter= { [[\{%]], [[%\}]] } }, --{ Lang="python", Delimiter= { [[\{\{]], [[\}\}]] } },
@@ -0,0 +1,80 @@++Description="Javascript"++Categories = {"source", "script"}++Digits=[[ (?:0x)[0-9a-fA-F]+|(?:0b)[01]+|(?:0o)[0-8]+|\d*[\.]?\d+(?:[eE][\-\+]\d+)?[lLuU]* ]]++Keywords={+ { Id=1,+ List={"abstract", "break", "class", "const", "continue", "debugger",+ "default", "delete", "enum", "export", "extends", "finally",+ "instanceof", "import", "implements", "in", "goto", "native", "package",+ "private", "protected", "public", "super", "throw", "throws",+ "transient", "typeof", "void", "false", "with", "for", "this", "switch", "try",+ "while", "if", "do", "else", "return", "null", "case", "catch", "true", "new",+ "prototype", "var", "function", "namespace","use", "internal", "interface",+ "yields", "let", "get", "set", "of", "from", "constructor", "move", "yield", "static",+ },+ },+ { Id=2,+ List={+ "boolean", "byte", "char", "double", "float", "int", "long", "short",+ "decimal", "enum", "sbyte", "uint", "ulong", "ushort", "void", "undefined"},+ },++ -- may be replaced by NestedSections+ { Id=3,+ Regex=[[\/[^*\s/][^\s]*?[^\\]/[msixpodualgcy]*]],+ Group=0+ },++ { Id=4,+ Regex=[[(\w+)(\s*[:=]\s*function)?\s*\(]],+ Group=1+ },+ { Id=4,+ Regex=[[(\w+)\s*:]],+ Group=1+ },+}++Strings={+ Delimiter=[["|'|`]],+ Interpolation=[[ \$\{[^}]+\} ]],+ Escape = [=[ \\u\{?[[:xdigit:]]{4,6}\}?|\\\d{3}|\\x[[:xdigit:]]{2}|\\[ntvbrfa\\\?'\"] ]=]+}++IgnoreCase=false++Comments={+ { Block=false,+ Delimiter= { [[\/\/]] },+ },+ { Block=true,+ Nested=false,+ Delimiter= { [[\/\*]],[[\*\/]],}+ }+}++-- FIXME: division oerator, comments+--NestedSections = { -- regex as nested language seems to work?+-- {+-- Lang = "js_regex", -- js.lang might want to use this too+-- Delimiter = { [[/(?![/\*])]], [[/[msixpodualgcy]*]] },+-- --State=HL_STRING+-- }+--}+++Operators=[[\(|\)|\[|\]|\{|\}|\,|\;|\:|\&|<|>|\!|\=|\/|\*|\%|\+|\-|.]]++EnableIndentation=true++-- resolve issue with regex expression which spans strings like "</i>" + VAR + "</i>"+function OnStateChange(oldState, newState, token, groupID)+ if string.sub(token,1,1)=="/" and (oldState==HL_STRING or oldState==HL_COMMENT) and newState==HL_KEYWORD and groupID == 3 then+ return HL_REJECT+ end+ return newState+end
langDefs/js.lang
@@ -1,80 +0,0 @@--Description="Javascript"--Categories = {"source", "script"}--Digits=[[ (?:0x)[0-9a-fA-F]+|(?:0b)[01]+|(?:0o)[0-8]+|\d*[\.]?\d+(?:[eE][\-\+]\d+)?[lLuU]* ]]--Keywords={- { Id=1,- List={"abstract", "break", "class", "const", "continue", "debugger",- "default", "delete", "enum", "export", "extends", "finally",- "instanceof", "import", "implements", "in", "goto", "native", "package",- "private", "protected", "public", "super", "throw", "throws",- "transient", "typeof", "void", "false", "with", "for", "this", "switch", "try",- "while", "if", "do", "else", "return", "null", "case", "catch", "true", "new",- "prototype", "var", "function", "namespace","use", "internal", "interface",- "yields", "let", "get", "set", "of", "from", "constructor", "move", "yield", "static",- },- },- { Id=2,- List={- "boolean", "byte", "char", "double", "float", "int", "long", "short",- "decimal", "enum", "sbyte", "uint", "ulong", "ushort", "void", "undefined"},- },-- -- may be replaced by NestedSections- { Id=3,- Regex=[[\/[^*\s/][^\s]*?[^\\]/[msixpodualgcy]*]],- Group=0- },-- { Id=4,- Regex=[[(\w+)(\s*[:=]\s*function)?\s*\(]],- Group=1- },- { Id=4,- Regex=[[(\w+)\s*:]],- Group=1- },-}--Strings={- Delimiter=[["|'|`]],- Interpolation=[[ \$\{[^}]+\} ]],- Escape = [=[ \\u\{?[[:xdigit:]]{4,6}\}?|\\\d{3}|\\x[[:xdigit:]]{2}|\\[ntvbrfa\\\?'\"] ]=]-}--IgnoreCase=false--Comments={- { Block=false,- Delimiter= { [[\/\/]] },- },- { Block=true,- Nested=false,- Delimiter= { [[\/\*]],[[\*\/]],}- }-}---- FIXME: division oerator, comments---NestedSections = { -- regex as nested language seems to work?--- {--- Lang = "js_regex", -- js.lang might want to use this too--- Delimiter = { [[/(?![/\*])]], [[/[msixpodualgcy]*]] },--- --State=HL_STRING--- }---}---Operators=[[\(|\)|\[|\]|\{|\}|\,|\;|\:|\&|<|>|\!|\=|\/|\*|\%|\+|\-|.]]--EnableIndentation=true---- resolve issue with regex expression which spans strings like "</i>" + VAR + "</i>"-function OnStateChange(oldState, newState, token, groupID)- if string.sub(token,1,1)=="/" and (oldState==HL_STRING or oldState==HL_COMMENT) and newState==HL_KEYWORD and groupID == 3 then- return HL_REJECT- end- return newState-end
@@ -31,9 +31,9 @@ Comments={ NestedSections = { { Lang="java", Delimiter= { [[<%(?!\-\-)[=\!@]?]], [[%>]] } }, { Lang="css", Delimiter= { [[<style\s+type\=[\'\"]text\/css[\'\"]>]], [[<\/style>]] } },- { Lang="js", Delimiter= { [[<script>]], [[<\/script>]] } },- { Lang="js", Delimiter= { [[<script\s+language\=\"[jJ]ava[sS]cript\"(?:\s+type\=\"text\/javascript\")?>]], [[<\/script>]] } },- { Lang="js", Delimiter= { [[<script\s+language=[\"\'][jJ]ava[sS]cript[\"\'](?:\s+type=[\"\']text/javascript[\"\'])?[^>]*>]], [[<\/script>]] } },- { Lang="js", Delimiter= { [[<script(?:\s+type=[\"\']text/javascript[\"\'])\s+language=[\"\'][jJ]ava[sS]cript[\"\']?[^>]*>]], [[<\/script>]] } },- { Lang="js", Delimiter= { [[<script(?:\s+type=[\"\']text/javascript[\"\'])>]], [[<\/script>]] } },+ { Lang="javascript", Delimiter= { [[<script>]], [[<\/script>]] } },+ { Lang="javascript", Delimiter= { [[<script\s+language\=\"[jJ]ava[sS]cript\"(?:\s+type\=\"text\/javascript\")?>]], [[<\/script>]] } },+ { Lang="javascript", Delimiter= { [[<script\s+language=[\"\'][jJ]ava[sS]cript[\"\'](?:\s+type=[\"\']text/javascript[\"\'])?[^>]*>]], [[<\/script>]] } },+ { Lang="javascript", Delimiter= { [[<script(?:\s+type=[\"\']text/javascript[\"\'])\s+language=[\"\'][jJ]ava[sS]cript[\"\']?[^>]*>]], [[<\/script>]] } },+ { Lang="javascript", Delimiter= { [[<script(?:\s+type=[\"\']text/javascript[\"\'])>]], [[<\/script>]] } }, }
@@ -1,19 +1,17 @@ -- Load JS definition-dofile(HL_LANG_DIR.."js.lang")+dofile(HL_LANG_DIR.."javascript.lang") Description="JSX" Categories = {"script", "javascript"} - table.insert(Keywords, { Id=1, List={ "into", "final", "mixin", "as", "debugger", "log", "assert"}, } ) - table.insert(Keywords, { Id=3, Regex=[[<[!?]?(?!\-\-)\/?[\w\:\-]+>?|[/?]?>]],
langDefs/make.lang
@@ -1,44 +0,0 @@--Description="Make"--Categories = {"config", "script"}--Identifiers=[[ [a-zA-Z_][\w\d\-]* ]]--Keywords={- { Id=1,- List={"addprefix", "addsuffix", "basename", "dir", "filter", "filter-out", "findstring", "firstword", "foreach", "join",- "notdir", "origin", "patsubst", "shell", "sort", "strip", "subst", "suffix", "wildcard", "word", "words", "all_cflags",- "ar", "arflags", "as", "asflags", "cc", "cflags", "co", "coflags", "cpp", "cppflags", "ctangle", "cweave", "cxx",- "cxxflags", "fc", "fflags", "force", "get", "gflags", "install_data", "install_program", "ld", "ldflags", "lex",- "lflags", "makeinfo", "pc", "pflags", "rflags", "rm", "tags", "tangle", "tex", "texi2dvi", "weave", "yacc", "yaccr",- "yflags", "all", "bindir", "check", "clean", "clobber", "datadir", "dist", "distclean", "dvi", "exec_prefix",- "includedir", "info", "infodir", "install", "installcheck", "installdirs", "libdir", "man0dir", "man0ext", "man1dir",- "man1ext", "man2dir", "man2ext", "man3dir", "man3ext", "man4dir", "man4ext", "man5dir", "man5ext", "man6dir", "man6ext",- "man7dir", "man7ext", "man8dir", "man8ext", "man9dir", "man9ext", "mandir", "manext",- "mostlyclean", "oldincludedir", "prefix", "print", "realclean", "shar", "srcdir", "statedir", "tar", "test", "uninstall"},- },- { Id=2,- List={"define", "else", "endef", "endif", "export", "ifdef", "ifeq", "ifndef", "ifneq", "include", "override", "unexport"},- },- { Id=3,- Regex=[[(\$\{(\w+)\})]],- },- { Id=4,- Regex=[[\$\w+]],- }-}--Strings={- Delimiter=[["|'|`]],-}--IgnoreCase=false--Comments={- { Block=false,- Delimiter= { [[#]] },- },-}--Operators=[[\(|\)|\[|\]|\{|\}|\,|\;|\:|\&|<|>|\!|\=|\/|\*|\%|\+|\-|\$]]
@@ -0,0 +1,44 @@++Description="Make"++Categories = {"config", "script"}++Identifiers=[[ [a-zA-Z_][\w\d\-]* ]]++Keywords={+ { Id=1,+ List={"addprefix", "addsuffix", "basename", "dir", "filter", "filter-out", "findstring", "firstword", "foreach", "join",+ "notdir", "origin", "patsubst", "shell", "sort", "strip", "subst", "suffix", "wildcard", "word", "words", "all_cflags",+ "ar", "arflags", "as", "asflags", "cc", "cflags", "co", "coflags", "cpp", "cppflags", "ctangle", "cweave", "cxx",+ "cxxflags", "fc", "fflags", "force", "get", "gflags", "install_data", "install_program", "ld", "ldflags", "lex",+ "lflags", "makeinfo", "pc", "pflags", "rflags", "rm", "tags", "tangle", "tex", "texi2dvi", "weave", "yacc", "yaccr",+ "yflags", "all", "bindir", "check", "clean", "clobber", "datadir", "dist", "distclean", "dvi", "exec_prefix",+ "includedir", "info", "infodir", "install", "installcheck", "installdirs", "libdir", "man0dir", "man0ext", "man1dir",+ "man1ext", "man2dir", "man2ext", "man3dir", "man3ext", "man4dir", "man4ext", "man5dir", "man5ext", "man6dir", "man6ext",+ "man7dir", "man7ext", "man8dir", "man8ext", "man9dir", "man9ext", "mandir", "manext",+ "mostlyclean", "oldincludedir", "prefix", "print", "realclean", "shar", "srcdir", "statedir", "tar", "test", "uninstall"},+ },+ { Id=2,+ List={"define", "else", "endef", "endif", "export", "ifdef", "ifeq", "ifndef", "ifneq", "include", "override", "unexport"},+ },+ { Id=3,+ Regex=[[(\$\{(\w+)\})]],+ },+ { Id=4,+ Regex=[[\$\w+]],+ }+}++Strings={+ Delimiter=[["|'|`]],+}++IgnoreCase=false++Comments={+ { Block=false,+ Delimiter= { [[#]] },+ },+}++Operators=[[\(|\)|\[|\]|\{|\}|\,|\;|\:|\&|<|>|\!|\=|\/|\*|\%|\+|\-|\$]]
@@ -60,7 +60,7 @@ end -- add more here as needed NestedSections = { { Lang="python", Delimiter= { [[\#\+begin_src\ python|\#\+BEGIN_SRC\ python]], [[\#\+end_src|\#\+END_SRC]] } },- { Lang="sh", Delimiter= { [[\#\+begin_src\ sh|\#\+BEGIN_SRC\ sh]], [[\#\+end_src|\#\+END_SRC]] } },+ { Lang="shellscript", Delimiter= { [[\#\+begin_src\ sh|\#\+BEGIN_SRC\ sh]], [[\#\+end_src|\#\+END_SRC]] } }, { Lang="perl", Delimiter= { [[\#\+begin_src\ pl|\#\+BEGIN_SRC\ pl]], [[\#\+end_src|\#\+END_SRC]] } }, { Lang="ruby", Delimiter= { [[\#\+begin_src\ ruby|\#\+BEGIN_SRC\ ruby]], [[\#\+end_src|\#\+END_SRC]] } }, }
@@ -1,4 +1,3 @@--- Language definition generated by lang2to3 Description="PL/1"
@@ -0,0 +1,91 @@+Description="Microsoft PowerShell"++Categories = {"source", "script", "shell"}++Identifiers=[[ [a-zA-Z_][\w\-]* ]]++Keywords={+ { Id=1,+ List={"Add-Content", "Add-History", "Add-Member", "Add-PSSnapin",+ "Clear-Content", "Clear-Item", "Clear-ItemProperty", "Clear-Variable",+ "Compare-Object", "ConvertFrom-SecureString",+ "Convert-Path", "ConvertTo-Html", "ConvertTo-SecureString", "Copy-Item",+ "Copy-ItemProperty", "Export-Alias", "Export-Clixml", "Export-Console",+ "Export-Csv", "ForEach-Object", "Format-Custom",+ "Format-List", "Format-Table", "Format-Wide", "Get-Acl", "Get-Alias",+ "Get-AuthenticodeSignature", "Get-ChildItem", "Get-Command", "Get-Content",+ "Get-Credential", "Get-Culture", "Get-Date",+ "Get-EventLog", "Get-ExecutionPolicy", "Get-Help", "Get-History",+ "Get-Host", "Get-Item", "Get-ItemProperty", "Get-Location", "Get-Member",+ "Get-PfxCertificate", "Get-Process", "Get-PSDrive",+ "Get-PSProvider", "Get-PSSnapin", "Get-Service", "Get-TraceSource",+ "Get-UICulture", "Get-Unique", "Get-Variable", "Get-WmiObject", "Group-Object",+ "Import-Alias", "Import-Clixml", "Import-Csv",+ "Invoke-Expression", "Invoke-History", "Invoke-Item", "Join-Path",+ "Measure-Command", "Measure-Object", "Move-Item", "Move-ItemProperty",+ "New-Alias", "New-Item", "New-ItemProperty", "New-Object", "Write-host",+ "New-PSDrive", "New-Service", "New-TimeSpan", "New-Variable", "Out-Default",+ "Out-File", "Out-Host", "Out-Null", "Out-Printer", "Out-String", "Pop-Location",+ "Push-Location", "Read-Host",+ "Remove-Item", "Remove-ItemProperty", "Remove-PSDrive", "Remove-PSSnapin",+ "Remove-Variable", "Rename-Item", "Rename-ItemProperty", "Resolve-Path",+ "Restart-Service", "Resume-Service", "Select-Object",+ "Select-String", "Set-Acl", "Set-Alias", "Set-AuthenticodeSignature",+ "Set-Content", "Set-Date", "Set-ExecutionPolicy", "Set-Item",+ "Set-ItemProperty", "Set-Location", "Set-PSDebug", "Set-Service",+ "Set-TraceSource", "Set-Variable", "Sort-Object", "Split-Path",+ "Start-Service", "Start-Sleep", "Start-Transcript", "Stop-Process",+ "Stop-Service", "Stop-Transcript", "Suspend-Service", "Tee-Object",+ "Test-Path", "Trace-Command", "Update-FormatData", "Update-TypeData",+ "Where-Object", "Write-Debug",+ "Write-Error", "Write-Host", "Write-Output", "Write-Progress",+ "Write-Verbose", "Write-Warning", "switch", "function", "if", "throw", "else",+ "while", "break", "in", "return", "try", "catch", "for"},+ },+ { Id=2,+ List={"ac", "asnp", "clc", "cli", "clp", "clv", "cpi", "cpp", "cvpa",+ "diff", "epal", "epcsv", "fc", "fl", "foreach", "%", "ft", "fw", "gal", "gc",+ "gci", "gcm", "gdr", "ghy", "gi", "gl", "gm", "gp",+ "gps", "group", "gsv", "gsnp", "gu", "gv", "gwmi", "iex", "ihy", "ii",+ "ipal", "ipcsv", "mi", "mp", "nal", "ndr", "ni", "nv", "oh", "rdr", "ri", "rni",+ "rnp", "rp", "rsnp", "rv", "rvpa", "sal", "sasv",+ "sc", "select", "si", "sl", "sleep", "sort", "sp", "spps", "spsv", "sv",+ "tee", "where", "write", "cat", "cd", "clear", "cp", "h", "history",+ "kill", "lp", "ls", "mount", "mv", "popd", "ps", "pushd",+ "pwd", "r", "rm", "rmdir", "echo", "cls", "chdir", "copy", "del", "dir",+ "erase", "move", "rd", "ren", "set", "type"},+ },+ { Id=3,+ Regex=[[Win32_\w+]],+ },+ { Id=4,+ Regex=[[\$\w+]],+ },+}++Strings={+ Delimiter=[["|']],+ Escape=[[ `\d{3}|`x\d{2}|^[ntvbrfa`\?'"] ]],+ Interpolation=[[ \$\w+|\$\(.+?\) ]],+}++IgnoreCase=false++Comments={+ { Block=false,+ Delimiter= { [[#]] },+ },+}++Operators=[[\(|\)|\[|\]|\{|\}|\,|\;|\.|\:|\&|<|>|\!|\=|\/|\*|\%|\+|\-|\~|\?|\||\.]]++EnableIndentation=false++-- fix recognition of $+function OnStateChange(oldState, newState, token)++ if (string.sub(token,1,1) =="$") and oldState==HL_STRING and newState==HL_KEYWORD then+ return HL_INTERPOLATION+ end++end
langDefs/ps1.lang
@@ -1,91 +0,0 @@-Description="Microsoft PowerShell"--Categories = {"source", "script", "shell"}--Identifiers=[[ [a-zA-Z_][\w\-]* ]]--Keywords={- { Id=1,- List={"Add-Content", "Add-History", "Add-Member", "Add-PSSnapin",- "Clear-Content", "Clear-Item", "Clear-ItemProperty", "Clear-Variable",- "Compare-Object", "ConvertFrom-SecureString",- "Convert-Path", "ConvertTo-Html", "ConvertTo-SecureString", "Copy-Item",- "Copy-ItemProperty", "Export-Alias", "Export-Clixml", "Export-Console",- "Export-Csv", "ForEach-Object", "Format-Custom",- "Format-List", "Format-Table", "Format-Wide", "Get-Acl", "Get-Alias",- "Get-AuthenticodeSignature", "Get-ChildItem", "Get-Command", "Get-Content",- "Get-Credential", "Get-Culture", "Get-Date",- "Get-EventLog", "Get-ExecutionPolicy", "Get-Help", "Get-History",- "Get-Host", "Get-Item", "Get-ItemProperty", "Get-Location", "Get-Member",- "Get-PfxCertificate", "Get-Process", "Get-PSDrive",- "Get-PSProvider", "Get-PSSnapin", "Get-Service", "Get-TraceSource",- "Get-UICulture", "Get-Unique", "Get-Variable", "Get-WmiObject", "Group-Object",- "Import-Alias", "Import-Clixml", "Import-Csv",- "Invoke-Expression", "Invoke-History", "Invoke-Item", "Join-Path",- "Measure-Command", "Measure-Object", "Move-Item", "Move-ItemProperty",- "New-Alias", "New-Item", "New-ItemProperty", "New-Object", "Write-host",- "New-PSDrive", "New-Service", "New-TimeSpan", "New-Variable", "Out-Default",- "Out-File", "Out-Host", "Out-Null", "Out-Printer", "Out-String", "Pop-Location",- "Push-Location", "Read-Host",- "Remove-Item", "Remove-ItemProperty", "Remove-PSDrive", "Remove-PSSnapin",- "Remove-Variable", "Rename-Item", "Rename-ItemProperty", "Resolve-Path",- "Restart-Service", "Resume-Service", "Select-Object",- "Select-String", "Set-Acl", "Set-Alias", "Set-AuthenticodeSignature",- "Set-Content", "Set-Date", "Set-ExecutionPolicy", "Set-Item",- "Set-ItemProperty", "Set-Location", "Set-PSDebug", "Set-Service",- "Set-TraceSource", "Set-Variable", "Sort-Object", "Split-Path",- "Start-Service", "Start-Sleep", "Start-Transcript", "Stop-Process",- "Stop-Service", "Stop-Transcript", "Suspend-Service", "Tee-Object",- "Test-Path", "Trace-Command", "Update-FormatData", "Update-TypeData",- "Where-Object", "Write-Debug",- "Write-Error", "Write-Host", "Write-Output", "Write-Progress",- "Write-Verbose", "Write-Warning", "switch", "function", "if", "throw", "else",- "while", "break", "in", "return", "try", "catch", "for"},- },- { Id=2,- List={"ac", "asnp", "clc", "cli", "clp", "clv", "cpi", "cpp", "cvpa",- "diff", "epal", "epcsv", "fc", "fl", "foreach", "%", "ft", "fw", "gal", "gc",- "gci", "gcm", "gdr", "ghy", "gi", "gl", "gm", "gp",- "gps", "group", "gsv", "gsnp", "gu", "gv", "gwmi", "iex", "ihy", "ii",- "ipal", "ipcsv", "mi", "mp", "nal", "ndr", "ni", "nv", "oh", "rdr", "ri", "rni",- "rnp", "rp", "rsnp", "rv", "rvpa", "sal", "sasv",- "sc", "select", "si", "sl", "sleep", "sort", "sp", "spps", "spsv", "sv",- "tee", "where", "write", "cat", "cd", "clear", "cp", "h", "history",- "kill", "lp", "ls", "mount", "mv", "popd", "ps", "pushd",- "pwd", "r", "rm", "rmdir", "echo", "cls", "chdir", "copy", "del", "dir",- "erase", "move", "rd", "ren", "set", "type"},- },- { Id=3,- Regex=[[Win32_\w+]],- },- { Id=4,- Regex=[[\$\w+]],- },-}--Strings={- Delimiter=[["|']],- Escape=[[ `\d{3}|`x\d{2}|^[ntvbrfa`\?'"] ]],- Interpolation=[[ \$\w+|\$\(.+?\) ]],-}--IgnoreCase=false--Comments={- { Block=false,- Delimiter= { [[#]] },- },-}--Operators=[[\(|\)|\[|\]|\{|\}|\,|\;|\.|\:|\&|<|>|\!|\=|\/|\*|\%|\+|\-|\~|\?|\||\.]]--EnableIndentation=false---- fix recognition of $-function OnStateChange(oldState, newState, token)-- if (string.sub(token,1,1) =="$") and oldState==HL_STRING and newState==HL_KEYWORD then- return HL_INTERPOLATION- end--end
langDefs/rs.lang
@@ -1,62 +0,0 @@--Description="Rust"--Categories = {"source"}--Digits=[[ (?:0x|0o|0b)[0-9a-fA-F\_uif]+|\d+[\.]?[\d\_uif]+(?:[eE][\-\+][\d\_uif]+)?|\d+ ]]--Keywords={- { Id=1,- List={"as", "box", "break", "const", "continue", "crate", "else",- "extern", "false", "fn", "for", "if", "impl", "in", "let", "loop",- "match", "mod", "move", "mut", "pub", "ref", "return", "self",- "Self", "static", "super", "trait", "true", "type",- "unsafe", "use", "where", "while", "abstract", "alignof", "become",- "do", "final", "macro", "offsetof", "override", "priv", "pure",- "sizeof", "typeof", "unsized", "virtual", "yield", "auto", "catch"- }- },- { Id=2,- List= { "u8", "u16", "u32", "u64", "i8", "i16", "i32", "i64",- "f32", "f64", "usize", "isize", "char", "str", "struct","enum"- }- },-- -- weak keywords- { Id=3,- List= { "default", "dyn", "union"- }- },- { Id=4,- Regex=[[(\w+)\s*\(]]- }-}--Strings = {- Delimiter=[["]],- RawPrefix="r",- Escape = [[ \\[\'\\\"aftnrv]|\\U\{[0-9a-fA-F]{8}\}|\\u\{[0-9a-fA-F]{4}\}|\\x?? ]],- Interpolation=[[ \{[^}]+\}|\{\} ]]-}--Comments = {- { Block=true,- Nested=true,- Delimiter = { [[\/\*]], [[\*\/]] }- },- {- Block=false,- Delimiter = { [[//]] }- }-}--IgnoreCase=false--PreProcessor = {- Prefix=[[#]],- Continuation="\\",-}--Operators=[[\(|\)|\[|\]|\{|\}|\,|\;|\.|\:|\&|<|>|\!|=|\/|\*|\%|\+|\-|\~|\||\^']]--EnableIndentation=true
@@ -0,0 +1,62 @@++Description="Rust"++Categories = {"source"}++Digits=[[ (?:0x|0o|0b)[0-9a-fA-F\_uif]+|\d+[\.]?[\d\_uif]+(?:[eE][\-\+][\d\_uif]+)?|\d+ ]]++Keywords={+ { Id=1,+ List={"as", "box", "break", "const", "continue", "crate", "else",+ "extern", "false", "fn", "for", "if", "impl", "in", "let", "loop",+ "match", "mod", "move", "mut", "pub", "ref", "return", "self",+ "Self", "static", "super", "trait", "true", "type",+ "unsafe", "use", "where", "while", "abstract", "alignof", "become",+ "do", "final", "macro", "offsetof", "override", "priv", "pure",+ "sizeof", "typeof", "unsized", "virtual", "yield", "auto", "catch"+ }+ },+ { Id=2,+ List= { "u8", "u16", "u32", "u64", "i8", "i16", "i32", "i64",+ "f32", "f64", "usize", "isize", "char", "str", "struct","enum"+ }+ },++ -- weak keywords+ { Id=3,+ List= { "default", "dyn", "union"+ }+ },+ { Id=4,+ Regex=[[(\w+\!?)\s*\(]]+ }+}++Strings = {+ Delimiter=[["]],+ RawPrefix="r",+ Escape = [[ \\[\'\\\"aftnrv]|\\x[0-9a-fA-F]{2}|\\U\{[0-9a-fA-F]{8}\}|\\u\{[0-9a-fA-F]{4}\}|\\x?? ]],+ Interpolation=[[ \{\S*?\} ]]+}++Comments = {+ { Block=true,+ Nested=true,+ Delimiter = { [[\/\*]], [[\*\/]] }+ },+ {+ Block=false,+ Delimiter = { [[//]] }+ }+}++IgnoreCase=false++PreProcessor = {+ Prefix=[[#]],+ Continuation="\\",+}++Operators=[[\(|\)|\[|\]|\{|\}|\,|\;|\.|\:|\&|<|>|\!|=|\/|\*|\%|\+|\-|\~|\||\^']]++EnableIndentation=true
@@ -1,4 +1,5 @@ -- Load Java definition+ dofile(HL_LANG_DIR.."java.lang") Description="Scala"@@ -9,10 +10,17 @@ Categories = {"source", "functional"} table.insert(Keywords, { Id=1, List={"abstract", "def", "object", "override", "sealed", "trait", "type", "val", "var", "yield",- "forSome", "implicit", "lazy", "match", "null", "with", "given"},+ "forSome", "implicit", "lazy", "match", "null", "with", "given", "export", "then"},+ }+)++table.insert(Keywords,+ { Id=5,+ List={"as", "derives", "end", "extension", "infix", "inline", "opaque", "open", "transparent", "using"}, } ) + Strings={ Delimiter=[["""|"|']], }
langDefs/sh.lang
@@ -1,98 +0,0 @@--Description="Bash"--Categories = {"script", "shell"}--Identifiers=[[ [a-zA-Z_]\w*(?!\w*\/) ]]--Keywords={- { Id=1,- List={"case", "in", "esac", "for", "do", "done", "function", "if", "then",- "fi", "elif", "else", "select", "time", "until", "while"},- },- { Id=2,- List={"source", "alias", "bind", "break", "builtin", "command", "continue",- "declare", "dirs", "disown", "enable", "export", "fc", "fg", "getopts",- "hash", "help", "history", "jobs", "let", "local", "logout", "popd", "printf",- "pushd", "pwd", "read", "readonly", "return", "set", "shift", "shopt",- "suspend", "test", "times", "trap", "type", "ulimit", "umask", "unalias",- "unset", "wait", "eval", "bg", "cd", "echo", "exec", "exit", "kill"},- },- { Id=3,- List={"ls", "cat", "tac", "rev", "cp", "mv", "rm", "rmdir", "chmod", "mkdir", "ls", "ll",- "chattr", "ln", "find", "xargs", "expr", "date", "zdump", "time", "touch", "at",- "batch", "cal", "sleep", "usleep", "hwclock", "clock", "sort", "tsort", "diff",- "patch", "diff3", "sdiff", "cmp", "comm", "uniq", "expand", "unexpand", "cat",- "paste", "join", "head", "tail", "grep", "egrep", "zgrep", "look", "sed", "awk",- "wc", "tr", "fold", "fmt", "ptx", "col", "column", "colrm", "nl", "pr",- "gettext", "iconv", "recode", "groff", "lex", "yacc", "tar", "shar", "ar",- "cpio", "gzip", "bzip2", "compress", "uncompress", "zip", "unzip", "sq", "file",- "which", "whereis", "whatis", "vdir", "shred", "locate", "slocate", "strings",- "basename", "dirname", "split", "sum", "cksum", "md5sum", "sha1sum", "uuencode",- "uudecode", "crypt", "make", "install", "more", "less", "host", "vrfy",- "nslookup", "dig", "traceroute", "ping", "whois", "finger", "ftp", "uucp",- "telnet", "rlogin", "rsh", "rcp", "ssh", "write", "mail", "vacation", "tput",- "reset", "clear", "script", "factor", "bc", "dc", "jot", "seq", "yes", "banner",- "printenv", "lp", "tee", "mkfifo", "pathchk", "dd", "od", "hexdump", "m4"},- },-- -- fixes issue with expressions like ${SHELL="${CONFIG_SHELL-/bin/sh}"}- -- the [^\}]+ part fixes issue with "s#@PATH@#/opt/${pkgname}/bin/# ${pkgdir}/etc/profile.d/${pkgname}.sh"- { Id=4,- Regex=[[\$\{[^\}]+\$\{.+?\}.+?\}|\$\{.+?\}|\$\(.+?\) ]],- },- { Id=4,- Regex=[[ \$[\w\#]+ ]],- },- { Id=2,- Regex=[[ \-\-?[\w\-]+ ]],- },-- --see OnStateChange- { Id=5,- Regex=[[ \*\[.*?\]\* ]],- }-}---- hereDoc opening delimiter, see OnStateChange to handle end of string-Strings={- Delimiter=[[<<[\-]?\s*["']?\s*[A-Za-z_]+["']?|"|`|']],-}--IgnoreCase=false--Comments={- { Block=false,- Delimiter= { [[#]] },- },-}--Operators=[[\(|\)|\[|\]|\{|\}|\,|\;|\:|\&|<|>|\!|\=|\/|\*|\%|\+|\-|\|]]--function OnStateChange(oldState, newState, token, kwClass)-- if oldState==HL_STRING and token==hereDoc then- hereDoc = nil- return HL_STRING_END- end-- if (string.sub(token,1,1) =="$" ) and oldState==HL_STRING and newState==HL_KEYWORD then- return HL_INTERPOLATION- end-- -- fix of code like case $1 in *[\\\`\"\$]*)- if kwClass==5 then- return HL_OPERATOR- end-- if hereDoc~=nil then- return HL_STRING- end-- --recognize hereDoc multine strings- if oldState==HL_STANDARD and newState==HL_STRING then- hereDoc = string.match(token, "<<%-?%s*%'?([%-%a%d_]+)" )- end-- return newState-end
@@ -0,0 +1,98 @@++Description="Bash"++Categories = {"script", "shell"}++Identifiers=[[ [a-zA-Z_]\w*(?!\w*\/) ]]++Keywords={+ { Id=1,+ List={"case", "in", "esac", "for", "do", "done", "function", "if", "then",+ "fi", "elif", "else", "select", "time", "until", "while"},+ },+ { Id=2,+ List={"source", "alias", "bind", "break", "builtin", "command", "continue",+ "declare", "dirs", "disown", "enable", "export", "fc", "fg", "getopts",+ "hash", "help", "history", "jobs", "let", "local", "logout", "popd", "printf",+ "pushd", "pwd", "read", "readonly", "return", "set", "shift", "shopt",+ "suspend", "test", "times", "trap", "type", "ulimit", "umask", "unalias",+ "unset", "wait", "eval", "bg", "cd", "echo", "exec", "exit", "kill"},+ },+ { Id=3,+ List={"ls", "cat", "tac", "rev", "cp", "mv", "rm", "rmdir", "chmod", "mkdir", "ls", "ll",+ "chattr", "ln", "find", "xargs", "expr", "date", "zdump", "time", "touch", "at",+ "batch", "cal", "sleep", "usleep", "hwclock", "clock", "sort", "tsort", "diff",+ "patch", "diff3", "sdiff", "cmp", "comm", "uniq", "expand", "unexpand", "cat",+ "paste", "join", "head", "tail", "grep", "egrep", "zgrep", "look", "sed", "awk",+ "wc", "tr", "fold", "fmt", "ptx", "col", "column", "colrm", "nl", "pr",+ "gettext", "iconv", "recode", "groff", "lex", "yacc", "tar", "shar", "ar",+ "cpio", "gzip", "bzip2", "compress", "uncompress", "zip", "unzip", "sq", "file",+ "which", "whereis", "whatis", "vdir", "shred", "locate", "slocate", "strings",+ "basename", "dirname", "split", "sum", "cksum", "md5sum", "sha1sum", "uuencode",+ "uudecode", "crypt", "make", "install", "more", "less", "host", "vrfy",+ "nslookup", "dig", "traceroute", "ping", "whois", "finger", "ftp", "uucp",+ "telnet", "rlogin", "rsh", "rcp", "ssh", "write", "mail", "vacation", "tput",+ "reset", "clear", "script", "factor", "bc", "dc", "jot", "seq", "yes", "banner",+ "printenv", "lp", "tee", "mkfifo", "pathchk", "dd", "od", "hexdump", "m4"},+ },++ -- fixes issue with expressions like ${SHELL="${CONFIG_SHELL-/bin/sh}"}+ -- the [^\}]+ part fixes issue with "s#@PATH@#/opt/${pkgname}/bin/# ${pkgdir}/etc/profile.d/${pkgname}.sh"+ { Id=4,+ Regex=[[\$\{[^\}]+\$\{.+?\}.+?\}|\$\{.+?\}|\$\(.+?\) ]],+ },+ { Id=4,+ Regex=[[ \$[\w\#]+ ]],+ },+ { Id=2,+ Regex=[[ \-\-?[\w\-]+ ]],+ },++ --see OnStateChange+ { Id=5,+ Regex=[[ \*\[.*?\]\* ]],+ }+}++-- hereDoc opening delimiter, see OnStateChange to handle end of string+Strings={+ Delimiter=[[<<[\-]?\s*["']?\s*[A-Za-z_]+["']?|"|`|']],+}++IgnoreCase=false++Comments={+ { Block=false,+ Delimiter= { [[#]] },+ },+}++Operators=[[\(|\)|\[|\]|\{|\}|\,|\;|\:|\&|<|>|\!|\=|\/|\*|\%|\+|\-|\|]]++function OnStateChange(oldState, newState, token, kwClass)++ if oldState==HL_STRING and token==hereDoc then+ hereDoc = nil+ return HL_STRING_END+ end++ if (string.sub(token,1,1) =="$" ) and oldState==HL_STRING and newState==HL_KEYWORD then+ return HL_INTERPOLATION+ end++ -- fix of code like case $1 in *[\\\`\"\$]*)+ if kwClass==5 then+ return HL_OPERATOR+ end++ if hereDoc~=nil then+ return HL_STRING+ end++ --recognize hereDoc multine strings+ if oldState==HL_STANDARD and newState==HL_STRING then+ hereDoc = string.match(token, "<<%-?%s*%'?([%-%a%d_]+)" )+ end++ return newState+end
@@ -30,8 +30,8 @@ Comments={ NestedSections = { { Lang="css", Delimiter= { [[<style\s+type\=[\'\"]text\/css[\'\"]>]], [[<\/style>]] } },- { Lang="js", Delimiter= { [[<script>]], [[<\/script>]] } },- { Lang="js", Delimiter= { [[<script(?:\s+type=[\"\']text/ecmascript[\"\'])>]], [[<\/script>]] } },+ { Lang="javascript", Delimiter= { [[<script>]], [[<\/script>]] } },+ { Lang="javascript", Delimiter= { [[<script(?:\s+type=[\"\']text/ecmascript[\"\'])>]], [[<\/script>]] } }, } IgnoreCase=true
langDefs/ts.lang
@@ -1,57 +0,0 @@--Description="TypeScript"--Categories = {"script", "javascript"}---Digits=[[ (?:0x)[0-9a-fA-F]+|(?:0b)[01]+|(?:0o)[0-8]+|\d*[\.]?\d+(?:[eE][\-\+]\d+)?[lLuU]* ]]--Keywords={- { Id=1,- List={ "import", "export", "arguments", "this", "let", "var", "yield", "delete", "new", "instanceof", "typeof", "alert",- "confirm", "prompt", "status", "self", "top", "parent", "if", "else", "switch", "do", "while", "for", "in", "break",- "continue", "case", "default", "return",- "with", "try", "catch", "throw", "finally", "Error", "EvalError", "RangeError", "ReferenceError", "SyntaxError", "TypeError",- "URIError", "declare", "as",- "interface", "module", "abstract", "enum", "export", "interface", "static", "extends", "super", "final",- "native", "synchronized", "class", "package", "throws", "const", "goto", "private", "transient", "debugger", "implements",- "protected", "volatile",- "double", "import", "public", "function", "type", "readonly", "is", "async", "await", "namespace", "of"- }- },- { Id=2,- List={ "any", "number", "string", "bool", "Array", "Boolean", "Date", "Function", "Infinity", "Math", "Number", "NaN", "Object",- "Packages", "RegExp", "String",- "true", "false", "null", "undefined", "int", "short", "boolean", "float", "char", "long", "byte", "void", "never"- }- },- { Id=3,- Regex=[[(^\w+):]]- },-- { Id=4,- Regex=[[(\w+)\s*\(]]- }-}--Strings = {- Delimiter=[[`|'|"]],- Interpolation=[[ \$\{[^}]+\} ]],-}--Comments = {- { Block=true,- Nested=false,- Delimiter = { [[\/\*]], [[\*\/]] }- },- {- Block=false,- Delimiter = { [[//]] }- }-}--IgnoreCase=false--Operators=[[\(|\)|\[|\]|\{|\}|\,|\;|\.|\:|\&|<|>|\!|=|\/|\*|\%|\+|\-|\~|\||\^|\?]]--EnableIndentation=true
@@ -1,11 +1,10 @@ -dofile(HL_LANG_DIR.."ts.lang")+dofile(HL_LANG_DIR.."typescript.lang") Description="TSX (TypeScript with React)" Categories = {"script", "javascript"} - table.insert(Keywords, { Id=1, Regex=[[<[!?]?(?!\-\-)\/?[\w\:\-]+>?|[/?]?>]],
@@ -0,0 +1,57 @@++Description="TypeScript"++Categories = {"script", "javascript"}+++Digits=[[ (?:0x)[0-9a-fA-F]+|(?:0b)[01]+|(?:0o)[0-8]+|\d*[\.]?\d+(?:[eE][\-\+]\d+)?[lLuU]* ]]++Keywords={+ { Id=1,+ List={ "import", "export", "arguments", "this", "let", "var", "yield", "delete", "new", "instanceof", "typeof", "alert",+ "confirm", "prompt", "status", "self", "top", "parent", "if", "else", "switch", "do", "while", "for", "in", "break",+ "continue", "case", "default", "return",+ "with", "try", "catch", "throw", "finally", "Error", "EvalError", "RangeError", "ReferenceError", "SyntaxError", "TypeError",+ "URIError", "declare", "as",+ "interface", "module", "abstract", "enum", "export", "interface", "static", "extends", "super", "final",+ "native", "synchronized", "class", "package", "throws", "const", "goto", "private", "transient", "debugger", "implements",+ "protected", "volatile",+ "double", "import", "public", "function", "type", "readonly", "is", "async", "await", "namespace", "of"+ }+ },+ { Id=2,+ List={ "any", "number", "string", "bool", "Array", "Boolean", "Date", "Function", "Infinity", "Math", "Number", "NaN", "Object",+ "Packages", "RegExp", "String",+ "true", "false", "null", "undefined", "int", "short", "boolean", "float", "char", "long", "byte", "void", "never"+ }+ },+ { Id=3,+ Regex=[[(^\w+):]]+ },++ { Id=4,+ Regex=[[(\w+)\s*\(]]+ }+}++Strings = {+ Delimiter=[[`|'|"]],+ Interpolation=[[ \$\{[^}]+\} ]],+}++Comments = {+ { Block=true,+ Nested=false,+ Delimiter = { [[\/\*]], [[\*\/]] }+ },+ {+ Block=false,+ Delimiter = { [[//]] }+ }+}++IgnoreCase=false++Operators=[[\(|\)|\[|\]|\{|\}|\,|\;|\.|\:|\&|<|>|\!|=|\/|\*|\%|\+|\-|\~|\||\^|\?]]++EnableIndentation=true
@@ -0,0 +1,25 @@+-- Language Server Protocol settings+--+-- The profile settings here may be set with the corresponding --ls-* options+-- (see highlight -h for details).++-- The LSP features are part of a beta release cycle and may not work/are subject to change.++Servers = {++ { Server="clangd", Exec="clangd", Syntax="c", Options={"--log=error"} },+ { Server="ccls", Exec="ccls", Syntax="c", Options={"-v=-3", "--"} },+ { Server="ccls-objc", Exec="ccls", Syntax="objc", Options={"-v=-3", "--"} },++ { Server="gopls", Exec="gopls", Syntax="go", Options={} },++ { Server="rls", Exec="rls", Syntax="rust", Options={} },+ { Server="rust-analyzer", Exec="rust-analyzer", Syntax="rust", Delay=250, Options={} },++ { Server="pyls", Exec="pyls", Syntax="python", Options={"--check-parent-process"} },++ { Server="R", Exec="R", Syntax="r", Options={"--slave", "-e", "languageserver::run()"} },++ { Server="clangd-win", Exec="F:\\LLVM\\bin\\clangd.exe", Syntax="c", Options={"--log=error"} },++}
@@ -67,10 +67,6 @@ install: ${MKDIR} ${DESTDIR}${doc_dir} ${MKDIR} ${DESTDIR}${conf_dir} ${MKDIR} ${DESTDIR}${examples_dir} \- ${DESTDIR}${examples_dir}web_plugins \- ${DESTDIR}${examples_dir}web_plugins/dokuwiki \- ${DESTDIR}${examples_dir}web_plugins/movabletype \- ${DESTDIR}${examples_dir}web_plugins/wordpress \ ${DESTDIR}${examples_dir}swig \ ${DESTDIR}${examples_dir}tcl \ ${DESTDIR}${examples_dir}pandoc \@@ -105,9 +101,6 @@ install: ${INSTALL_DATA} ./ChangeLog.adoc ${DESTDIR}${doc_dir} ${INSTALL_DATA} ./COPYING ${DESTDIR}${doc_dir} ${INSTALL_DATA} ./INSTALL ${DESTDIR}${doc_dir}- ${INSTALL_DATA} ./extras/web_plugins/dokuwiki/* ${DESTDIR}${examples_dir}web_plugins/dokuwiki/- ${INSTALL_DATA} ./extras/web_plugins/movabletype/* ${DESTDIR}${examples_dir}web_plugins/movabletype/- ${INSTALL_DATA} ./extras/web_plugins/wordpress/* ${DESTDIR}${examples_dir}web_plugins/wordpress/ ${INSTALL_DATA} ./extras/swig/* ${DESTDIR}${examples_dir}swig ${INSTALL_DATA} ./extras/tcl/* ${DESTDIR}${examples_dir}tcl ${INSTALL_DATA} ./extras/pandoc/* ${DESTDIR}${examples_dir}pandoc@@ -123,7 +116,7 @@ install: @echo @echo "Done." @echo "Type highlight --help or man highlight for instructions."- @echo "Take a look at ${DESTDIR}${examples_dir} for web plugins, SWIG and TCL bindings."+ @echo "Take a look at ${DESTDIR}${examples_dir} for scripts, SWIG and TCL bindings." @echo "Execute 'make install-gui' to install the highlight GUI ('make gui')." @echo "Do not hesitate to report problems. Unknown bugs are hard to fix."
@@ -1,4 +1,4 @@-.TH highlight 1 "2021-01-09" "Andre Simon" "user documentation"+.TH highlight 1 "2021-03-15" "Andre Simon" "user documentation" .SH NAME Highlight - a universal sourcecode to formatted text converter@@ -43,7 +43,7 @@ specify type of source code by given name. Will not read a file of this name, u .IP "--syntax-supported" test if the given syntax can be loaded and print the result (assumes -S or --syntax-by-name) .IP "-v, --verbose"-print debug info to stderr+print debug info to stderr; repeat to show more information .IP "-q, --quiet" suppress progress info in batch mode .IP "--force[=syntax]"@@ -65,8 +65,6 @@ print path configuration print stylesheet only (see --style-outfile) .IP "--skip=<list>" ignore listed unknown file types (example: --skip='bak;c~;h~')-.IP "--start-nested=<lang>"-define nested language which starts input without opening delimiter .IP "--stdout" output to stdout (batch mode, --print-style) .IP "--validate-input"@@ -88,11 +86,7 @@ name of file to be included in style-outfile omit header and footer of the output document (see --keep-injections) .IP "-F, --reformat=<style>" reformat output in given style.-<style>=[allman, gnu, google, horstmann, java, kr, linux, lisp, mozilla, otbs, pico, vtk, ratliff, stroustrup, webkit, whitesmith, user]--The user style does not apply a predefined scheme. Use --reformat-option to define reformatting behaviour.-.IP "--reformat-option=<opt>"-apply an astyle cmd line option (assumes -F). Can be repeated to override settings of the chosen indentation scheme.+<style>=[allman, gnu, google, horstmann, java, kr, linux, lisp, mozilla, otbs, pico, vtk, ratliff, stroustrup, webkit, whitesmith] .IP "-I, --include-style" include style definition in output .IP "-J, --line-length=<num>"@@ -121,10 +115,6 @@ wrap lines after 80 (default) characters without indenting function parameters a wrap lines after 80 (default) characters (use with caution). .IP "-z, --zeroes" fill leading space of line numbers with zeroes-.IP "--base16[=theme]"-use a theme of the Base16 collection. Use a classic theme otherwise.-.IP "--delim-cr"-set CR as end-of-line delimiter (MacOS 9) .IP "--isolate" output each syntax token in separate tags (verbose output) .IP "--keep-injections"@@ -184,27 +174,25 @@ set image size (see --height) .IP "--canvas[=width]" set background colour padding (default: 80) -.SH "GNU SOURCE-HIGHLIGHT COMPATIBILITY OPTIONS"-.IP "--doc"-create stand alone document-.IP "--no-doc"-cancel the --doc option-.IP "--css=filename"-the external style sheet filename-.IP "--src-lang=STRING"-source language-.IP " -t, --tab=INT"-specify tab length-.IP " -n, --line-number[=0]"-number all output lines, optional padding-.IP "--line-number-ref[=p]"-number all output lines and generate an anchor, made of the specified prefix- p + the line number (default='line')-.IP "--output-dir=path"- output directory-.IP "--failsafe"-if no language definition is found for the-input, it is simply copied to the output+.SH "LANGUAGE SERVER OPTIONS"+.IP "--ls-profile=<server>"+load LSP configuration from lsp.conf+.IP "--ls-delay=<ms>"+set server initialization delay in milliseconds+.IP "--ls-exec=<bin>"+set server executable name+.IP "--ls-option=<option>"+set server CLI option (can be repeated)+.IP "--ls-hover"+execute hover requests (HTML output only)+.IP "--ls-semantic"+query server for semantic token types (requires LSP 3.16)+.IP "--ls-syntax=<lang>"+set syntax which is understood by the server+.IP "--ls-syntax-error"+retrieve syntax error information (assumes --ls-hover or --ls-semantic)+.IP "--ls-workspace=<dir>"+set workspace directory to initialize the server .SH ENV VARIABLES Highlight recognizes these variables:@@ -215,7 +203,7 @@ may contain command line options, but no input file paths. .SH HINTS If no in- or output files are specified, stdin and stdout will be used for in- or output.-Since version 3.44, reading from stdin can also be triggered by the '-' option.+Reading from stdin can also be triggered by the '-' option. Default output format: xterm256 or truecolor if appropriate, HTML otherwise. @@ -225,6 +213,8 @@ are stored in the output document header with -I, if -f is also given there will be no style definitions. Reformatting code (-F) will only work with C, C++, C# and Java input files.++LSP options require absolute input file paths. .SH BUGS Wrapping lines with -V or -W will cause faulty highlighting of long single line comments and directives. Using line-range might interfere with multi line syntax elements. Use with caution.
@@ -10,11 +10,8 @@ function syntaxUpdate(desc) return end - function Decorate(token) if token == "\27" then- -- return "<span class=\"hl esc\">ESC</span>"- -- return "�" return "鉃" end
plugins/outhtml_lsp_clangd.lua
@@ -1,205 +0,0 @@---[[--This is a rough test implementation of the Language Server Protocol to get-things started.--This only works with absolute input paths which are part of a workspace-configured properly for the clangd LSP server.--Temp files in /tmp/ are not deleted.--To synchronize I/O using stdin/stdout, the script sleeps after each call.--1. Copy this Lua JSON parser to your current directory:- https://github.com/rxi/json.lua-2. Setup your project for clangd (ie provide a compile_flags.txt file)-3. Call the plugin with the project direcory and the source file as- --plug-in-param parameter:- highlight --plug-in plugins/outhtml_lsp_clangd.lua -I keystore.cpp- --plug-in-param '/home/andre/Projekte/git/highlight/src/:/home/andre/Projekte/git/highlight/src/core/keystore.cpp'- > ~/Projekte/test_out/lsp.html-]]--Description="Add tooltips based on clangd LSP output (WIP - very slow - Linux only - see contained info)"--Categories = {"language-server-protocol", "html" }---- optional parameter: syntax description-function syntaxUpdate(desc)-- if (desc ~= "C and C++") then- return- end-- if (HL_OUTPUT ~= HL_FORMAT_HTML and HL_OUTPUT ~= HL_FORMAT_XHTML) then- return- end-- tmp_file = "/tmp/lsp_client_"..os.time()-- json = require "json" -- https://github.com/rxi/json.lua- --inotify = require 'inotify' -- https://github.com/hoelzro/linotify-- function html_escape(s)- return (string.gsub(s, "[}{\">/<'&]", {- ["&"] = "&",- ["<"] = "<",- [">"] = ">",- ['"'] = """,- ["'"] = "'",- ["/"] = "/"- }))- end-- function fibonacci(n)- local function inner(m)- if m < 2 then- return m- end- return inner(m-1) + inner(m-2)- end- return inner(n)- end-- function sleep(s)- local ntime = os.time() + s- repeat until os.time() > ntime- end-- function readResponse(fr)-- j = nil- x = fr:read("*line")- if string.find(x, 'Content-Length:', 1, true) then- numBytes = tonumber(x:sub(17))- fr:read("*line")- x = fr:read(numBytes)- j = json.decode(x)- end- return j- end-- function initServer(fw, root_uri)-- init_request = {}- params = {}- params.processId = 0- params.rootUri = root_uri- params.capabilities = {}-- init_request.jsonrpc = "2.0"- init_request.id = 1- init_request.method = "initialize"- init_request.params = params-- json_s = json.encode(init_request)- init_cmd = "Content-Length: ".. #json_s.."\n\n"..json_s- fw:write(init_cmd)- fw:flush()- sleep(1)- end-- function openDocument(fw, input_file)-- fs = io.open(input_file, "r")-- if fs==nil then return false end-- source_text = fs:read("*a")- fs:close()-- doc_request = {}- params = {}- params.textDocument = {}- params.textDocument.uri = "file://"..input_file- params.textDocument.languageId = "cpp"- params.textDocument.version = 1- params.textDocument.text = source_text-- doc_request.jsonrpc = "2.0"- doc_request.method = "textDocument/didOpen"- doc_request.params = params-- json_s = json.encode(doc_request)- init_cmd = "Content-Length: ".. #json_s.."\n\n"..json_s- fw:write(init_cmd)- fw:flush()- sleep(5) -- TODO maybe wait for textDocument/publishDiagnostics line in stdin- return true- end-- function hover(fw, line, col, input_file)-- hover_request = {}- params = {}- params.textDocument = {}- params.textDocument.uri = "file://"..input_file- params.position = {}- params.position.line = line- params.position.character = col-- hover_request.id = 1- hover_request.jsonrpc = "2.0"- hover_request.method = "textDocument/hover"- hover_request.params = params-- json_s = json.encode(hover_request)-- init_cmd = "Content-Length: ".. #json_s.."\n\n"..json_s- fw:write(init_cmd)- fw:flush()- fibonacci(32)- return true- end-- function string:split(sep)- local sep, fields = sep or ":", {}- local pattern = string.format("([^%s]+)", sep)- self:gsub(pattern, function(c) fields[#fields+1] = c end)- return fields- end-- args=string.split(HL_PLUGIN_PARAM, ':')-- if #args~=2 then return end-- clangd_cmd= "clangd >"..tmp_file-- fw = io.popen(clangd_cmd, "w")-- initServer(fw, "file://"..args[1])- fr = io.open(tmp_file, "r+")- init_res = readResponse(fr)-- --TODO set in Lua state- input_source = args[2]-- if init_res.result.serverInfo.name=='clangd' then-- if openDocument(fw, input_source) then- readResponse(fr)- end- end-- function Decorate(token, state, kwclass, lcs, line, col)-- if ( state ~= HL_STANDARD and state ~= HL_KEYWORD) then- return- end-- hover(fw, line-1, col+1, input_source)- hover_res = readResponse(fr)-- if hover_res.result then- tooltip = html_escape(hover_res.result.contents.value)- return '<span title="'..tooltip..'">'..token .. '</span>'- end-- end-end--Plugins={-- { Type="lang", Chunk=syntaxUpdate },--}
@@ -2,7 +2,7 @@ cmdlineoptions.cpp - description ------------------- begin : Sun Nov 25 2001- copyright : (C) 2001-2017 by Andre Simon+ copyright : (C) 2001-2021 by Andre Simon email : a.simon@mailbox.org ***************************************************************************/ @@ -49,7 +49,9 @@ enum Optcode { S_OPT_PLUGIN_READFILE, S_OPT_PLUGIN_PARAMETER, S_OPT_LIST_SCRIPTS, S_OPT_CANVAS, S_OPT_KEEP_INJECTIONS, S_OPT_FORCE_STDOUT, S_OPT_LATEX_BEAMER, S_OPT_NO_VERSION_INFO, S_OPT_REFORMAT_OPT, S_OPT_RANGE_OPT, S_OPT_BASE16, S_OPT_CATEGORIES, S_OPT_PIPED_FNAME,- S_OPT_ISOLATE, S_OPT_MAX_FILE_SIZE, S_OPT_SYNTAX_SUPPORTED+ S_OPT_ISOLATE, S_OPT_MAX_FILE_SIZE, S_OPT_SYNTAX_SUPPORTED,+ S_OPT_LS_PROFILE, S_OPT_LS_WORKSPACE, S_OPT_LS_EXEC, S_OPT_LS_OPTION, S_OPT_LS_HOVER,+ S_OPT_LS_SEMANTIC, S_OPT_LS_RAINBOW, S_OPT_LS_SYNTAX, S_OPT_LS_SYNTAX_ERROR, S_OPT_LS_DELAY }; const Arg_parser::Option options[] = {@@ -140,6 +142,18 @@ const Arg_parser::Option options[] = { { S_OPT_MAX_FILE_SIZE, OPT_MAX_FILE_SIZE, Arg_parser::yes }, { S_OPT_SYNTAX_SUPPORTED, OPT_SYNTAX_SUPPORTED, Arg_parser::no }, + { S_OPT_LS_PROFILE, OPT_LS_PROFILE, Arg_parser::yes },+ { S_OPT_LS_WORKSPACE, OPT_LS_WORKSPACE, Arg_parser::yes },+ { S_OPT_LS_EXEC, OPT_LS_EXEC, Arg_parser::yes },+ { S_OPT_LS_OPTION, OPT_LS_OPTION, Arg_parser::yes },+ { S_OPT_LS_HOVER, OPT_LS_HOVER, Arg_parser::no },+ { S_OPT_LS_SEMANTIC, OPT_LS_SEMANTIC, Arg_parser::no },+ { S_OPT_LS_RAINBOW, OPT_LS_RAINBOW, Arg_parser::no },+ { S_OPT_LS_SYNTAX_ERROR, OPT_LS_SYNTAX_ERROR, Arg_parser::no },++ { S_OPT_LS_SYNTAX, OPT_LS_SYNTAX, Arg_parser::yes },+ { S_OPT_LS_DELAY, OPT_LS_DELAY, Arg_parser::yes },+ { 0, 0, Arg_parser::no } }; @@ -153,6 +167,8 @@ CmdLineOptions::CmdLineOptions ( const int argc, const char *argv[] ) : lineRangeStart( 0 ), lineRangeEnd( 0 ), opt_no_trailing_nl(0),+ verbosity(0),+ lsDelay(0), canvasPaddingWidth(0), wrappingStyle ( highlight::WRAP_DISABLED ), outputType ( highlight::HTML ),@@ -163,7 +179,6 @@ CmdLineOptions::CmdLineOptions ( const int argc, const char *argv[] ) : opt_include_style ( false ), opt_help ( false ), opt_version ( false ),- opt_verbose ( false ), opt_print_config ( false ), opt_linenumbers ( false ), opt_batch_mode ( false ),@@ -197,6 +212,10 @@ CmdLineOptions::CmdLineOptions ( const int argc, const char *argv[] ) : opt_isolate(false), opt_encoding_explicit(false), opt_syntax_supported_check(false),+ opt_ls_hover(false),+ opt_ls_semantic(false),+ opt_ls_rainbow(false),+ opt_ls_syntax_error(false), maxFileSize(268435456), fallbackSyntax("txt"), anchorPrefix ( "l" ),@@ -312,8 +331,10 @@ void CmdLineOptions::parseRuntimeOptions( const int argc, const char *argv[], bo opt_batch_mode = true; readDirectory ( arg ); break;- case 'c':+ case S_OPT_COMPAT_CSS:+ showDeprecationHint(OPT_COMPAT_CSS, "style-outfile");+ case 'c': styleOutFilename = arg; opt_stylepath_explicit=true; break;@@ -329,8 +350,9 @@ void CmdLineOptions::parseRuntimeOptions( const int argc, const char *argv[], bo case 'e': styleInFilename = arg; break;- case 'f': case S_OPT_COMPAT_NODOC:+ showDeprecationHint(OPT_COMPAT_NODOC, "fragment");+ case 'f': opt_fragment = true; break; case 'F':@@ -364,6 +386,8 @@ void CmdLineOptions::parseRuntimeOptions( const int argc, const char *argv[], bo case S_OPT_COMPAT_LINENUM: if ( arg=="0" ) opt_fill_zeroes=true; /* Falls through */+ showDeprecationHint(OPT_COMPAT_LINENUM, "line-numbers, zeroes");+ case 'l': opt_linenumbers = true; break;@@ -384,8 +408,9 @@ void CmdLineOptions::parseRuntimeOptions( const int argc, const char *argv[], bo explicit_output_format=true; outFilename = arg; break;- case 'd': case S_OPT_COMPAT_OUTDIR:+ showDeprecationHint(OPT_COMPAT_OUTDIR, "outdir");+ case 'd': explicit_output_format=true; outDirectory = validateDirPath ( arg ); break;@@ -407,8 +432,10 @@ void CmdLineOptions::parseRuntimeOptions( const int argc, const char *argv[], bo absThemePath = styleName; } break;- case 'S': case S_OPT_COMPAT_SRCLANG:+ showDeprecationHint(OPT_COMPAT_SRCLANG, "syntax");++ case 'S': syntax = arg; opt_syntax = true; @@ -417,8 +444,10 @@ void CmdLineOptions::parseRuntimeOptions( const int argc, const char *argv[], bo syntax = arg.substr(0, arg.find_last_of('.')); } break;- case 't': case S_OPT_COMPAT_TAB:+ showDeprecationHint(OPT_COMPAT_TAB, "replace-tabs");++ case 't': StringTools::str2num<int> ( numberSpaces, arg, std::dec ); break; case 'u':@@ -426,7 +455,7 @@ void CmdLineOptions::parseRuntimeOptions( const int argc, const char *argv[], bo opt_encoding_explicit=true; break; case 'v':- opt_verbose = true;+ ++verbosity; break; case 'V': wrappingStyle = highlight::WRAP_SIMPLE;@@ -452,8 +481,10 @@ void CmdLineOptions::parseRuntimeOptions( const int argc, const char *argv[], bo case S_OPT_ENCLOSE_PRE: opt_enclose_pre=true; break;- case S_OPT_FORCE_OUTPUT: case S_OPT_COMPAT_FAILSAFE:+ showDeprecationHint(OPT_COMPAT_FAILSAFE, OPT_FORCE_OUTPUT);++ case S_OPT_FORCE_OUTPUT: opt_force_output = true; if ( !arg.empty() ) { fallbackSyntax=arg;@@ -498,8 +529,13 @@ void CmdLineOptions::parseRuntimeOptions( const int argc, const char *argv[], bo case S_OPT_REFORMAT_OPT: astyleOptions.push_back(arg); break;- case S_OPT_PLUGIN_PARAMETER:+ case S_OPT_LS_OPTION:+ lsOptions.push_back(arg);+ break; case S_OPT_PLUGIN_READFILE:+ showDeprecationHint(OPT_PLUGIN_READFILE, OPT_PLUGIN_PARAMETER);++ case S_OPT_PLUGIN_PARAMETER: pluginParameter=arg; break; @@ -513,23 +549,33 @@ void CmdLineOptions::parseRuntimeOptions( const int argc, const char *argv[], bo opt_no_version_info = true; break; case S_OPT_COMPAT_DOC:+ showDeprecationHint(OPT_COMPAT_DOC, "NONE");+ opt_fragment = false; break; case S_OPT_COMPAT_LINEREF:+ showDeprecationHint(OPT_COMPAT_LINEREF, "line-numbers, anchors, anchor-prefix");+ opt_linenumbers = true; opt_attach_line_anchors = true; anchorPrefix = ( arg.empty() ) ? "line" : arg; break; case S_OPT_EOL_DELIM_CR:+ showDeprecationHint(OPT_EOL_DELIM_CR, "NONE");+ opt_delim_CR = true; break; case S_OPT_START_NESTED:+ showDeprecationHint(OPT_START_NESTED, "NONE");+ startNestedLang=arg; break; case S_OPT_PRINT_STYLE: opt_print_style = true; break; case S_OPT_BASE16:+ showDeprecationHint(OPT_BASE16, "theme with base16/ prefix");+ opt_base16_theme = true; if (!arg.empty()) styleName = arg;@@ -605,6 +651,33 @@ void CmdLineOptions::parseRuntimeOptions( const int argc, const char *argv[], bo opt_syntax_supported_check = true; break; + case S_OPT_LS_PROFILE:+ lsProfile = arg;+ break;+ case S_OPT_LS_WORKSPACE:+ lsWorkspace = arg;+ break;+ case S_OPT_LS_EXEC:+ lsExecutable = arg;+ break;+ case S_OPT_LS_HOVER:+ opt_ls_hover = true;+ break;+ case S_OPT_LS_SEMANTIC:+ opt_ls_semantic = true;+ break;+ case S_OPT_LS_RAINBOW:+ opt_ls_rainbow = true;+ break;+ case S_OPT_LS_SYNTAX:+ lsSyntax = arg;+ break;+ case S_OPT_LS_SYNTAX_ERROR:+ opt_ls_syntax_error = true;+ break;+ case S_OPT_LS_DELAY:+ StringTools::str2num<int> ( lsDelay, arg, std::dec );+ break; default: cerr << "highlight: option parsing failed" << endl; }@@ -686,9 +759,9 @@ bool CmdLineOptions::printHelp() const { return opt_help; }-bool CmdLineOptions::printDebugInfo() const+int CmdLineOptions::verbosityLevel() const {- return opt_verbose;+ return verbosity; } bool CmdLineOptions::printConfigInfo() const {@@ -826,6 +899,23 @@ bool CmdLineOptions::useCRDelimiter() const { return opt_delim_CR; }++bool CmdLineOptions::isLsRainbow () const+{+ return opt_ls_rainbow;+}+bool CmdLineOptions::isLsHover () const+{+ return opt_ls_hover;+}+bool CmdLineOptions::isLsSemantic() const+{+ return opt_ls_semantic;+}+bool CmdLineOptions::isLsSyntaxError() const+{+ return opt_ls_syntax_error;+} const string &CmdLineOptions::getDataDir() const { return dataDir;@@ -838,6 +928,10 @@ const vector<string> &CmdLineOptions::getAStyleOptions() const { return astyleOptions; }+const vector<string> &CmdLineOptions::getLSOptions() const+{+ return lsOptions;+} bool CmdLineOptions::printOnlyStyle() const { return opt_print_style;@@ -875,6 +969,29 @@ const string &CmdLineOptions::getPageSize() const return pageSize; } +const std::string& CmdLineOptions::getLsExecutable() const+{+ return lsExecutable;+}++const std::string& CmdLineOptions::getLsWorkspace() const+{+ return lsWorkspace;+}++const std::string& CmdLineOptions::getLsProfile() const+{+ return lsProfile;+}+const std::string& CmdLineOptions::getLsSyntax() const+{+ return lsSyntax;+}+const int CmdLineOptions::getLsDelay() const+{+ return lsDelay;+}+ bool CmdLineOptions::printIndexFile() const { return opt_printindex && ( outputType==highlight::HTML ||@@ -1062,3 +1179,8 @@ const string& CmdLineOptions::getFallbackSyntax() const { return fallbackSyntax; } +void CmdLineOptions::showDeprecationHint ( const std::string & option, const std::string & alt ) const {+ cerr << "highlight: deprecated option '"<<option<<"' will be removed in v4.0 stable; valid alternatives: '"<<alt<<"'\n";+}++
@@ -2,7 +2,7 @@ cmdlineoptions.h - description ------------------- begin : Sun Nov 25 2001- copyright : (C) 2001-2017 by Andre Simon+ copyright : (C) 2001-2021 by Andre Simon email : a.simon@mailbox.org ***************************************************************************/ @@ -118,7 +118,6 @@ along with Highlight. If not, see <http://www.gnu.org/licenses/>. #define OPT_MAX_FILE_SIZE "max-size" #define OPT_SYNTAX_SUPPORTED "syntax-supported" - // Improve CLI option compatibility with GNU source-highlight #define OPT_COMPAT_DOC "doc" #define OPT_COMPAT_NODOC "no-doc"@@ -130,6 +129,16 @@ along with Highlight. If not, see <http://www.gnu.org/licenses/>. #define OPT_COMPAT_LINENUM "line-number" #define OPT_COMPAT_LINEREF "line-number-ref" +#define OPT_LS_PROFILE "ls-profile"+#define OPT_LS_WORKSPACE "ls-workspace"+#define OPT_LS_EXEC "ls-exec"+#define OPT_LS_OPTION "ls-option"+#define OPT_LS_HOVER "ls-hover"+#define OPT_LS_SEMANTIC "ls-semantic"+#define OPT_LS_RAINBOW "ls-rainbow"+#define OPT_LS_SYNTAX "ls-syntax"+#define OPT_LS_DELAY "ls-delay"+#define OPT_LS_SYNTAX_ERROR "ls-syntax-error" /// handle command line options @@ -177,8 +186,8 @@ public: /** \return True if help information should be printed*/ bool printHelp() const; - /** \return True if debug information should be printed*/- bool printDebugInfo() const;+ /** \return verbosity level */+ int verbosityLevel() const; /** \return True if configuration information should be printed*/ bool printConfigInfo() const;@@ -342,6 +351,18 @@ public: /** \return true if syntax load result should be reported */ bool checkSyntaxSupport () const; + /** \return false */+ bool isLsRainbow () const;++ /** \return false */+ bool isLsSemantic () const;++ /** \return false */+ bool isLsHover () const;++ /** \return false */+ bool isLsSyntaxError () const;+ /** \return max. input file size (default 256 MB) */ off_t getMaxFileSize() const; @@ -363,6 +384,9 @@ public: /** \return list of astyle options */ const std::vector <std::string> &getAStyleOptions() const; + /** \return list of langiage server options */+ const std::vector <std::string> &getLSOptions() const;+ /** \return 1 if trailing nl should be omitted, * 2 if it should only be omitted for empty input */ int disableTrailingNL() const ;@@ -397,6 +421,21 @@ public: /** \return fallback syntax if not defined or found by filename or shebang */ const std::string& getFallbackSyntax() const; + /** \return language server executable */+ const std::string& getLsExecutable() const;++ /** \return language server workspace directory */+ const std::string& getLsWorkspace() const;++ /** \return language server profile name */+ const std::string& getLsProfile() const;++ /** \return syntax which triggers language server requests */+ const std::string& getLsSyntax() const;++ /** \return server delay time in ms */+ const int getLsDelay() const;+ /** \return line number width */ int getNumberWidth(); @@ -427,6 +466,8 @@ private: int lineRangeStart; // line range start int lineRangeEnd; // line range end int opt_no_trailing_nl;+ int verbosity;+ int lsDelay; unsigned int canvasPaddingWidth; // line number start count @@ -464,7 +505,6 @@ private: bool opt_include_style; bool opt_help; bool opt_version ;- bool opt_verbose; bool opt_print_config; bool opt_linenumbers; bool opt_batch_mode;@@ -499,6 +539,11 @@ private: bool opt_encoding_explicit; bool opt_syntax_supported_check; + bool opt_ls_hover;+ bool opt_ls_semantic;+ bool opt_ls_rainbow;+ bool opt_ls_syntax_error;+ off_t maxFileSize; std::string fallbackSyntax, anchorPrefix;@@ -507,6 +552,8 @@ private: std::string pluginPath, pluginParameter, listScriptCategory, helpTopic, redirectedFilename, listScriptType; + std::string lsProfile, lsExecutable, lsWorkspace, lsSyntax;+ /** list of all input file names */ std::vector <std::string> inputFileNames; @@ -516,6 +563,9 @@ private: /** list of additional Artistic Style options */ std::vector <std::string> astyleOptions; + /** list of Language Server options */+ std::vector <std::string> lsOptions;+ /** list of file types which should be ignored */ set <std::string> ignoredFileTypes; @@ -532,6 +582,8 @@ private: std::string validateDirPath ( const std::string & path ); void parseRuntimeOptions( const int argc, const char *argv[], bool readInputFilenames=true);++ void showDeprecationHint ( const std::string & option, const std::string & alt ) const; }; #endif
@@ -67,7 +67,7 @@ void printHelp(const std::string &topic) cout <<"\n"; cout <<"Print all installed themes with --list-scripts=themes.\n"; cout <<"\n";- cout <<"Use --base16 to read a theme of the Base16 set or add 'base16/' as prefix.\n";+ cout <<"Add 'base16/' as prefix to read a theme of the Base16 set.\n"; cout <<"\n"; cout <<"Exemplary config files:\n"; cout <<"darkspectrum.theme: dark canvas (vim) \n";@@ -115,7 +115,13 @@ void printHelp(const std::string &topic) cout <<"This indicator points at the tested syntax element of the previous line.\n"; cout <<"The state identifiers match the corresponding HTML output CSS class names.\n\n"; cout <<"See README_TESTCASES.adoc for a detailed description and examples.\n";- }else {+ } else if (topic=="lsp") {+ cout <<"LANGUAGE SERVER PROTOCOL HELP:\n\n";+ cout <<"Highlight can invoke LSP servers to enhance its output. Warning: These features are WIP.\n";+ cout <<"Language servers are be configured in the lsp.conf file. Each parameter of this file\n";+ cout <<"can also be set using --ls-exec, --ls-option, --ls-delay and --ls-syntax.\n";+ cout <<"Important: LSP requires absolute input file paths.\n";+ } else { cout<<"USAGE: highlight [OPTIONS]... [FILES]...\n"; cout<<"\n"; cout<<"General options:\n";@@ -126,7 +132,7 @@ void printHelp(const std::string &topic) cout<<" --config-file=<file> set path to a lang or theme file\n"; cout<<" -d, --outdir=<directory> name of output directory\n"; cout<<" -h, --help[=topic] print this help or a topic description\n";- cout<<" <topic> = [syntax, theme, plugin, config, test]\n";+ cout<<" <topic> = [syntax, theme, plugin, config, test, lsp]\n"; cout<<" -i, --input=<file> name of single input file\n"; cout<<" -o, --output=<file> name of single output file\n"; cout<<" -P, --progress print progress bar in batch mode\n";@@ -135,7 +141,7 @@ void printHelp(const std::string &topic) cout<<" --syntax-by-name=<name> specify type of source code by given name\n"; cout<<" will not read a file of this name, useful for stdin\n"; cout<<" --syntax-supported test if the given syntax can be loaded\n";- cout<<" -v, --verbose print debug info\n";+ cout<<" -v, --verbose print debug info; repeat to show more information\n"; cout<<" --force[=syntax] generate output if input syntax is unknown\n"; cout<<" --list-scripts=<type> list installed scripts\n"; cout<<" <type> = [langs, themes, plugins]\n";@@ -150,13 +156,11 @@ void printHelp(const std::string &topic) cout<<" --print-style print stylesheet only (see --style-outfile)\n"; cout<<" --skip=<list> ignore listed unknown file types\n"; cout<<" (Example: --skip='bak;c~;h~')\n";- cout<<" --start-nested=<lang> define nested language which starts input\n";- cout<<" without opening delimiter\n";+ cout<<" --stdout output to stdout (batch mode, --print-style)\n"; cout<<" --validate-input test if input is text, remove Unicode BOM\n"; cout<<" --version print version and copyright information\n";- cout<<"\n";- cout<<"\n";+ cout<<"\n\n"; cout<<"Output formatting options:\n"; cout<<"\n"; cout<<" -O, --out-format=<format> output file in given format\n";@@ -172,10 +176,8 @@ void printHelp(const std::string &topic) cout<<" -F, --reformat=<style> reformats and indents output in given style\n"; cout<<" <style> = [allman, gnu, google, horstmann,\n"; cout<<" java, kr, linux, lisp, mozilla, otbs, pico,\n";- cout<<" vtk, ratliff, stroustrup, webkit, whitesmith, user]\n";- cout<<" The user style does not apply a predefined scheme.\n";- cout<<" Use --reformat-option to define the reformatting.\n";- cout<<" --reformat-option=<opt> apply an astyle cmd line option (assumes -F)\n";+ cout<<" vtk, ratliff, stroustrup, webkit, whitesmith]\n";+ cout<<" -I, --include-style include style definition in output file\n"; cout<<" -J, --line-length=<num> line length before wrapping (see -V, -W)\n"; cout<<" -j, --line-number-length=<num> line number width incl. left padding (default: 5)\n";@@ -196,8 +198,6 @@ void printHelp(const std::string &topic) cout<<" --wrap-no-numbers omit line numbers of wrapped lines\n"; cout<<" (assumes -l)\n"; cout<<" -z, --zeroes pad line numbers with 0's\n";- cout<<" --base16[=theme] use a theme of the Base16 collection\n";- cout<<" --delim-cr set CR as end-of-line delimiter (MacOS 9)\n"; cout<<" --isolate output each syntax token separately (verbose output)\n"; cout<<" --keep-injections output plug-in injections in spite of -f\n"; cout<<" --kw-case=<case> change case of case insensitive keywords\n";@@ -205,8 +205,6 @@ void printHelp(const std::string &topic) cout<<" --no-trailing-nl[=mode] omit trailing newline. If mode is empty-file, omit\n"; cout<<" only for empty input\n"; cout<<" --no-version-info omit version info comment\n";- // cout<<" --two-pass=<file> write plug-in with persistent state information\n";- // cout<<" (beta; requires syntax with store instructions)\n"; cout<<"\n\n"; cout<<"(X)HTML output options:\n";@@ -228,45 +226,39 @@ void printHelp(const std::string &topic) cout<<" -r, --replace-quotes replace double quotes by \\dq{}\n"; cout<<" --beamer adapt output for the Beamer package\n"; cout<<" --pretty-symbols improve appearance of brackets and other symbols\n";- cout<<"\n";- cout<<"\n";+ cout<<"\n\n"; cout<<"RTF output options:\n"; cout<<"\n"; cout<<" --page-color include page color attributes\n"; cout<<" -x, --page-size=<ps> set page size \n"; cout<<" <ps> = [a3, a4, a5, b4, b5, b6, letter]\n"; cout<<" --char-styles include character stylesheets\n";- cout<<"\n";- cout<<"\n";+ cout<<"\n\n"; cout<<"SVG output options:\n"; cout<<"\n"; cout<<" --height set image height (units allowed)\n"; cout<<" --width set image width (see --height)\n";- cout<<"\n";- cout<<"\n";+ cout<<"\n\n"; cout<<"Terminal escape output options (xterm256 or truecolor):\n"; cout<<"\n"; cout<<" --canvas[=width] set background colour padding (default: 80)\n";- cout<<"\n";- cout<<"\n";- cout<<"GNU source-highlight compatibility options:\n";- cout<<"\n";- cout<<" --doc create stand alone document\n";- cout<<" --no-doc cancel the --doc option\n";- cout<<" --css=filename the external style sheet filename\n";- cout<<" --src-lang=STRING source language\n";- cout<<" -t, --tab=INT specify tab length\n";- cout<<" -n, --line-number[=0] number all output lines, optional padding\n";- cout<<" --line-number-ref[=p] number all output lines and generate an anchor,\n";- cout<<" made of the specified prefix p + the line\n";- cout<<" number (default='line')\n";- cout<<" --output-dir=path output directory\n";- cout<<" --failsafe if no language definition is found for the\n";- cout<<" input, it is simply copied to the output\n";- cout<<"\n";- cout<<"\n";+ cout<<"\n\n";++ cout<<"Language Server options:\n\n";+ cout<<" --ls-profile=<server> read LSP configuration from lsp.conf\n";+ cout<<" --ls-delay=<ms> set server initialization delay\n";+ cout<<" --ls-exec=<bin> set server executable name\n";+ cout<<" --ls-option=<option> set server CLI option (can be repeated)\n";+ cout<<" --ls-hover execute hover requests (HTML output only)\n";+ cout<<" --ls-semantic retrieve semantic token types (requires LSP 3.16)\n";+ cout<<" --ls-syntax=<lang> set syntax which is understood by the server\n";+ cout<<" --ls-syntax-error retrieve syntax error information\n";+ cout<<" (assumes --ls-hover or --ls-semantic)\n";+ cout<<" --ls-workspace=<dir> set workspace directory to init. the server\n";+ cout<<"\n\n";+ cout<<"If no in- or output files are specified, stdin and stdout will be used.\n";- cout<<"Since version 3.44, reading from stdin can also be triggered by the '-' option.\n";+ cout<<"Reading from stdin can also be triggered using the '-' option.\n"; cout<<"Default output format: xterm256 or truecolor if appropriate, HTML otherwise.\n"; cout<<"Style definitions are stored in highlight.css (HTML, XHTML, SVG) or\n"; cout<<"highlight.sty (LaTeX, TeX) if neither -c nor -I is given.\n";
@@ -2,7 +2,7 @@ help.h - description ------------------- begin : Die Apr 23 2002- copyright : (C) 2002-2007 by Andre Simon+ copyright : (C) 2002-2021 by Andre Simon email : a.simon@mailbox.org ***************************************************************************/
@@ -5,9 +5,9 @@ copyright : (C) 2002-2021 by Andre Simon email : a.simon@mailbox.org - Highlight is a universal source code to HTML converter. Syntax highlighting- is formatted by Cascading Style Sheets. It's possible to easily enhance- highlight's parsing database.+ Highlight is a universal source code to formatted text converter.+ Syntax highlighting is formatted by Cascading Style Sheets.+ It's possible to easily enhance highlight's parsing database. ***************************************************************************/ @@ -34,8 +34,9 @@ along with Highlight. If not, see <http://www.gnu.org/licenses/>. #include <Diluculum/LuaState.hpp> #include "main.h"-#include "../include/datadir.h"+#include "datadir.h" #include "syntaxreader.h"+#include "lspprofile.h" #define MAX_LINE__WIDTH 80 @@ -58,7 +59,9 @@ void HLCmdLineApp::printVersionInfo(bool quietMode) << "\n Copyright (C) 2005-2013 by Leandro Motta Barros" << "\n\n xterm 256 color matching functions" << "\n Copyright (C) 2006 Wolfgang Frisch <wf at frexx.de>"-+ << "\n\n PicoJSON library"+ << "\n Copyright (C) 2009-2010 Cybozu Labs, Inc."+ << "\n Copyright (C) 2011-2014 Kazuho Oku" << "\n\n This software is released under the terms of the GNU General " << "Public License." << "\n For more information about these matters, see the file named "@@ -108,15 +111,15 @@ int HLCmdLineApp::printInstalledFiles(const string& where, const string& wildcar categoryFilters.insert ( catFilter ); } - for ( unsigned int i=0; i< filePaths.size(); i++ ) {+ for (const auto &path : filePaths ) { try { Diluculum::LuaState ls;- highlight::SyntaxReader::initLuaState(ls, filePaths[i],"");- ls.doFile(filePaths[i]);+ highlight::SyntaxReader::initLuaState(ls, path,"");+ ls.doFile(path); desc = ls["Description"].value().asString(); - suffix = ( filePaths[i] ).substr ( where.length() ) ;- suffix = suffix.substr ( 1, suffix.length()- wildcard.length() );+ suffix = ( path ).substr ( where.length() ) ;+ suffix = suffix.substr ( 0, suffix.length()- wildcard.length()+1 ); unsigned int filterOKCnt=categoryFilters.size(); if (ls["Categories"].value() !=Diluculum::Nil){@@ -124,7 +127,7 @@ int HLCmdLineApp::printInstalledFiles(const string& where, const string& wildcar categoryMap = ls["Categories"].value().asTable(); - for(Diluculum::LuaValueMap::const_iterator it = categoryMap.begin(); it != categoryMap.end(); ++it)+ for (Diluculum::LuaValueMap::const_iterator it = categoryMap.begin(); it != categoryMap.end(); ++it) { categoryNames.insert(it->second.asString()); if (categoryFilters.size() && categoryFilters.count(it->second.asString())) {@@ -152,7 +155,7 @@ int HLCmdLineApp::printInstalledFiles(const string& where, const string& wildcar } cout << endl; } catch (std::runtime_error &error) {- cout << "Failed to read '" << filePaths[i] << "': " << error.what() << endl;+ cout << "Failed to read '" << path<< "': " << error.what() << endl; } } @@ -181,7 +184,7 @@ int HLCmdLineApp::printInstalledFiles(const string& where, const string& wildcar } void HLCmdLineApp::printDebugInfo ( const highlight::SyntaxReader *lang,- const string & langDefPath )+ const string & langDefPath, int level ) { if (!lang) return; @@ -189,54 +192,56 @@ void HLCmdLineApp::printDebugInfo ( const highlight::SyntaxReader *lang, cerr << "\nLoading language definition:\n" << langDefPath; cerr << "\n\nDescription: " << lang->getDescription();- Diluculum::LuaState* luaState=lang->getLuaState();- if (luaState) {- cerr << "\n\nLUA GLOBALS:\n" ;- Diluculum::LuaValueMap::iterator it;- Diluculum::LuaValueMap glob =luaState->globals();- string elemName;- for(it = glob.begin(); it != glob.end(); it++) {- Diluculum::LuaValue first = it->first;- Diluculum::LuaValue second = it->second;- elemName = first.asString();- std::cerr << elemName<<": ";- switch (second.type()) {- case LUA_TSTRING:- cerr << "string [ "<<second.asString()<<" ]";- break;- case LUA_TNUMBER:- cerr << "number [ "<<second.asNumber()<<" ]";- if (elemName.find("HL_")==0 && elemName.find("HL_FORMAT")==string::npos)- HLStateMap[second.asNumber()] = elemName;- break;- case LUA_TBOOLEAN:- cerr << "boolean [ "<<second.asBoolean()<<" ]";- break;- default:- cerr << second.typeName();+ if (level>1) {+ Diluculum::LuaState* luaState=lang->getLuaState();+ if (luaState) {+ cerr << "\n\nLUA GLOBALS:\n" ;+ Diluculum::LuaValueMap::iterator it;+ Diluculum::LuaValueMap glob =luaState->globals();+ string elemName;+ for(it = glob.begin(); it != glob.end(); it++) {+ Diluculum::LuaValue first = it->first;+ Diluculum::LuaValue second = it->second;+ elemName = first.asString();+ std::cerr << elemName<<": ";+ switch (second.type()) {+ case LUA_TSTRING:+ cerr << "string [ "<<second.asString()<<" ]";+ break;+ case LUA_TNUMBER:+ cerr << "number [ "<<second.asNumber()<<" ]";+ if (elemName.find("HL_")==0 && elemName.find("HL_FORMAT")==string::npos)+ HLStateMap[second.asNumber()] = elemName;+ break;+ case LUA_TBOOLEAN:+ cerr << "boolean [ "<<second.asBoolean()<<" ]";+ break;+ default:+ cerr << second.typeName();+ }+ cerr << endl; }- cerr << endl;- } - }+ } - highlight::RegexElement *re=NULL;- for ( unsigned int i=0; i<lang->getRegexElements().size(); i++ )- {- if (i==0)- cerr << "\nREGEX:\n";+ highlight::RegexElement *re=NULL;+ for ( unsigned int i=0; i<lang->getRegexElements().size(); i++ )+ {+ if (i==0)+ cerr << "\nREGEX:\n"; - re = lang->getRegexElements() [i];- cerr << "State "<<re->open<< " ("<< HLStateMap[re->open]<< "):\t"<<re->pattern <<"\n";- }+ re = lang->getRegexElements() [i];+ cerr << "State "<<re->open<< " ("<< HLStateMap[re->open]<< "):\t"<<re->pattern <<"\n";+ } - highlight::KeywordMap::iterator it;- highlight::KeywordMap keys=lang->getKeywords();- for ( it=keys.begin(); it!=keys.end(); it++ ) {- if (it==keys.begin())- cerr << "\nKEYWORDS:\n";+ highlight::KeywordMap::iterator it;+ highlight::KeywordMap keys=lang->getKeywords();+ for ( it=keys.begin(); it!=keys.end(); it++ ) {+ if (it==keys.begin())+ cerr << "\nKEYWORDS:\n"; - cerr << " "<< it->first << "("<< it->second << ")";+ cerr << " "<< it->first << "("<< it->second << ")";+ } } cerr <<"\n\n"; }@@ -297,8 +302,6 @@ void HLCmdLineApp::printIOErrorReport ( unsigned int numberErrorFiles, vector<string> & fileList, const string &action, const string &streamName ) {-- cerr << "highlight: Could not " << action << " file"@@ -362,6 +365,31 @@ int HLCmdLineApp::run ( const int argc, const char*argv[] ) //call before printInstalledLanguages! dataDir.loadFileTypeConfig ( "filetypes" ); + // set CLI options; if profle is defined read from lsp.conf+ std::string lsProfile(options.getLsProfile());+ std::string lsExecutable(options.getLsExecutable()); ///< server executable path+ std::string lsSyntax(options.getLsSyntax()); ///< language definition which can be enhanced using the LS+ int lsDelay=options.getLsDelay();+ std::vector<std::string> lsOptions = options.getLSOptions(); ///< server executable start options++ if (lsProfile.size()) {+ dataDir.loadLSPConfig("lsp");+ if (dataDir.profileExists(lsProfile)) {+ highlight::LSPProfile profile = dataDir.getProfile(lsProfile);+ if (lsExecutable.empty())+ lsExecutable = profile.executable;+ if (lsSyntax.empty())+ lsSyntax = profile.syntax;+ if (lsOptions.empty())+ lsOptions = profile.options;+ if (lsDelay==0)+ lsDelay = profile.delay;+ } else {+ cerr << "highlight: Unknown LSP profile '"<< lsProfile << "'.\n";+ return EXIT_FAILURE;+ }+ }+ string scriptKind=options.getListScriptKind(); if (scriptKind.length()) { if ( scriptKind.find("theme")==0 ) {@@ -453,7 +481,6 @@ int HLCmdLineApp::run ( const int argc, const char*argv[] ) generator->setBaseFont ( options.getBaseFont() ) ; generator->setBaseFontSize ( options.getBaseFontSize() ) ; generator->setLineNumberWidth ( options.getNumberWidth() );- generator->setStartingNestedLang( options.getStartNestedLang()); generator->disableTrailingNL(options.disableTrailingNL()); generator->setPluginParameter(options.getPluginParameter()); @@ -476,7 +503,7 @@ int HLCmdLineApp::run ( const int argc, const char*argv[] ) } } - if ( !generator->initTheme ( themePath ) ) {+ if ( !generator->initTheme ( themePath, options.isLsSemantic() ) ) { cerr << "highlight: " << generator->getThemeInitError() << "\n";@@ -507,7 +534,7 @@ int HLCmdLineApp::run ( const int argc, const char*argv[] ) return EXIT_FAILURE; } - generator->setIndentationOptions(options.getAStyleOptions());+ //generator->setIndentationOptions(options.getAStyleOptions()); string outDirectory = options.getOutDirectory(); #ifndef WIN32@@ -534,10 +561,11 @@ int HLCmdLineApp::run ( const int argc, const char*argv[] ) string inFileName, outFilePath; string suffix, lastSuffix; string twoPassOutFile=Platform::getTempFilePath();+ bool usesLSClient=false;+ if ( options.syntaxGiven() ) { // user defined language definition, valid for all files string syntaxByFile=options.getSyntaxByFilename(); string testSuffix = syntaxByFile.empty() ? options.getSyntax() : dataDir.getFileSuffix(syntaxByFile);- //FIXME suffix = dataDir.guessFileType (testSuffix, syntaxByFile, syntaxByFile.empty(), options.getSingleOutFilename().length()==0 ); } @@ -547,7 +575,7 @@ int HLCmdLineApp::run ( const int argc, const char*argv[] ) if ( Platform::fileSize(inFileList[i]) > options.getMaxFileSize() ) { - if ( numBadInput++ < IO_ERROR_REPORT_LENGTH || options.printDebugInfo() ) {+ if ( numBadInput++ < IO_ERROR_REPORT_LENGTH || options.verbosityLevel() ) { badInputFiles.push_back ( inFileList[i] + " (size)" ); } ++i;@@ -618,8 +646,8 @@ int HLCmdLineApp::run ( const int argc, const char*argv[] ) break; } }- if ( options.printDebugInfo() && loadRes==highlight::LOAD_OK ) {- printDebugInfo ( generator->getSyntaxReader(), langDefPath );+ if ( options.verbosityLevel() && loadRes==highlight::LOAD_OK ) {+ printDebugInfo ( generator->getSyntaxReader(), langDefPath, options.verbosityLevel() ); } lastSuffix = suffix; @@ -638,6 +666,67 @@ int HLCmdLineApp::run ( const int argc, const char*argv[] ) encoding=encodingHint; } generator->setEncoding (encoding);++ if (lsSyntax==suffix) {++ if (options.getWrappingStyle()!=highlight::WRAP_DISABLED || options.getIndentScheme().size()) {+ cerr << "highlight: no reformatting allowed with LSP options.\n";+ initError = true;+ break;+ }++ //LSP requires absolute paths+ if (inFileList[i].empty()) {+ cerr << "highlight: no input file path defined.\n";+ initError = true;+ break;+ }++ if ( lsExecutable.empty() ) {+ cerr << "highlight: no LS executable defined. Consider the --ls-exec or --ls-profile options.\n";+ initError = true;+ break;+ }++ highlight::LSResult lsInitRes=generator->initLanguageServer ( lsExecutable, lsOptions,+ options.getLsWorkspace(), lsSyntax,+ lsDelay,+ options.verbosityLevel() );+ if ( lsInitRes==highlight::INIT_BAD_PIPE ) {+ cerr << "highlight: language server connection failed\n";+ initError = true;+ break;+ } else if ( lsInitRes==highlight::INIT_BAD_REQUEST ) {+ cerr << "highlight: language server initialization failed\n";+ initError = true;+ break;+ }+ usesLSClient=true;++ generator->lsAddSyntaxErrorInfo( (options.isLsHover() || options.isLsSemantic()) && options.isLsSyntaxError() );++ if (options.isLsHover()) {+ if (!generator->isHoverProvider()) {+ cerr << "highlight: language server is no hover provider\n";+ initError = true;+ break;+ }+ generator->lsAddHoverInfo( true );+ }+ }+ }++ if (usesLSClient && lsSyntax==suffix) {+ generator->lsOpenDocument(inFileList[i], suffix);++ if (options.isLsSemantic()) {+ if (!generator->isSemanticTokensProvider()) {+ cerr << "highlight: language server is no semantic token provider\n";+ initError = true;+ break;+ }+ generator->lsAddSemanticInfo(inFileList[i], suffix);+ } } if (twoPassMode && !generator->syntaxRequiresTwoPassRun()) {@@ -689,20 +778,25 @@ int HLCmdLineApp::run ( const int argc, const char*argv[] ) highlight::ParseError error = generator->generateFile ( inFileList[i], outFilePath ); if ( error==highlight::BAD_INPUT ) {- if ( numBadInput++ < IO_ERROR_REPORT_LENGTH || options.printDebugInfo() ) {+ if ( numBadInput++ < IO_ERROR_REPORT_LENGTH || options.verbosityLevel() ) { badInputFiles.push_back ( inFileList[i] ); } } else if ( error==highlight::BAD_OUTPUT ) {- if ( numBadOutput++ < IO_ERROR_REPORT_LENGTH || options.printDebugInfo() ) {+ if ( numBadOutput++ < IO_ERROR_REPORT_LENGTH || options.verbosityLevel() ) { badOutputFiles.push_back ( outFilePath ); } } if ( formattingEnabled && !generator->formattingIsPossible() ) {- if ( numBadFormatting++ < IO_ERROR_REPORT_LENGTH || options.printDebugInfo() ) {+ if ( numBadFormatting++ < IO_ERROR_REPORT_LENGTH || options.verbosityLevel() ) { badFormattedFiles.push_back ( outFilePath ); } } + if (usesLSClient && lsSyntax==suffix) {+ //pyls hangs+ generator->lsCloseDocument(inFileList[i], suffix);+ }+ ++i; if (i==fileCount && outFilePath.size() && generator->requiresTwoPassParsing() && twoPassOutFile.size()@@ -770,6 +864,10 @@ int HLCmdLineApp::run ( const int argc, const char*argv[] ) unlink(twoPassOutFile.c_str()); } + if (usesLSClient) {+ generator->exitLanguageServer();+ }+ return ( initError || IOError ) ? EXIT_FAILURE : EXIT_SUCCESS; }
@@ -2,7 +2,7 @@ main.ch - description ------------------- begin : Die Apr 23 22:16:35 CEST 2002- copyright : (C) 2002-2020 by Andre Simon+ copyright : (C) 2002-2021 by Andre Simon email : a.simon@mailbox.org ***************************************************************************/@@ -67,7 +67,7 @@ public: private: DataDir dataDir;- + /** print version info*/ void printVersionInfo(bool quietMode=false);@@ -79,22 +79,24 @@ private: void printBadInstallationInfo(); /** print input and output errors */- void printIOErrorReport ( unsigned int numberErrorFiles, vector<string> & fileList, + void printIOErrorReport ( unsigned int numberErrorFiles, vector<string> & fileList, const string &action, const string &streamName ); /** list installed files \return true if files were found */- int printInstalledFiles(const string& where, const string& wildcard, const string& kind, + int printInstalledFiles(const string& where, const string& wildcard, const string& kind, const string&option, const string& categoryFilterList=""); /** print debug information- \param lang language definition+ \param lang language definition \param langDefPath path to language definition+ \param level verbosity level+ */ void printDebugInfo ( const highlight::SyntaxReader *lang,- const string &langDefPath );- + const string &langDefPath, int level );+ void printPersistentStates ( const highlight::SyntaxReader *lang); int getNumDigits ( int i );
@@ -48,7 +48,6 @@ string AnsiGenerator::getOpenTag ( const string&font, AnsiGenerator::AnsiGenerator() : CodeGenerator ( ESC_ANSI ) {- newLineTag = "\n"; spacer = initialSpacer = " "; }@@ -70,6 +69,9 @@ void AnsiGenerator::initOutputTags() openTags.push_back ( getOpenTag ( "00", "00" ) );//symbol openTags.push_back ( getOpenTag ( "00", "35" ) );//interpolation + openTags.push_back ( getOpenTag ( "01", "31" ) );//error+ openTags.push_back ( getOpenTag ( "01", "31" ) );//warning+ closeTags.push_back ( "" ); for (unsigned int i=1; i<NUMBER_BUILTIN_STATES; i++ ) { closeTags.push_back ( "\033[m" );
@@ -96,6 +96,8 @@ void BBCodeGenerator::initOutputTags () openTags.push_back ( getOpenTag ( docStyle.getLineStyle() ) ); openTags.push_back ( getOpenTag ( docStyle.getOperatorStyle() ) ); openTags.push_back ( getOpenTag ( docStyle.getInterpolationStyle() ) );+ openTags.push_back ( getOpenTag ( docStyle.getErrorStyle() ) );+ openTags.push_back ( getOpenTag ( docStyle.getErrorMessageStyle() ) ); closeTags.push_back ( getCloseTag ( docStyle.getDefaultStyle() ) ); closeTags.push_back ( getCloseTag ( docStyle.getStringStyle() ) );@@ -108,6 +110,8 @@ void BBCodeGenerator::initOutputTags () closeTags.push_back ( getCloseTag ( docStyle.getLineStyle() ) ); closeTags.push_back ( getCloseTag ( docStyle.getOperatorStyle() ) ); closeTags.push_back ( getCloseTag ( docStyle.getInterpolationStyle() ) );+ closeTags.push_back ( getCloseTag ( docStyle.getErrorStyle() ) );+ closeTags.push_back ( getCloseTag ( docStyle.getErrorMessageStyle() ) ); } string BBCodeGenerator::maskCharacter ( unsigned char c )
@@ -27,6 +27,11 @@ along with Highlight. If not, see <http://www.gnu.org/licenses/>. #include <climits> #include <memory>++#include <chrono>+#include <thread>++ #include <boost/xpressive/xpressive_dynamic.hpp> #include "codegenerator.h"@@ -51,8 +56,9 @@ namespace highlight { const unsigned int CodeGenerator::NUMBER_BUILTIN_STATES = highlight::KEYWORD; +// must not start with kw, st, sm prefixes const string CodeGenerator::STY_NAME_STD="std";-const string CodeGenerator::STY_NAME_STR="str";+const string CodeGenerator::STY_NAME_STR="sng"; const string CodeGenerator::STY_NAME_NUM="num"; const string CodeGenerator::STY_NAME_SLC="slc"; const string CodeGenerator::STY_NAME_COM="com";@@ -63,6 +69,10 @@ const string CodeGenerator::STY_NAME_LIN="lin"; const string CodeGenerator::STY_NAME_SYM="opt"; //operator const string CodeGenerator::STY_NAME_IPL="ipl"; //interpolation +const string CodeGenerator::STY_NAME_HVR="hvr";+const string CodeGenerator::STY_NAME_ERR="err";+const string CodeGenerator::STY_NAME_ERM="erm";+ vector<Diluculum::LuaFunction*> CodeGenerator::pluginChunks; @@ -145,6 +155,7 @@ CodeGenerator::CodeGenerator ( highlight::OutputType type ) maxLineCnt ( UINT_MAX ), inputFilesCnt (0), processedFilesCnt (0),+ kwOffset(0), noTrailingNewLine(0), terminatingChar ( '\0' ),@@ -159,6 +170,9 @@ CodeGenerator::CodeGenerator ( highlight::OutputType type ) lineContainedStmt(false), applySyntaxTestCase(false), toggleDynRawString(false),+ lsEnableHoverRequests(false),+ lsCheckSemanticTokens(false),+ lsCheckSyntaxErrors(false), keywordCase ( StringTools::CASE_UNCHANGED ), eolDelimiter ('\n'),@@ -181,14 +195,81 @@ CodeGenerator::~CodeGenerator() } -bool CodeGenerator::initTheme ( const string& themePath )+bool CodeGenerator::initTheme ( const string& themePath, bool loadSemanticStyles) { this->themePath=themePath;- bool loadOK = docStyle.load ( themePath, outputType );+ bool loadOK = docStyle.load ( themePath, outputType, loadSemanticStyles ); initOutputTags(); return loadOK; } +LSResult CodeGenerator::initLanguageServer ( const string& executable, const vector<string> &options,+ const string& workspace, const string& syntax,+ int delay, int logLevel )+{+ if (LSPClient.isInitialized()) {+ return LSResult::INIT_OK;+ }++ LSPClient.setLogging(logLevel>1);++ LSPClient.setExecutable(executable);+ LSPClient.setWorkspace(workspace);+ LSPClient.setOptions(options);+ LSPClient.setSyntax(syntax);+ LSPClient.setInitializeDelay(delay);+ if (!LSPClient.connect()){+ return LSResult::INIT_BAD_PIPE;+ }++ if (!LSPClient.runInitialize()){+ return LSResult::INIT_BAD_REQUEST;+ }+ for (int i=0; i<docStyle.getSemanticTokenStyleCount();i++) {+ currentSyntax->generateNewKWClass(i+1, "st");+ }+ LSPClient.runInitialized();+ updateKeywordClasses();+ return LSResult::INIT_OK;+}++bool CodeGenerator::lsOpenDocument(const string& fileName, const string & suffix){+ lsDocumentPath = fileName;+ return LSPClient.runDidOpen(fileName, suffix);+}++bool CodeGenerator::lsCloseDocument(const string& fileName, const string & suffix){+ lsDocumentPath.clear();+ return LSPClient.runDidClose(fileName, suffix);+}++bool CodeGenerator::lsAddSemanticInfo(const string& fileName, const string & suffix){+ lsCheckSemanticTokens = LSPClient.runSemanticTokensFull(fileName);+ return lsCheckSemanticTokens;+}++bool CodeGenerator::isHoverProvider(){+ return LSPClient.isHoverProvider();+}++bool CodeGenerator::isSemanticTokensProvider(){+ return LSPClient.isSemanticTokensProvider();+}++void CodeGenerator::lsAddHoverInfo(bool hover){+ lsEnableHoverRequests = hover;+}++void CodeGenerator::lsAddSyntaxErrorInfo(bool error) {+ lsCheckSyntaxErrors = error;;+}+++void CodeGenerator::exitLanguageServer () {+ LSPClient.runShutdown();+ LSPClient.runExit();+}+ const string& CodeGenerator::getStyleName() { return themePath;@@ -333,11 +414,6 @@ void CodeGenerator::setStyleCaching ( bool flag ) disableStyleCache=!flag; } -void CodeGenerator::setStartingNestedLang(const string &langName)-{- embedLangStart = langName;-}- const string CodeGenerator::getBaseFont() const { if ( !baseFont.empty() ) return baseFont;@@ -559,7 +635,7 @@ void CodeGenerator::matchRegex ( const string &line, State skipState) matchBegin = cur->position(groupID); regexGroups.insert (- make_pair ( matchBegin + 1, ReGroup ( regexElem->open, cur->length(groupID), regexElem->kwClass, regexElem->langName ) ) );+ make_pair ( matchBegin + 1, RegexToken ( regexElem->open, cur->length(groupID), regexElem->kwClass, regexElem->langName ) ) ); // priority regex (match required) if (regexElem->priority) {@@ -576,7 +652,7 @@ unsigned char CodeGenerator::getInputChar() //more testing required: if (outputType==ESC_TRUECOLOR || outputType==ESC_XTERM256)- lastLineLength=StringTools::utf8_strlen(line);+ lastLineLength=StringTools::utf8_strlen(line + lsSyntaxErrorDesc); bool eof=false; if ( preFormatter.isEnabled() ) {@@ -656,6 +732,29 @@ State CodeGenerator::getCurrentState (State oldState) SKIP_EMBEDDED: + if (lsCheckSyntaxErrors && LSPClient.errorExists(lineNumber, lineIndex)) {+ highlight::SemanticToken errorToken = LSPClient.getError(lineNumber, lineIndex);+ token = line.substr ( lineIndex-1, errorToken.length);+ lineIndex += errorToken.length-1;+ lsSyntaxErrorDesc = errorToken.id;++ //std::cerr <<"error num "<<lineNumber<< " idx "<<lineIndex<< " error "<<errorToken.id<< "\n";+ return SYNTAX_ERROR;+ }++ if (lsCheckSemanticTokens && LSPClient.tokenExists(lineNumber, lineIndex)) {+ highlight::SemanticToken semToken = LSPClient.getToken(lineNumber, lineIndex);+ int semStyleKwId = docStyle.getSemanticStyle(semToken.id);+ if (semStyleKwId) {+ token = line.substr ( lineIndex-1, semToken.length);+ lineIndex += semToken.length-1;++ currentKeywordClass = semStyleKwId + kwOffset; // +offset of missing kw groups in the theme+ //std::cerr <<"l "<<lineNumber<< "t "<<token<< " semStyleKwId "<< semStyleKwId << " off "<<kwOffset<<" -> " << semToken.id <<"\n";+ return KEYWORD;+ }+ }+ // Test if a regular expression was found at the current position if ( !regexGroups.empty() ) { if ( regexGroups.count ( lineIndex ) ) {@@ -750,6 +849,7 @@ unsigned int CodeGenerator::getCurrentKeywordClassId(){ // this vector contains the defined keyword classes, and currentKeywordClass is its index: vector<string> kwClasses=currentSyntax->getKeywordClasses();+ if (currentKeywordClass && currentKeywordClass<=kwClasses.size()) { string kwClassName=kwClasses[currentKeywordClass-1]; if (kwClassName.size()==3)@@ -761,8 +861,30 @@ unsigned int CodeGenerator::getCurrentKeywordClassId(){ //it is faster to pass ostream reference void CodeGenerator::maskString ( ostream& ss, const string & s ) {- for ( unsigned int i=0; i< s.length(); i++ ) {- ss << maskCharacter ( s[i] );+ string escHoverText;++ if (lsEnableHoverRequests && (currentState==STANDARD || currentState==NUMBER || currentState==KEYWORD)) {++ string hoverText = LSPClient.runHover(lsDocumentPath, lineIndex - s.size(), lineNumber-1);++ for(const auto &c : hoverText)+ {+ if (isascii(c))+ escHoverText.append(maskCharacter(c));+ }+ }++ if (escHoverText.size()) {+ ss << getHoverTagOpen(escHoverText);+ }++ for (const auto &c : s)+ {+ ss << maskCharacter ( c );+ }++ if (escHoverText.size()) {+ ss << getHoverTagClose(); } // The test markers position should also be deternmined by calculating the code points@@ -770,6 +892,7 @@ void CodeGenerator::maskString ( ostream& ss, const string & s ) PositionState ps(currentState, getCurrentKeywordClassId(), false); + //TODO avoid repeated string comparison: int slen = encoding=="utf-8" ? StringTools::utf8_strlen(s) : s.length(); for (int i=0; i< slen; i++ ) { stateTraceCurrent.push_back(ps);@@ -779,6 +902,20 @@ void CodeGenerator::maskString ( ostream& ss, const string & s ) } } +void CodeGenerator::printSyntaxError ( ostream& ss ) {+ if ( !lsSyntaxErrorDesc.empty()) {+ ss << openTags[ highlight::SYNTAX_ERROR_MSG ];++ for(const auto &c : lsSyntaxErrorDesc)+ {+ ss << maskCharacter ( c );+ }++ ss << closeTags[ highlight::SYNTAX_ERROR_MSG ];+ lsSyntaxErrorDesc.clear();+ }+}+ Diluculum::LuaValueList CodeGenerator::callDecorateFct(const string& token) { @@ -878,445 +1015,6 @@ bool CodeGenerator::initIndentationScheme ( const string &indentScheme ) return formattingEnabled=true; } --/*Helper functions for astyle option parsing*/-string CodeGenerator::getParam(const string& arg, const char* op)-{- return arg.substr(strlen(op));-}--string CodeGenerator::getParam(const string& arg, const char* op1, const char* op2)-{- return isParamOption(arg, op1) ? getParam(arg, op1) : getParam(arg, op2);-}--bool CodeGenerator::isOption(const string& arg, const char* op)-{- return arg.compare(op) == 0;-}--bool CodeGenerator::isOption(const string& arg, const char* op1, const char* op2)-{- return (isOption(arg, op1) || isOption(arg, op2));-}--bool CodeGenerator::isParamOption(const string& arg, const char* option)-{- bool retVal = arg.compare(0, strlen(option), option) == 0;- // if comparing for short option, 2nd char of arg must be numeric- if (retVal && strlen(option) == 1 && arg.length() > 1)- if (!isdigit((unsigned char) arg[1]))- retVal = false;- return retVal;-}--bool CodeGenerator::isParamOption(const string& arg, const char* option1, const char* option2)-{- return isParamOption(arg, option1) || isParamOption(arg, option2);-}--//apply the same options as astyle-void CodeGenerator::setIndentationOptions (const vector<string>& options){- if (formatter) {- string arg;- for (unsigned int i=0; i<options.size(); i++) {- arg=options[i];-- if (isOption(arg, "mode=cs"))- {- formatter->setSharpStyle();- formatter->setModeManuallySet(true);- }- else if (isOption(arg, "mode=c"))- {- formatter->setCStyle();- formatter->setModeManuallySet(true);- }- else if (isOption(arg, "mode=java"))- {- formatter->setJavaStyle();- formatter->setModeManuallySet(true);- }- else if (isParamOption(arg, "t", "indent=tab="))- {- int spaceNum = 4;- string spaceNumParam = getParam(arg, "t", "indent=tab=");- if (spaceNumParam.length() > 0)- spaceNum = atoi(spaceNumParam.c_str());- if (spaceNum >= 2 && spaceNum <= 20)- formatter->setTabIndentation(spaceNum, false);- }- else if (isOption(arg, "indent=tab"))- {- formatter->setTabIndentation(4);- }- else if (isParamOption(arg, "T", "indent=force-tab="))- {- int spaceNum = 4;- string spaceNumParam = getParam(arg, "T", "indent=force-tab=");- if (spaceNumParam.length() > 0)- spaceNum = atoi(spaceNumParam.c_str());- if (spaceNum >= 2 && spaceNum <= 20)- formatter->setTabIndentation(spaceNum, true);- }- else if (isOption(arg, "indent=force-tab"))- {- formatter->setTabIndentation(4, true);- }- else if (isParamOption(arg, "xT", "indent=force-tab-x="))- {- int tabNum = 8;- string tabNumParam = getParam(arg, "xT", "indent=force-tab-x=");- if (tabNumParam.length() > 0)- tabNum = atoi(tabNumParam.c_str());- if (tabNum >= 2 && tabNum <= 20)- formatter->setForceTabXIndentation(tabNum);- }- else if (isOption(arg, "indent=force-tab-x"))- {- formatter->setForceTabXIndentation(8);- }- else if (isParamOption(arg, "s", "indent=spaces="))- {- int spaceNum = 4;- string spaceNumParam = getParam(arg, "s", "indent=spaces=");- if (spaceNumParam.length() > 0)- spaceNum = atoi(spaceNumParam.c_str());- if (spaceNum >= 2 && spaceNum <= 20)- formatter->setSpaceIndentation(spaceNum);- }- else if (isOption(arg, "indent=spaces"))- {- formatter->setSpaceIndentation(4);- }- else if (isParamOption(arg, "xt", "indent-continuation="))- {- int contIndent = 1;- string contIndentParam = getParam(arg, "xt", "indent-continuation=");- if (contIndentParam.length() > 0)- contIndent = atoi(contIndentParam.c_str());- if (contIndent > 0 && contIndent < 5)- formatter->setContinuationIndentation(contIndent);- }- else if (isParamOption(arg, "m", "min-conditional-indent="))- {- int minIndent = astyle::MINCOND_TWO;- string minIndentParam = getParam(arg, "m", "min-conditional-indent=");- if (minIndentParam.length() > 0)- minIndent = atoi(minIndentParam.c_str());- if (minIndent < astyle::MINCOND_END)- formatter->setMinConditionalIndentOption(minIndent);- }- else if (isParamOption(arg, "M", "max-continuation-indent="))- {- int maxIndent = 40;- string maxIndentParam = getParam(arg, "M", "max-continuation-indent=");- if (maxIndentParam.length() > 0)- maxIndent = atoi(maxIndentParam.c_str());- if (maxIndent >= 40 && maxIndent <= 120)- formatter->setMaxContinuationIndentLength(maxIndent);- }- else if (isOption(arg, "N", "indent-namespaces"))- {- formatter->setNamespaceIndent(true);- }- else if (isOption(arg, "C", "indent-classes"))- {- formatter->setClassIndent(true);- }- else if (isOption(arg, "xG", "indent-modifiers"))- {- formatter->setModifierIndent(true);- }- else if (isOption(arg, "S", "indent-switches"))- {- formatter->setSwitchIndent(true);- }- else if (isOption(arg, "K", "indent-cases"))- {- formatter->setCaseIndent(true);- }- else if (isOption(arg, "xU", "indent-after-parens"))- {- formatter->setAfterParenIndent(true);- }- else if (isOption(arg, "L", "indent-labels"))- {- formatter->setLabelIndent(true);- }- else if (isOption(arg, "xW", "indent-preproc-block"))- {- formatter->setPreprocBlockIndent(true);- }- else if (isOption(arg, "w", "indent-preproc-define"))- {- formatter->setPreprocDefineIndent(true);- }- else if (isOption(arg, "xw", "indent-preproc-cond"))- {- formatter->setPreprocConditionalIndent(true);- }- else if (isOption(arg, "y", "break-closing-braces"))- {- formatter->setBreakClosingHeaderBracesMode(true);- }- else if (isOption(arg, "O", "keep-one-line-blocks"))- {- formatter->setBreakOneLineBlocksMode(false);- }- else if (isOption(arg, "o", "keep-one-line-statements"))- {- formatter->setBreakOneLineStatementsMode(false);- }- else if (isOption(arg, "P", "pad-paren"))- {- formatter->setParensOutsidePaddingMode(true);- formatter->setParensInsidePaddingMode(true);- }- else if (isOption(arg, "d", "pad-paren-out"))- {- formatter->setParensOutsidePaddingMode(true);- }- else if (isOption(arg, "xd", "pad-first-paren-out"))- {- formatter->setParensFirstPaddingMode(true);- }- else if (isOption(arg, "D", "pad-paren-in"))- {- formatter->setParensInsidePaddingMode(true);- }- else if (isOption(arg, "H", "pad-header"))- {- formatter->setParensHeaderPaddingMode(true);- }- else if (isOption(arg, "U", "unpad-paren"))- {- formatter->setParensUnPaddingMode(true);- }- else if (isOption(arg, "p", "pad-oper"))- {- formatter->setOperatorPaddingMode(true);- }- else if (isOption(arg, "xg", "pad-comma"))- {- formatter->setCommaPaddingMode(true);- }- else if (isOption(arg, "xe", "delete-empty-lines"))- {- formatter->setDeleteEmptyLinesMode(true);- }- else if (isOption(arg, "E", "fill-empty-lines"))- {- formatter->setEmptyLineFill(true);- }- else if (isOption(arg, "c", "convert-tabs"))- {- formatter->setTabSpaceConversionMode(true);- }- else if (isOption(arg, "xy", "close-templates"))- {- formatter->setCloseTemplatesMode(true);- }- else if (isOption(arg, "F", "break-blocks=all"))- {- formatter->setBreakBlocksMode(true);- formatter->setBreakClosingHeaderBlocksMode(true);- }- else if (isOption(arg, "f", "break-blocks"))- {- formatter->setBreakBlocksMode(true);- }- else if (isOption(arg, "e", "break-elseifs"))- {- formatter->setBreakElseIfsMode(true);- }- else if (isOption(arg, "xb", "break-one-line-headers"))- {- formatter->setBreakOneLineHeadersMode(true);- }- else if (isOption(arg, "j", "add-braces"))- {- formatter->setAddBracesMode(true);- }- else if (isOption(arg, "J", "add-one-line-braces"))- {- formatter->setAddOneLineBracesMode(true);- }- else if (isOption(arg, "xj", "remove-braces"))- {- formatter->setRemoveBracesMode(true);- }- else if (isOption(arg, "Y", "indent-col1-comments"))- {- formatter->setIndentCol1CommentsMode(true);- }- else if (isOption(arg, "align-pointer=type"))- {- formatter->setPointerAlignment(astyle::PTR_ALIGN_TYPE);- }- else if (isOption(arg, "align-pointer=middle"))- {- formatter->setPointerAlignment(astyle::PTR_ALIGN_MIDDLE);- }- else if (isOption(arg, "align-pointer=name"))- {- formatter->setPointerAlignment(astyle::PTR_ALIGN_NAME);- }- else if (isParamOption(arg, "k"))- {- int align = 0;- string styleParam = getParam(arg, "k");- if (styleParam.length() > 0)- align = atoi(styleParam.c_str());- if (align == 1)- formatter->setPointerAlignment(astyle::PTR_ALIGN_TYPE);- else if (align == 2)- formatter->setPointerAlignment(astyle::PTR_ALIGN_MIDDLE);- else if (align == 3)- formatter->setPointerAlignment(astyle::PTR_ALIGN_NAME);- }- else if (isOption(arg, "align-reference=none"))- {- formatter->setReferenceAlignment(astyle::REF_ALIGN_NONE);- }- else if (isOption(arg, "align-reference=type"))- {- formatter->setReferenceAlignment(astyle::REF_ALIGN_TYPE);- }- else if (isOption(arg, "align-reference=middle"))- {- formatter->setReferenceAlignment(astyle::REF_ALIGN_MIDDLE);- }- else if (isOption(arg, "align-reference=name"))- {- formatter->setReferenceAlignment(astyle::REF_ALIGN_NAME);- }- else if (isParamOption(arg, "W"))- {- int align = 0;- string styleParam = getParam(arg, "W");- if (styleParam.length() > 0)- align = atoi(styleParam.c_str());- if (align == 0)- formatter->setReferenceAlignment(astyle::REF_ALIGN_NONE);- else if (align == 1)- formatter->setReferenceAlignment(astyle::REF_ALIGN_TYPE);- else if (align == 2)- formatter->setReferenceAlignment(astyle::REF_ALIGN_MIDDLE);- else if (align == 3)- formatter->setReferenceAlignment(astyle::REF_ALIGN_NAME);- }- else if (isParamOption(arg, "max-code-length="))- {- int maxLength = 50;- string maxLengthParam = getParam(arg, "max-code-length=");- if (maxLengthParam.length() > 0)- maxLength = atoi(maxLengthParam.c_str());- if (maxLength >= 50 && maxLength<= 200)- formatter->setMaxCodeLength(maxLength);- }- else if (isParamOption(arg, "xC"))- {- int maxLength = 50;- string maxLengthParam = getParam(arg, "xC");- if (maxLengthParam.length() > 0)- maxLength = atoi(maxLengthParam.c_str());- if (maxLength > 0 && maxLength<= 200)- formatter->setMaxCodeLength(maxLength);- }- else if (isOption(arg, "xL", "break-after-logical"))- {- formatter->setBreakAfterMode(true);- }- else if (isOption(arg, "xc", "attach-classes"))- {- formatter->setAttachClass(true);- }- else if (isOption(arg, "xV", "attach-closing-while"))- {- formatter->setAttachClosingWhile(true);- }- else if (isOption(arg, "xk", "attach-extern-c"))- {- formatter->setAttachExternC(true);- }- else if (isOption(arg, "xn", "attach-namespaces"))- {- formatter->setAttachNamespace(true);- }- else if (isOption(arg, "xl", "attach-inlines"))- {- formatter->setAttachInline(true);- }- else if (isOption(arg, "xp", "remove-comment-prefix"))- {- formatter->setStripCommentPrefix(true);- }- else if (isOption(arg, "xB", "break-return-type"))- {- formatter->setBreakReturnType(true);- }- else if (isOption(arg, "xD", "break-return-type-decl"))- {- formatter->setBreakReturnTypeDecl(true);- }- else if (isOption(arg, "xf", "attach-return-type"))- {- formatter->setAttachReturnType(true);- }- else if (isOption(arg, "xh", "attach-return-type-decl"))- {- formatter->setAttachReturnTypeDecl(true);- }- // Objective-C options- else if (isOption(arg, "xQ", "pad-method-prefix"))- {- formatter->setMethodPrefixPaddingMode(true);- }- else if (isOption(arg, "xR", "unpad-method-prefix"))- {- formatter->setMethodPrefixUnPaddingMode(true);- }- else if (isOption(arg, "xq", "pad-return-type"))- {- formatter->setReturnTypePaddingMode(true);- }- else if (isOption(arg, "xr", "unpad-return-type"))- {- formatter->setReturnTypeUnPaddingMode(true);- }- else if (isOption(arg, "xS", "pad-param-type"))- {- formatter->setParamTypePaddingMode(true);- }- else if (isOption(arg, "xs", "unpad-param-type"))- {- formatter->setParamTypeUnPaddingMode(true);- }- else if (isOption(arg, "xM", "align-method-colon"))- {- formatter->setAlignMethodColon(true);- }- else if (isOption(arg, "xP0", "pad-method-colon=none"))- {- formatter->setObjCColonPaddingMode(astyle::COLON_PAD_NONE);- }- else if (isOption(arg, "xP1", "pad-method-colon=all"))- {- formatter->setObjCColonPaddingMode(astyle::COLON_PAD_ALL);- }- else if (isOption(arg, "xP2", "pad-method-colon=after"))- {- formatter->setObjCColonPaddingMode(astyle::COLON_PAD_AFTER);- }- else if (isOption(arg, "xP3", "pad-method-colon=before"))- {- formatter->setObjCColonPaddingMode(astyle::COLON_PAD_BEFORE);- }- }- }-}- LoadResult CodeGenerator::loadLanguage ( const string& langDefPath, bool embedded ) { @@ -1333,6 +1031,7 @@ LoadResult CodeGenerator::loadLanguage ( const string& langDefPath, bool embedde currentSyntax=syntaxReaders[langDefPath]; result=LOAD_OK; } else {+ currentSyntax=new SyntaxReader(); result=currentSyntax->load(langDefPath, pluginParameter, outputType); syntaxReaders[langDefPath]=currentSyntax;@@ -1340,23 +1039,12 @@ LoadResult CodeGenerator::loadLanguage ( const string& langDefPath, bool embedde if ( result==LOAD_OK ) { formattingPossible=currentSyntax->enableReformatting();-- if ( openTags.size() >NUMBER_BUILTIN_STATES ) {- // remove dynamic keyword tag delimiters of the old language definition- vector<string>::iterator keyStyleOpenBegin =- openTags.begin() + NUMBER_BUILTIN_STATES;- vector<string>::iterator keyStyleCloseBegin =- closeTags.begin() + NUMBER_BUILTIN_STATES;- openTags.erase ( keyStyleOpenBegin, openTags.end() );- closeTags.erase ( keyStyleCloseBegin, closeTags.end() );- }- // add new keyword tag delimiters- for ( unsigned int i=0; i< currentSyntax->getKeywordClasses().size(); i++ ) {- openTags.push_back ( getKeywordOpenTag ( i ) );- closeTags.push_back ( getKeywordCloseTag ( i ) );- }+ updateKeywordClasses(); } }++ kwOffset=currentSyntax->getKeywordCount() - docStyle.getKeywordStyleCount();+ return result; } @@ -1644,7 +1332,6 @@ void CodeGenerator::openTag ( State s ) { *out << openTags[ ( unsigned int ) s]; currentState=s;- } void CodeGenerator::closeTag ( State s )@@ -1704,10 +1391,6 @@ void CodeGenerator::processRootState() return; } - if (!embedLangStart.empty()) {- if (!loadEmbeddedLang(currentSyntax->getNewPath(embedLangStart))) return;- }- State state=STANDARD; openTag ( STANDARD ); @@ -1757,12 +1440,17 @@ void CodeGenerator::processRootState() eof=processSymbolState(); openTag ( STANDARD ); break;- case EMBEDDED_CODE_END: closeTag ( STANDARD ); eof=processSyntaxChangeState(state); openTag ( STANDARD ); break;+ case SYNTAX_ERROR:+ closeTag ( STANDARD );+ eof=processSyntaxErrorState();+ openTag ( STANDARD );+ break;+ case _EOL: // XTERM256 fix (issue with less cmd) if (!firstLine || showLineNumbers) {@@ -2187,7 +1875,6 @@ bool CodeGenerator::processStringState ( State oldState ) bool CodeGenerator::processSymbolState() {- State newState=STANDARD; bool eof=false, exitState=false;@@ -2218,6 +1905,38 @@ bool CodeGenerator::processSymbolState() return eof; } +bool CodeGenerator::processSyntaxErrorState()+{+ State newState=STANDARD;+ bool eof=false,+ exitState=false;++ openTag ( SYNTAX_ERROR );+ do {+ printMaskedToken ( newState!=_WS );+ newState= getCurrentState(SYNTAX_ERROR);+ switch ( newState ) {+ case _WS:+ processWsState();+ exitState=isolateTags;+ break;+ case _EOL:+ insertLineNumber();+ exitState=true;+ break;+ case _EOF:+ eof = true;+ break;+ default:+ exitState=newState!=SYMBOL;+ break;+ }+ } while ( !exitState && !eof );++ closeTag ( SYNTAX_ERROR );+ return eof;+}+ bool CodeGenerator::processEscapeCharState() { State newState=STANDARD;@@ -2370,6 +2089,8 @@ string CodeGenerator::getTestcaseName(State s, unsigned int kwClass) { return STY_NAME_SYM; case STRING_INTERPOLATION: return STY_NAME_IPL;+ case SYNTAX_ERROR:+ return STY_NAME_ERR; case _WS: return "ws"; case KEYWORD: {@@ -2377,8 +2098,9 @@ string CodeGenerator::getTestcaseName(State s, unsigned int kwClass) { if (!kwClass) return "ws"; - char kwName[5] = {0};- snprintf(kwName, sizeof(kwName), "kw%c", ('a'+kwClass-1));+ char kwName[20] = {0};+ snprintf(kwName, sizeof(kwName), "keyword %c", ('a'+kwClass-1));+ return string(kwName); } default:@@ -2425,7 +2147,8 @@ void CodeGenerator::runSyntaxTestcases(unsigned int column){ if (line.find(STY_NAME_NUM, typeDescPos)==typeDescPos) assertState=NUMBER;- else if (line.find(STY_NAME_STR, typeDescPos)==typeDescPos)+ //TODO temp. fix to allow old and new string classes+ else if (line.find(STY_NAME_STR, typeDescPos)==typeDescPos || line.find("str", typeDescPos)==typeDescPos) assertState=STRING; else if (line.find(STY_NAME_ESC, typeDescPos)==typeDescPos) assertState=ESC_CHAR;@@ -2446,7 +2169,7 @@ void CodeGenerator::runSyntaxTestcases(unsigned int column){ else if (line.find(STY_NAME_DST, typeDescPos)==typeDescPos) assertState=DIRECTIVE_STRING; - else if (line.find("kw", typeDescPos)==typeDescPos) {+ else if (line.find("kw", typeDescPos)==typeDescPos || line.find("st", typeDescPos)==typeDescPos) { assertState=KEYWORD; if (isalpha(line[typeDescPos+2])) assertGroup=line[typeDescPos+2] - 'a' +1;@@ -2480,7 +2203,11 @@ void CodeGenerator::runSyntaxTestcases(unsigned int column){ string CodeGenerator::getNewLine() {- return (printNewLines) ? newLineTag : "";+ ostringstream ss;+ printSyntaxError(ss);+ if (printNewLines)+ ss << newLineTag;+ return ss.str(); } Diluculum::LuaValueList CodeGenerator::callDecorateLineFct(bool isLineStart)@@ -2546,7 +2273,7 @@ void CodeGenerator::insertLineNumber ( bool insertNewLine ) numberPrefix << openTags[LINENUMBER]; maskString ( numberPrefix, os.str() ); - //use initialSpacer here, spacer can be overriden by plug-in (format.spacer)+ //use initialSpacer here, spacer can be overridden by plug-in (format.spacer) numberPrefix << initialSpacer << closeTags[LINENUMBER]; wsBuffer += numberPrefix.str(); }@@ -2710,5 +2437,26 @@ void CodeGenerator::clearPersistentSnippets(){ } } +void CodeGenerator::updateKeywordClasses(){++ if (openTags.size()) {+ if ( openTags.size() >NUMBER_BUILTIN_STATES ) {+ // remove dynamic keyword tag delimiters of the old language definition+ vector<string>::iterator keyStyleOpenBegin =+ openTags.begin() + NUMBER_BUILTIN_STATES;+ vector<string>::iterator keyStyleCloseBegin =+ closeTags.begin() + NUMBER_BUILTIN_STATES;+ openTags.erase ( keyStyleOpenBegin, openTags.end() );+ closeTags.erase ( keyStyleCloseBegin, closeTags.end() );+ }+ // add new keyword tag delimiters++ for ( unsigned int i=0; i< currentSyntax->getKeywordClasses().size(); i++ ) {+ openTags.push_back ( getKeywordOpenTag ( i ) );+ closeTags.push_back ( getKeywordCloseTag ( i ) );+ }+ }+}+ }
@@ -44,7 +44,7 @@ void DataDir::initSearchDirectories ( const string &userDefinedDir ) #ifndef WIN32 possibleDirs.push_back ( Platform::getHomePath() + "/.highlight/" ); #endif- + if ( !userDefinedDir.empty() ) possibleDirs.push_back ( userDefinedDir ); char* hlEnvPath=getenv("HIGHLIGHT_DATADIR");@@ -71,15 +71,10 @@ void DataDir::initSearchDirectories ( const string &userDefinedDir ) #endif } -void DataDir::searchDataDir( const string &userDefinedDir )-{- initSearchDirectories(userDefinedDir);-}- const string DataDir::searchFile(const string path) { for ( unsigned int i=0; i<possibleDirs.size(); i++ ) {- + //cerr << "Searching "<<possibleDirs[i]<< path<<"\n"; if ( Platform::fileExists ( possibleDirs[i] + path ) ) return possibleDirs[i]+ path;@@ -103,10 +98,10 @@ const string DataDir::getLangPath ( const string & file ) const string DataDir::getThemePath ( const string & file, bool base16) { string themesPath=string("themes")+Platform::pathSeparator;- + if (base16) themesPath=themesPath + "base16" + Platform::pathSeparator;- + return searchFile(themesPath+file); } @@ -164,7 +159,7 @@ const string DataDir::getDocDir() } const string DataDir::getEncodingHint (const string &syntax) {- + return encodingHint[getFileBaseName(syntax)]; } @@ -179,10 +174,10 @@ string DataDir::getFileSuffix(const string& fileName) } string DataDir::guessFileType ( const string& suffix, const string &inputFile, bool useUserSuffix, bool forceShebangCheckStdin )-{ +{ string baseName = getFileBaseName(inputFile); if (assocByFilename.count(baseName)) return assocByFilename.find(baseName)->second;- + string lcSuffix = StringTools::change_case(suffix); if (assocByExtension.count(lcSuffix)) { return assocByExtension[lcSuffix];@@ -196,9 +191,9 @@ string DataDir::guessFileType ( const string& suffix, const string &inputFile, b return lcSuffix; } -bool DataDir::loadFileTypeConfig (const string& path )+bool DataDir::loadFileTypeConfig (const string& name ) {- string confPath=searchFile(path+".conf");+ string confPath=searchFile(name+".conf"); try { Diluculum::LuaState ls; Diluculum::LuaValueList ret= ls.doFile (confPath);@@ -216,7 +211,60 @@ bool DataDir::loadFileTypeConfig (const string& path ) assocByShebang.insert ( make_pair ( mapEntry["Shebang"].asString(), langName ) ); } else if (mapEntry["EncodingHint"] !=Diluculum::Nil) { encodingHint.insert ( make_pair ( langName, mapEntry["EncodingHint"].asString() ) );- } + }+ idx++;+ }++ } catch (Diluculum::LuaError &err) {+ cerr <<err.what()<<"\n";+ return false;+ }+ return true;+}++bool DataDir::loadLSPConfig (const string& path )+{+ string confPath=searchFile(path+".conf");+ try {+ Diluculum::LuaState ls;+ Diluculum::LuaValueList ret= ls.doFile (confPath);++ int idx=1;+ std::string serverName; ///< server name+ std::string executable; ///< server executable path+ std::string syntax; ///< language definition which can be enhanced using the LS+ int delay;+ std::vector<std::string> options; ///< server executable start options+ Diluculum::LuaValue mapEntry;++ //{ Server="clangd", Exec="clangd", Syntax="c", Options={"--log=error"} },+ while ((mapEntry = ls["Servers"][idx].value()) !=Diluculum::Nil) {+ options.clear();+ serverName = mapEntry["Server"].asString();+ executable = mapEntry["Exec"].asString();+ syntax = mapEntry["Syntax"].asString();+ delay = 0;+ if (mapEntry["Delay"] !=Diluculum::Nil) {+ delay = mapEntry["Delay"].asNumber();+ }++ if (mapEntry["Options"] !=Diluculum::Nil) {+ int extIdx=1;+ while (mapEntry["Options"][extIdx] !=Diluculum::Nil) {+ options.push_back(mapEntry["Options"][extIdx].asString());+ extIdx++;+ }+ }++ highlight::LSPProfile profile;+ profile.executable = executable;+ profile.serverName = serverName;+ profile.syntax = syntax;+ profile.options = options;+ profile.delay = delay;++ lspProfiles[serverName]=profile;+ idx++; } @@ -227,6 +275,16 @@ bool DataDir::loadFileTypeConfig (const string& path ) return true; } +bool DataDir::profileExists(const string &profile) {+ return lspProfiles.count(profile);+}+++highlight::LSPProfile &DataDir::getProfile(const string &profile) {+ return lspProfiles[profile];+}++ void DataDir::readLuaList(const string& paramName, const string& langName,Diluculum::LuaValue &luaVal, StringMap* extMap){ int extIdx=1; string val;@@ -244,7 +302,7 @@ string DataDir::analyzeFile ( const string& file ) ifstream inFile ( file.c_str() ); getline ( inFile, firstLine ); } else {- + // This copies all the data to a new buffer, uses the data to get the // first line, then makes cin use the new buffer that underlies the // stringstream instance
@@ -158,6 +158,8 @@ void HtmlGenerator::initOutputTags () openTags.push_back ( getOpenTag ( docStyle.getLineStyle() ) ); openTags.push_back ( getOpenTag ( docStyle.getOperatorStyle() ) ); openTags.push_back ( getOpenTag ( docStyle.getInterpolationStyle() ) );+ openTags.push_back ( getOpenTag ( docStyle.getErrorStyle() ) );+ openTags.push_back ( getOpenTag ( docStyle.getErrorMessageStyle() ) ); } else { openTags.push_back ( getOpenTag ( STY_NAME_STR ) ); openTags.push_back ( getOpenTag ( STY_NAME_NUM ) );@@ -169,6 +171,8 @@ void HtmlGenerator::initOutputTags () openTags.push_back ( getOpenTag ( STY_NAME_LIN ) ); openTags.push_back ( getOpenTag ( STY_NAME_SYM ) ); openTags.push_back ( getOpenTag ( STY_NAME_IPL ) );+ openTags.push_back ( getOpenTag ( STY_NAME_ERR ) );+ openTags.push_back ( getOpenTag ( STY_NAME_ERM ) ); } closeTags.push_back ( "" );@@ -186,13 +190,21 @@ string HtmlGenerator::getAttributes ( const string & elemName, const ElementSty s << "."<<cssClassName; s <<"."<<elemName<<" { "; }- s << "color:#"- << ( elem.getColour().getRed ( HTML ) )- << ( elem.getColour().getGreen ( HTML ) )- << ( elem.getColour().getBlue ( HTML ) )- << ( elem.isBold() ? "; font-weight:bold" :"" )- << ( elem.isItalic() ? "; font-style:italic" :"" )- << ( elem.isUnderline() ? "; text-decoration:underline" :"" );++ string customStyle(elem.getCustomStyle());++ if (customStyle.empty()) {+ s << "color:#"+ << ( elem.getColour().getRed ( HTML ) )+ << ( elem.getColour().getGreen ( HTML ) )+ << ( elem.getColour().getBlue ( HTML ) )+ << ( elem.isBold() ? "; font-weight:bold" :"" )+ << ( elem.isItalic() ? "; font-style:italic" :"" )+ << ( elem.isUnderline() ? "; text-decoration:underline" :"" );+ } else {+ s << customStyle;+ }+ if ( !elemName.empty() ) { s << "; }\n" ; }@@ -206,7 +218,7 @@ string HtmlGenerator::getOpenTag ( const string& styleName ) string HtmlGenerator::getOpenTag ( const ElementStyle & elem ) {- return "<span style=\""+getAttributes ( "",elem ) + "\">";+ return "<span style=\""+getAttributes ( "", elem ) + "\">"; } string HtmlGenerator::getGeneratorComment()@@ -266,7 +278,10 @@ string HtmlGenerator::getStyleDefinition() << getAttributes ( STY_NAME_DIR, docStyle.getPreProcessorStyle() ) << getAttributes ( STY_NAME_SYM, docStyle.getOperatorStyle() ) << getAttributes ( STY_NAME_IPL, docStyle.getInterpolationStyle() )- << getAttributes ( STY_NAME_LIN, docStyle.getLineStyle() );+ << getAttributes ( STY_NAME_LIN, docStyle.getLineStyle() )+ << getAttributes ( STY_NAME_HVR, docStyle.getHoverStyle() )+ << getAttributes ( STY_NAME_ERM, docStyle.getErrorMessageStyle() )+ << getAttributes ( STY_NAME_ERR, docStyle.getErrorStyle() ); KeywordStyles styles = docStyle.getKeywordStyles(); for ( KSIterator it=styles.begin(); it!=styles.end(); it++ ) {@@ -307,10 +322,13 @@ string HtmlGenerator::maskCharacter ( unsigned char c ) string HtmlGenerator::getNewLine() {- string nlStr;- if ( showLineNumbers && orderedList ) nlStr +="</li>";- if (printNewLines) nlStr+="\n";- return nlStr;+ ostringstream ss;++ printSyntaxError(ss);++ if ( showLineNumbers && orderedList ) ss << "</li>";+ if ( printNewLines ) ss << "\n";+ return ss.str(); } void HtmlGenerator::insertLineNumber ( bool insertNewLine )@@ -367,8 +385,6 @@ void HtmlGenerator::insertLineNumber ( bool insertNewLine ) << lineID << ">"; }- // Opera 8 ignores empty list items -> add - //if ( line.empty() ) numberPrefix<<" "; } if ( !orderedList ) {@@ -394,7 +410,6 @@ void HtmlGenerator::insertLineNumber ( bool insertNewLine ) } wsBuffer += numberPrefix.str(); }- } bool HtmlGenerator::printIndexFile ( const vector<string> &fileList,@@ -476,7 +491,7 @@ string HtmlGenerator::getKeywordCloseTag ( unsigned int styleID ) void HtmlGenerator::setHTMLOrderedList ( bool b ) { orderedList = b;- if( b ) spacer = " ";+ if ( b ) spacer = " "; maskWs = b; if (b && !preFormatter.getReplaceTabs()) {@@ -485,4 +500,20 @@ void HtmlGenerator::setHTMLOrderedList ( bool b ) } } +string HtmlGenerator::getHoverTagOpen(const string & hoverText)+{+ ostringstream os;+ if ( useInlineCSS ) {+ os << "<span style=\""<<getAttributes ( "", docStyle.getHoverStyle() ) << "\" title=\""<<hoverText<<"\">";+ } else {+ os << "<span class=\""<< (cssClassName.empty() ? "":cssClassName+ " ") << STY_NAME_HVR << "\" title=\""<<hoverText<<"\">";+ }+ return os.str();+}++string HtmlGenerator::getHoverTagClose()+{+ return "</span>";+}+ }
@@ -184,6 +184,9 @@ void LatexGenerator::initOutputTags() openTags.push_back ( "\\hl"+STY_NAME_SYM+"{" ); openTags.push_back ( "\\hl"+STY_NAME_IPL+"{" ); + openTags.push_back ( "\\hl"+STY_NAME_ERR+"{" );+ openTags.push_back ( "\\hl"+STY_NAME_ERM+"{" );+ for (unsigned int i=0; i<NUMBER_BUILTIN_STATES; i++ ) { closeTags.push_back ( "}" ); }@@ -193,43 +196,57 @@ string LatexGenerator::getAttributes ( const string & elemName, const ElementStyle &elem ) { ostringstream s;++ string customStyle(elem.getCustomStyle());+ s << "\\newcommand{\\hl"- << elemName- << "}[1]{\\textcolor[rgb]{"- << elem.getColour().getRed ( LATEX ) << ","- << elem.getColour().getGreen ( LATEX ) << ","- << elem.getColour().getBlue ( LATEX )- << "}{";-- if ( elem.isBold() )- s << "\\bf{";- if ( elem.isItalic() )- s << "\\it{";-- s <<"#1";-- if ( elem.isBold() )- s << "}";- if ( elem.isItalic() )- s << "}";-- s <<"}}\n";+ << elemName+ << "}[1]{";++ if (customStyle.empty()) {++ s <<"\\textcolor[rgb]{"+ << elem.getColour().getRed ( LATEX ) << ","+ << elem.getColour().getGreen ( LATEX ) << ","+ << elem.getColour().getBlue ( LATEX )+ << "}{";++ if ( elem.isBold() )+ s << "\\bf{";+ if ( elem.isItalic() )+ s << "\\it{";++ s <<"#1";++ if ( elem.isBold() )+ s << "}";+ if ( elem.isItalic() )+ s << "}";++ s <<"}";+ } else {+ s << customStyle;+ }+ s <<"}\n"; return s.str(); } string LatexGenerator::getNewLine() {- string nl;+ ostringstream ss;++ printSyntaxError(ss); // set wrapping arrow if previous line was wrapped if ( preFormatter.isWrappedLine ( lineNumber-1 ) ) {- nl = "\\Righttorque";+ ss << "\\Righttorque"; }- nl += ( showLineNumbers ) ? newLineTag:longLineTag;- return nl;+ ss << (( showLineNumbers ) ? newLineTag:longLineTag);+ return ss.str(); } + string LatexGenerator::maskCharacter ( unsigned char c ) { switch ( c ) {@@ -323,6 +340,9 @@ string LatexGenerator::getStyleDefinition() os << getAttributes ( STY_NAME_IPL, docStyle.getInterpolationStyle() ); os << getAttributes ( STY_NAME_LIN, docStyle.getLineStyle() ); + os << getAttributes ( STY_NAME_ERR, docStyle.getErrorStyle() );+ os << getAttributes ( STY_NAME_ERM, docStyle.getErrorMessageStyle() );+ KeywordStyles styles = docStyle.getKeywordStyles(); for ( KSIterator it=styles.begin(); it!=styles.end(); it++ ) { os << getAttributes ( it->first, it->second );
@@ -0,0 +1,879 @@+/***************************************************************************+ * lspclient.cpp - description+ * -------------------+ * begin : Wed Jan 20 2021+ * copyright : (C) 2002-2021 by Andre Simon+ * email : a.simon@mailbox.org+ ***************************************************************************/+++/*+ * This file is part of Highlight.+ *+ * Highlight is free software: you can redistribute it and/or modify+ * it under the terms of the GNU General Public License as published by+ * the Free Software Foundation, either version 3 of the License, or+ * (at your option) any later version.+ *+ * Highlight is distributed in the hope that it will be useful,+ * but WITHOUT ANY WARRANTY; without even the implied warranty of+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the+ * GNU General Public License for more details.+ *+ * You should have received a copy of the GNU General Public License+ * along with Highlight. If not, see <http://www.gnu.org/licenses/>.+ */++#include "lspclient.h"+#include "stringtools.h"++#include <sstream>+#include <iostream>+#include <fstream>++#include <chrono>+#include <thread>++namespace highlight+{++ LSPClient::LSPClient():+ initialized(false),+ hoverProvider(false),+ semanticTokensProvider(false),+ logRequests(false),+ initDelay(0),+ msgId(1.0),+ lastErrorCode(0)+ {+ serverName=serverVersion="?";++ #ifdef WIN32+ g_hChildStd_IN_Rd = NULL;+ g_hChildStd_IN_Wr = NULL;+ g_hChildStd_OUT_Rd = NULL;+ g_hChildStd_OUT_Wr = NULL;+ #else+ pid=0;+ #endif+ }++ LSPClient::~LSPClient()+ {+ #ifdef WIN32+ if (initialized) {+ CloseHandle(g_hChildStd_OUT_Wr);+ CloseHandle(g_hChildStd_IN_Rd);+ CloseHandle(g_hChildStd_IN_Wr);+ CloseHandle(g_hChildStd_OUT_Rd);+ }+ #else+ if (initialized) {+ int status=0;+ kill(pid, SIGKILL); //send SIGKILL signal to the child process+ waitpid(pid, &status, 0);+ }+ #endif+ }++ void LSPClient::setExecutable ( const std::string& exec ) {+ executable = exec;+ }++ void LSPClient::setOptions (const std::vector<std::string>& o){+ options = o;+ }++ void LSPClient::setWorkspace ( const std::string& ws ){+ workspace = ws;+ }++ void LSPClient::setSyntax ( const std::string& syntax ){+ triggerSyntax = syntax;+ }++ void LSPClient::signal_callback_handler(int signum){+ }++ bool LSPClient::connect() {++ initialized=true;++ #ifdef WIN32++ // https://docs.microsoft.com/de-de/windows/win32/procthread/creating-a-child-process-with-redirected-input-and-output++ SECURITY_ATTRIBUTES saAttr;++ // Set the bInheritHandle flag so pipe handles are inherited.+ saAttr.nLength = sizeof(SECURITY_ATTRIBUTES);+ saAttr.bInheritHandle = TRUE;+ saAttr.lpSecurityDescriptor = NULL;++ // Create a pipe for the child process's STDOUT+ if (!CreatePipe(&g_hChildStd_OUT_Rd, &g_hChildStd_OUT_Wr, &saAttr, 0))+ return false;++ // Ensure the read handle to the pipe for STDOUT is not inherited+ if (!SetHandleInformation(g_hChildStd_OUT_Rd, HANDLE_FLAG_INHERIT, 0))+ return false;++ // Create a pipe for the child process's STDIN.+ if (!CreatePipe(&g_hChildStd_IN_Rd, &g_hChildStd_IN_Wr, &saAttr, 0))+ return false;++ // Ensure the write handle to the pipe for STDIN is not inherited.+ if (!SetHandleInformation(g_hChildStd_IN_Wr, HANDLE_FLAG_INHERIT, 0))+ return false;++ PROCESS_INFORMATION piProcInfo;+ STARTUPINFO siStartInfo;++ // Set up members of the PROCESS_INFORMATION structure.++ ZeroMemory( &piProcInfo, sizeof(PROCESS_INFORMATION) );++ // Set up members of the STARTUPINFO structure.+ // This structure specifies the STDIN and STDOUT handles for redirection.++ ZeroMemory( &siStartInfo, sizeof(STARTUPINFO) );+ siStartInfo.cb = sizeof(STARTUPINFO);+ siStartInfo.hStdError = g_hChildStd_OUT_Wr;+ siStartInfo.hStdOutput = g_hChildStd_OUT_Wr;+ siStartInfo.hStdInput = g_hChildStd_IN_Rd;+ siStartInfo.dwFlags |= STARTF_USESTDHANDLES;++ // Create the child process.++ std::string cmdLine(executable);+ for (auto& option : options) {+ cmdLine.append(" ");+ cmdLine.append(option);+ }++ if (logRequests) {+ std::cerr << "\nLSP CMD "<<cmdLine<<"\n";+ }++ BOOL bSuccess = CreateProcess(NULL,+ const_cast<LPSTR>(cmdLine.c_str()),+ NULL, // process security attributes+ NULL, // primary thread security attributes+ TRUE, // handles are inherited+ CREATE_NO_WINDOW, // creation flags+ NULL, // use parent's environment+ NULL, // use parent's current directory+ &siStartInfo, // STARTUPINFO pointer+ &piProcInfo); // receives PROCESS_INFORMATION++ // If an error occurs, exit the application.+ if ( ! bSuccess ) {+ std::cerr <<"highlight: CreateProcess failed\n";+ return false;+ } else {++ // Close handles to the child process and its primary thread.+ // Some applications might keep these handles to monitor the status+ // of the child process, for example.++ CloseHandle(piProcInfo.hProcess);+ CloseHandle(piProcInfo.hThread);+ }++ #else++ pipe(inpipefd);+ pipe(outpipefd);++ pid = fork();++ if (pid == 0)+ {++ // Child+ dup2(outpipefd[0], STDIN_FILENO);+ dup2(inpipefd[1], STDOUT_FILENO);+ dup2(inpipefd[1], STDERR_FILENO);++ #if __linux__+ //ask kernel to deliver SIGTERM in case the parent dies+ prctl(PR_SET_PDEATHSIG, SIGTERM);+ #endif++ //https://stackoverflow.com/questions/5797837/how-to-pass-a-vector-of-strings-to-execv+ std::vector<char*> cmdArgs;++ cmdArgs.push_back(const_cast<char*>(executable.c_str()));++ for (auto& option : options) {+ cmdArgs.push_back(const_cast<char*>(option.c_str()));+ }++ cmdArgs.push_back(NULL);++ // pass the vector's internal array to execvp+ char **command = cmdArgs.data();++ execvp(executable.c_str(), command);++ // Nothing below this line should be executed by child process. If so,+ // it means that the execl function wasn't successful, so lets exit:++ exit(1);+ }+ // The code below will be executed only by parent. You can write and read+ // from the child using pipefd descriptors, and you can send signals to+ // the process using its pid by kill() function. If the child process will+ // exit unexpectedly, the parent process will obtain SIGCHLD signal that+ // can be handled (e.g. you can respawn the child process).++ //close unused pipe ends+ close(outpipefd[0]);+ close(inpipefd[1]);++ signal(SIGPIPE, LSPClient::signal_callback_handler);+ #endif+ return true;+ }++ bool LSPClient::pipe_write_jsonrpc(const std::string &payload){+ std::ostringstream os;++ os << "Content-Length: " << payload.size() << "\r\n\r\n" <<payload;++ std::string msg (os.str());++ if (logRequests) {+ std::cerr << "LSP REQ:\n" << msg << "\n";+ }++ #ifdef WIN32++ DWORD dwWritten;++ BOOL bSuccess = WriteFile(g_hChildStd_IN_Wr, msg.c_str(), msg.length(), &dwWritten, NULL);++ if ( !bSuccess || (long unsigned int)dwWritten!=msg.size()) {+ return false;+ }++ #else++ ssize_t w = write(outpipefd[1], msg.c_str(), msg.size());++ if ((long unsigned int)w!=msg.size()) {+ return false;+ }+ #endif+ return true;+ }++ std::string LSPClient::pipe_read_jsonrpc(){++ std::string resultString;++ resultString.resize(128);+ bool readOK = false;++ #ifdef WIN32++ DWORD headerReadLen = 0;+ readOK = ReadFile(g_hChildStd_OUT_Rd, (void*)resultString.data(), 128, &headerReadLen, NULL);++ #else++ ssize_t headerReadLen=read(inpipefd[0], (char*)resultString.data(), 128);+ readOK = headerReadLen>0;++ #endif++ if (!readOK) {+ return "";+ }++ if (resultString.find("Content-Length:")==0) {++ // we need to read the length of the message first+ std::string payloadLenString = resultString.substr(16, resultString.find("\r\n")-16);+ unsigned int payloadLen = atoi(payloadLenString.c_str());++ // Skip all the headers since they end with two new lines+ size_t start = resultString.find("\r\n\r\n");++ if (start == string::npos) {+ return "";+ }++ start += 4;++ // delete header part+ resultString.erase(0, start);++ // https://github.com/dail8859/NppLSP/blob/master/src/LspClient.cpp+ // it is mandatory to tell ReadFile to read exactly the length of the+ // payload - otherwise no repeated WRITE/READ is possible++ // Probably need to grab more+#ifdef WIN32+ DWORD remainderReadLen = 0;+#else+ size_t remainderReadLen=0;+#endif+ size_t remainderLen=payloadLen - (headerReadLen - start);+ if (resultString.length() < (size_t)payloadLen ) {++ resultString.resize(payloadLen);++ #ifdef WIN32+ ReadFile(g_hChildStd_OUT_Rd, (void*)&resultString[headerReadLen - start],+ payloadLen - (headerReadLen - start), &remainderReadLen, NULL);+ #else+ remainderReadLen = read(inpipefd[0], &resultString[headerReadLen - start], remainderLen);+ #endif+ }++ if (remainderReadLen != remainderLen) {+ return "";+ }++ if (logRequests) {+ std::cerr << "LSP RES:\nContent-Length:" << payloadLen+ << "\n\n" << resultString << "\n";+ }+ return resultString;+ }++ return "";+ }+++ bool LSPClient::runInitialize(){++ picojson::object request;+ picojson::object params;+ picojson::object capabilities;+ picojson::value serverCapabilities;++ picojson::object textDocument, documentSymbol, semanticTokensClientCapabilities, requests;+ picojson::value nullValue;++ request["jsonrpc"] = picojson::value("2.0");+ request["id"] = picojson::value(msgId++);+ request["method"] = picojson::value("initialize");++ params["processId"] = picojson::value((float)getpid());++ // TODO workspaceFolders+ if (workspace.empty()){+ params["rootUri"] = picojson::value(nullValue);+ } else {+ params["rootUri"] = picojson::value("file://" + workspace);+ }++ requests["range"] = picojson::value(false);+ requests["full"] = picojson::value(true);++ vector<std::string> supportedTokenTypes {"keyword","number","regexp","operator","namespace","type","struct","class",+ "interface","enum","enumMember","typeParameter","function","method","property",+ "macro","variable","parameter", "event", "modifier", "comment", "string"};++ picojson::array myTokenTypes;+ for (auto const &type : supportedTokenTypes) {+ myTokenTypes.push_back(picojson::value(type));+ }++ vector<std::string> supportedModifiers {"documentation","declaration","definition","static","abstract","deprecated",+ "readonly", "async","modification","defaultLibrary"};++ picojson::array myTokenModifiers;+ for (auto const &mod : supportedModifiers) {+ myTokenModifiers.push_back(picojson::value(mod));+ }++ picojson::array formats;+ formats.push_back(picojson::value("relative"));++ semanticTokensClientCapabilities["requests"] = picojson::value(requests);++ semanticTokensClientCapabilities["tokenTypes"] = picojson::value(myTokenTypes);+ semanticTokensClientCapabilities["tokenModifiers"] = picojson::value(myTokenModifiers);+ semanticTokensClientCapabilities["formats"] = picojson::value(formats);++ semanticTokensClientCapabilities["overlappingTokenSupport"] = picojson::value(false);+ semanticTokensClientCapabilities["multilineTokenSupport"] = picojson::value(false);++ textDocument["semanticTokens"] = picojson::value(semanticTokensClientCapabilities);++ capabilities["textDocument"] = picojson::value(textDocument);++ //https://clangd.llvm.org/extensions.html#utf-8-offsets+ picojson::array offsetEncodings;+ offsetEncodings.push_back(picojson::value("utf-8"));+ capabilities["offsetEncoding"] = picojson::value(offsetEncodings);++ params["capabilities"] = picojson::value(capabilities);+ request["params"] = picojson::value(params);++ std::string serialized = picojson::value(request).serialize();++ pipe_write_jsonrpc(serialized);++ std::string response = pipe_read_jsonrpc();++ picojson::value jsonResponse;+ std::string err = picojson::parse(jsonResponse, response);++ if (!checkErrorResponse(jsonResponse, err)) {+ return false;+ }++ if ( !jsonResponse.get("result").is<picojson::object>()+ && !jsonResponse.get("result").get("capabilities").is<picojson::object>()) {++ return false;+ }++ if (jsonResponse.get("result").get("serverInfo").is<picojson::object>()) {+ serverName= jsonResponse.get("result").get("serverInfo").get("name").get<std::string>();+ serverVersion= jsonResponse.get("result").get("serverInfo").get("version").get<std::string>();+ }++ serverCapabilities = jsonResponse.get("result").get("capabilities");+ hoverProvider = serverCapabilities.get("hoverProvider").get<bool>();++ semanticTokensProvider = serverCapabilities.contains("semanticTokensProvider");++ if (semanticTokensProvider) {+ picojson::array list = serverCapabilities.get("semanticTokensProvider").get("legend").get("tokenTypes").get<picojson::array>();+ int cnt=0;+ for (picojson::array::iterator iter = list.begin(); iter != list.end(); ++iter) {+ tokenTypes.insert( make_pair( cnt++, iter->get<std::string>()));+ }++ picojson::array modifiersList = serverCapabilities.get("semanticTokensProvider").get("legend").get("tokenModifiers").get<picojson::array>();+ cnt=0;+ for (picojson::array::iterator iter = modifiersList.begin(); iter != modifiersList.end(); ++iter) {+ tokenModifiers.insert( make_pair( cnt++, iter->get<std::string>()));+ }+ }++ return true;+ }++ void LSPClient::readNotification(const picojson::value &json) {++ if (json.contains("method") && json.get("method").get<std::string>()=="textDocument/publishDiagnostics") {+ picojson::array diagnostics = json.get("params").get("diagnostics").get<picojson::array>();++ for (picojson::array::iterator iter = diagnostics.begin(); iter != diagnostics.end(); ++iter) {++ if ((int)iter->get("severity").get<double>() != 1){+ continue;+ }++ picojson::value range = iter->get("range");+ int startLine = (int) range.get("start").get("line").get<double>();+ int startCharacter = (int) range.get("start").get("character").get<double>();+ int endLine = (int) range.get("end").get("line").get<double>();+ int endCharacter = (int) range.get("end").get("character").get<double>();++ if (startLine == endLine && startCharacter<endCharacter) {+ // std::cerr<<"diag "<< startLine << " : "<<startCharacter << " - " << endCharacter<<"\n";+ std::string msg=iter->get("message").get<std::string>();+ std::replace(msg.begin(), msg.end(), '\n', ' ');+ errorMap[{ startLine+1, startCharacter+1 }] = highlight::SemanticToken(endCharacter-startCharacter, 1, msg);+ }+ }+ }+ }++ std::string LSPClient::runHover(const std::string &document, int character, int line){++ if (document.empty())+ return "";++ picojson::object request;+ picojson::object params;+ picojson::object position;+ picojson::object textDocument;++ float myId = ++msgId;++ request["jsonrpc"] = picojson::value("2.0");+ request["id"] = picojson::value(myId);+ request["method"] = picojson::value("textDocument/hover");++ std::string uri("file://");+ uri.append(document);+ textDocument["uri"] = picojson::value(uri);++ position["character"] = picojson::value((double)character);+ position["line"] = picojson::value((double)line);++ params["textDocument"] = picojson::value(textDocument);+ params["position"] = picojson::value(position);++ request["params"] = picojson::value(params);++ std::string serialized = picojson::value(request).serialize();++ bool writeRes=pipe_write_jsonrpc(serialized);++ if (!writeRes) {+ return "";+ }++ while (true) {++ std::string response = pipe_read_jsonrpc();++ picojson::value jsonResponse;+ std::string err = picojson::parse(jsonResponse, response);++ if (!checkErrorResponse(jsonResponse, err)) {+ return "";+ }++ if ( !jsonResponse.contains("id") ) {++ readNotification(jsonResponse);+ continue;+ }++ if ( myId != jsonResponse.get("id").get<double>()) {+ continue;+ }++ if ( !jsonResponse.get("result").is<picojson::object>() ) {+ return "";+ }++ // Apparently each server sends the Hover data slightly different:+ // maybe configure this in the lsp.conf++ std::string hoverList;++ if (jsonResponse.get("result").get("contents").is<std::string>()){+ //rls+ hoverList = jsonResponse.get("result").get("contents").get<std::string>();+ }+ else if (jsonResponse.get("result").get("contents").is<picojson::array>()){++ picojson::array list = jsonResponse.get("result").get("contents").get<picojson::array>();+ for (picojson::array::iterator iter = list.begin(); iter != list.end(); ++iter) {+ if ((*iter).is<std::string>()){+ // pyls+ hoverList.append( (*iter).get<std::string>());+ }+ else if ((*iter).is<picojson::object>()){+ //ccls+ if ((*iter).get("value").is<std::string>())+ hoverList = (*iter).get("value").get<std::string>();+ }+ }+ }+ else if (jsonResponse.get("result").get("contents").is<picojson::object>()){+ //clangd+ hoverList = jsonResponse.get("result").get("contents").get("value").get<std::string>();+ }++ return hoverList;+ }++ return "";+ }+++ bool LSPClient::runSemanticTokensFull(const std::string &document) {++ if (document.empty() || !semanticTokensProvider)+ return false;++ picojson::object request;+ picojson::object params;+ picojson::object textDocument;++ float myId = ++msgId;+ request["jsonrpc"] = picojson::value("2.0");+ request["id"] = picojson::value(myId);+ request["method"] = picojson::value("textDocument/semanticTokens/full");++ std::string uri("file://");+ uri.append(document);+ textDocument["uri"] = picojson::value(uri);++ params["textDocument"] = picojson::value(textDocument);++ request["params"] = picojson::value(params);++ std::string serialized = picojson::value(request).serialize();++ bool writeRes = pipe_write_jsonrpc(serialized);++ if (!writeRes) {++ return false;+ }++ std::string response;+ picojson::value jsonResponse;++ while (true) {+ response = pipe_read_jsonrpc();++ std::string err = picojson::parse(jsonResponse, response);++ if (!checkErrorResponse(jsonResponse, err)) {+ return false;+ }++ if ( !jsonResponse.contains("id") ) {++ readNotification(jsonResponse);+ continue;+ }++ if ( myId != jsonResponse.get("id").get<double>()) {+ continue;+ }++ if ( jsonResponse.get("result").is<picojson::object>() ) {+ break;+ }+ }++ vector<unsigned int> semAttributes;+ picojson::array list = jsonResponse.get("result").get("data").get<picojson::array>();+ for (picojson::array::iterator iter = list.begin(); iter != list.end(); ++iter) {+ semAttributes.push_back((unsigned int)iter->get<double>());+ }++ int semCnt = semAttributes.size();++ if (semCnt%5) {+ return false;+ }++ unsigned int line=0;+ unsigned int col=0;+ std::string id;+ for (int i=0; i<semCnt; i+=5){++ if (semAttributes[i]) col=0;+ line +=semAttributes[i];++ col +=semAttributes[i+1];+ id = tokenTypes[semAttributes[i+3]];++ //if (semAttributes[i+4]) {+ // std::cerr << "Mod! line "<<line<<" col "<< col << " id "<< id << " val "<<semAttributes[i+4]<<"\n";+ //}+ //std::cerr << "ST! line "<<line<<" col "<< col << " id "<< id << " val "<<semAttributes[i+3] <<"\n";++ // for now disable multiline elements+ if (id != "comment" && id != "string" && id != "macro") {+ tokenMap[{ line+1, col+1 }] = highlight::SemanticToken(semAttributes[i+2], semAttributes[i+3], id);+ }+ }++ return true;+ }++ bool LSPClient::tokenExists(unsigned int line, unsigned int col) {+ return semanticTokensProvider && tokenMap.count(make_tuple(line,col));+ }++ highlight::SemanticToken LSPClient::getToken(unsigned int line, unsigned int col) {+ return tokenMap.find(make_tuple(line,col))->second;+ }++ bool LSPClient::errorExists(unsigned int line, unsigned int col) {+ return errorMap.count(make_tuple(line,col));+ }++ highlight::SemanticToken LSPClient::getError(unsigned int line, unsigned int col) {+ return errorMap.find(make_tuple(line,col))->second;+ }++ bool LSPClient::runDidOpen(const std::string &document, const string& syntax){++ if (document.empty() || syntax != triggerSyntax)+ return false;++ std::ifstream t(document.c_str());+ std::stringstream buffer;+ buffer << t.rdbuf();++ picojson::object request;+ picojson::object params;+ picojson::object textDocument;++ request["jsonrpc"] = picojson::value("2.0");+ request["method"] = picojson::value("textDocument/didOpen");++ std::string uri("file://");+ uri.append(document);+ textDocument["uri"] = picojson::value(uri);+ textDocument["languageId"] = picojson::value(triggerSyntax);+ textDocument["text"] = picojson::value(buffer.str());+ textDocument["version"] = picojson::value(0.0);++ params["textDocument"] = picojson::value(textDocument);++ request["params"] = picojson::value(params);++ std::string serialized = picojson::value(request).serialize();++ pipe_write_jsonrpc(serialized);++ return true;+ }++ bool LSPClient::runDidClose(const std::string &document, const string& syntax){++ tokenMap.clear();+ errorMap.clear();++ if (document.empty() || syntax !=triggerSyntax)+ return false;++ picojson::object request;+ picojson::object params;+ picojson::object textDocument;++ request["jsonrpc"] = picojson::value("2.0");+ request["method"] = picojson::value("textDocument/didClose");++ std::string uri("file://");+ uri.append(document);+ textDocument["uri"] = picojson::value(uri);++ params["textDocument"] = picojson::value(textDocument);++ request["params"] = picojson::value(params);++ std::string serialized = picojson::value(request).serialize();++ pipe_write_jsonrpc(serialized);++ return true;+ }++ bool LSPClient::checkErrorResponse(const picojson::value &json, const string& picoError){+ lastErrorCode = 0;+ lastErrorMessage.clear();+ if (! picoError.empty()) {+ lastErrorCode = 1;+ lastErrorMessage = picoError;+ return false;+ }++ if (! json.is<picojson::object>()) {+ lastErrorCode = 2;+ lastErrorMessage = "could not initialize PicoJSON";+ return false;+ }++ if (json.get("error").is<picojson::object>()) {+ lastErrorCode = (int)json.get("error").get("code").get<double>();+ lastErrorMessage = json.get("error").get("message").get<std::string>();+ return false;+ }+ return true;+ }++ void LSPClient::runSimpleAction(const std::string action, int delay) {+ picojson::object request;+ //picojson::value nullValue;+ picojson::object emptyObject;++ request["jsonrpc"] = picojson::value("2.0");+ request["method"] = picojson::value(action);++ request["params"] = picojson::value(emptyObject);++ std::string serialized = picojson::value(request).serialize();++ pipe_write_jsonrpc(serialized);++ if (delay>0) {+ if (logRequests) {+ std::cerr << "waiting " << delay <<"ms for language server\n";+ }+ std::this_thread::sleep_for(std::chrono::milliseconds(delay));+ }+ }++ void LSPClient::runInitialized(){+ runSimpleAction("initialized", initDelay);+ }++ void LSPClient::runShutdown() {+ runSimpleAction("shutdown");+ }++ void LSPClient::runExit() {+ runSimpleAction("exit");+ }++ bool LSPClient::isInitialized() const {+ return initialized;+ }++ bool LSPClient::isHoverProvider() const {+ return hoverProvider;+ }++ bool LSPClient::isSemanticTokensProvider() const {+ return semanticTokensProvider;+ }++ void LSPClient::setLogging(bool flag){+ logRequests = flag;+ }++ void LSPClient::setInitializeDelay(int ms) {+ initDelay = ms;+ }++ std::string LSPClient::getServerName() const {+ return serverName;+ }+ std::string LSPClient::getServerVersion() const {+ return serverVersion;+ }++ std::string LSPClient::getErrorMessage() const {+ return lastErrorMessage;+ }++ int LSPClient::getErrorCode() const {+ return lastErrorCode;+ }++ int LSPClient::getSemanticTokenCount() const {+ return tokenTypes.size();+ }++}++/*+ *+ * //documentHighlightProvider, see https://github.com/microsoft/python-language-server/pull/1767+ * //referencesProvider,+ * //foldingRangeProvider+ *+ * //ccls and cquery -> semantic highlighting+ *+ * https://code.visualstudio.com/api/language-extensions/programmatic-language-features+ * https://code.visualstudio.com/api/language-extensions/syntax-highlight-guide+ * https://code.visualstudio.com/api/language-extensions/semantic-highlight-guide+ *+ * https://clangd.llvm.org/extensions.html#utf-8-offsets+ *+ * publishDiagnostics:+ * Your language server sends the textDocument/publishDiagnostics message to the language client. The message carries an array of diagnostic items for a resource URI.+ *+ * Note: The client does not ask the server for diagnostics. The server pushes the diagnostic information to the client.+ */+
@@ -64,7 +64,9 @@ string ODTGenerator::getStyleDefinition() << getAttributes ( STY_NAME_DIR, docStyle.getPreProcessorStyle() ) << getAttributes ( STY_NAME_SYM, docStyle.getOperatorStyle() ) << getAttributes ( STY_NAME_IPL, docStyle.getInterpolationStyle() )- << getAttributes ( STY_NAME_LIN, docStyle.getLineStyle() );+ << getAttributes ( STY_NAME_LIN, docStyle.getLineStyle() )+ << getAttributes ( STY_NAME_ERR, docStyle.getErrorStyle() )+ << getAttributes ( STY_NAME_ERM, docStyle.getErrorMessageStyle() ); KeywordStyles styles = docStyle.getKeywordStyles(); for ( KSIterator it=styles.begin(); it!=styles.end(); it++ ) {@@ -178,6 +180,8 @@ void ODTGenerator::initOutputTags () openTags.push_back ( getOpenTag ( STY_NAME_SYM ) ); openTags.push_back ( getOpenTag ( STY_NAME_IPL ) ); + openTags.push_back ( getOpenTag ( STY_NAME_ERR ) );+ openTags.push_back ( getOpenTag ( STY_NAME_ERM ) ); closeTags.push_back ( "" ); for (unsigned int i=1; i<NUMBER_BUILTIN_STATES; i++ ) { closeTags.push_back ( "</text:span>" );
@@ -40,14 +40,22 @@ string PangoGenerator::getOpenTag ( const ElementStyle & elem ) string PangoGenerator::getAttributes ( const ElementStyle & elem ) { ostringstream s;- s << "foreground=\"#"- << ( elem.getColour().getRed ( HTML ) )- << ( elem.getColour().getGreen ( HTML ) )- << ( elem.getColour().getBlue ( HTML ) )- << "\""- << ( elem.isBold() ? " weight=\"bold\"" :"" )- << ( elem.isItalic() ? " style=\"italic\"" :"" )- << ( elem.isUnderline() ? " underline=\"single\"" :"" );++ string customStyle(elem.getCustomStyle());++ if (customStyle.empty()) {+ s << "foreground=\"#"+ << ( elem.getColour().getRed ( HTML ) )+ << ( elem.getColour().getGreen ( HTML ) )+ << ( elem.getColour().getBlue ( HTML ) )+ << "\""+ << ( elem.isBold() ? " weight=\"bold\"" :"" )+ << ( elem.isItalic() ? " style=\"italic\"" :"" )+ << ( elem.isUnderline() ? " underline=\"single\"" :"" );+ } else {+ s << customStyle;+ }+ return s.str(); } @@ -74,6 +82,9 @@ void PangoGenerator::initOutputTags() openTags.push_back ( getOpenTag ( docStyle.getOperatorStyle() ) ); openTags.push_back ( getOpenTag ( docStyle.getInterpolationStyle() ) ); + openTags.push_back ( getOpenTag ( docStyle.getErrorStyle() ) );+ openTags.push_back ( getOpenTag ( docStyle.getErrorMessageStyle() ) );+ closeTags.push_back ( "" ); for (unsigned int i=1; i<NUMBER_BUILTIN_STATES; i++ ) { closeTags.push_back ( "</span>" );
@@ -261,6 +261,7 @@ void getFileNames ( const string &directory,const string &wildcard, vector<strin while ( ( entry = readdir ( dp ) ) != NULL ) { // get file status string entryFilepath = directory + pathSeparator + entry->d_name;+ if ( -1 == stat ( entryFilepath.c_str(), &statbuf ) || errno) { closedir ( dp ); return;
@@ -2,7 +2,7 @@ rtfcode.cpp - description ------------------- begin : Die Jul 9 2002- copyright : (C) 2002-2016 by Andre Simon+ copyright : (C) 2002-2021 by Andre Simon email : a.simon@mailbox.org ***************************************************************************/ @@ -152,6 +152,9 @@ void RtfGenerator::printBody() *out << getAttributes ( docStyle.getOperatorStyle() ); *out << getAttributes ( docStyle.getInterpolationStyle() ); + *out << getAttributes ( docStyle.getErrorStyle() );+ *out << getAttributes ( docStyle.getErrorMessageStyle() );+ /* For output formats which can refer to external styles it is more safe to use the colour theme's keyword class names, since the language definitions (which may change during a batch conversion) do not have to define@@ -188,6 +191,10 @@ void RtfGenerator::printBody() *out << getCharStyle ( LINENUMBER, docStyle.getLineStyle(), "HL Line" ); *out << getCharStyle ( SYMBOL, docStyle.getOperatorStyle(), "HL Operator" ); *out << getCharStyle ( STRING_INTERPOLATION, docStyle.getInterpolationStyle(), "HL Interpolation" );++ *out << getCharStyle ( SYNTAX_ERROR, docStyle.getErrorStyle(), "HL Error" );+ *out << getCharStyle ( SYNTAX_ERROR_MSG, docStyle.getErrorMessageStyle(), "HL Warning" );+ char styleName[20]; for ( unsigned int i=0; i<keywordClasses.size(); i++ ) { sprintf ( styleName, "HL Keyword %c", 'A'+i ); //maybe better simple numbering@@ -235,6 +242,9 @@ void RtfGenerator::initOutputTags ( ) openTags.push_back ( getOpenTag ( SYMBOL, docStyle.getOperatorStyle() ) ); openTags.push_back ( getOpenTag ( STRING_INTERPOLATION, docStyle.getInterpolationStyle()) ); + openTags.push_back ( getOpenTag ( SYNTAX_ERROR, docStyle.getErrorStyle() ) );+ openTags.push_back ( getOpenTag ( SYNTAX_ERROR_MSG, docStyle.getErrorMessageStyle()) );+ closeTags.push_back ( getCloseTag ( docStyle.getDefaultStyle() ) ); closeTags.push_back ( getCloseTag ( docStyle.getStringStyle() ) ); closeTags.push_back ( getCloseTag ( docStyle.getNumberStyle() ) );@@ -246,6 +256,9 @@ void RtfGenerator::initOutputTags ( ) closeTags.push_back ( getCloseTag ( docStyle.getLineStyle() ) ); closeTags.push_back ( getCloseTag ( docStyle.getOperatorStyle() ) ); closeTags.push_back ( getCloseTag ( docStyle.getInterpolationStyle() ) );++ closeTags.push_back ( getCloseTag ( docStyle.getErrorStyle()) );+ closeTags.push_back ( getCloseTag ( docStyle.getErrorMessageStyle()) ); } string RtfGenerator::maskCharacter ( unsigned char c )
@@ -2,7 +2,7 @@ stringtools.cpp - description ------------------- begin : Mon Dec 10 2001- copyright : (C) 2001-2010 by Andre Simon+ copyright : (C) 2001-2021 by Andre Simon email : a.simon@mailbox.org ***************************************************************************/
@@ -59,6 +59,8 @@ void SVGGenerator::initOutputTags() openTags.push_back ( getOpenTag ( STY_NAME_LIN ) ); openTags.push_back ( getOpenTag ( STY_NAME_SYM ) ); openTags.push_back ( getOpenTag ( STY_NAME_IPL ) );+ openTags.push_back ( getOpenTag ( STY_NAME_ERR ) );+ openTags.push_back ( getOpenTag ( STY_NAME_ERM ) ); closeTags.push_back ( "" ); for (unsigned int i=1; i<NUMBER_BUILTIN_STATES; i++ ) {@@ -70,6 +72,7 @@ string SVGGenerator::getStyleDefinition() { if (disableStyleCache || styleDefinitionCache.empty() ) { ostringstream os;+ string tspan("tspan."); if ( includeStyleDef ) { os << "<style type=\"text/css\">\n" << "<![CDATA[\n";@@ -82,20 +85,23 @@ string SVGGenerator::getStyleDefinition() os << "g { font-size: " << getBaseFontSize(); os << "; font-family: " << getBaseFont() << "; white-space: pre;}\n"; os << getAttributes ( "text", docStyle.getDefaultStyle() )- << getAttributes ( "tspan."+STY_NAME_NUM, docStyle.getNumberStyle() )- << getAttributes ( "tspan."+STY_NAME_ESC, docStyle.getEscapeCharStyle() )- << getAttributes ( "tspan."+STY_NAME_STR, docStyle.getStringStyle() )- << getAttributes ( "tspan."+STY_NAME_DST, docStyle.getPreProcStringStyle() )- << getAttributes ( "tspan."+STY_NAME_SLC, docStyle.getSingleLineCommentStyle() )- << getAttributes ( "tspan."+STY_NAME_COM, docStyle.getCommentStyle() )- << getAttributes ( "tspan."+STY_NAME_DIR, docStyle.getPreProcessorStyle() )- << getAttributes ( "tspan."+STY_NAME_SYM, docStyle.getOperatorStyle() )- << getAttributes ( "tspan."+STY_NAME_IPL, docStyle.getInterpolationStyle() )- << getAttributes ( "tspan."+STY_NAME_LIN, docStyle.getLineStyle() );+ << getAttributes ( tspan+STY_NAME_NUM, docStyle.getNumberStyle() )+ << getAttributes ( tspan+STY_NAME_ESC, docStyle.getEscapeCharStyle() )+ << getAttributes ( tspan+STY_NAME_STR, docStyle.getStringStyle() )+ << getAttributes ( tspan+STY_NAME_DST, docStyle.getPreProcStringStyle() )+ << getAttributes ( tspan+STY_NAME_SLC, docStyle.getSingleLineCommentStyle() )+ << getAttributes ( tspan+STY_NAME_COM, docStyle.getCommentStyle() )+ << getAttributes ( tspan+STY_NAME_DIR, docStyle.getPreProcessorStyle() )+ << getAttributes ( tspan+STY_NAME_SYM, docStyle.getOperatorStyle() )+ << getAttributes ( tspan+STY_NAME_IPL, docStyle.getInterpolationStyle() )+ << getAttributes ( tspan+STY_NAME_LIN, docStyle.getLineStyle() );++ os << getAttributes ( tspan+STY_NAME_ERM, docStyle.getErrorMessageStyle() );+ os << getAttributes ( tspan+STY_NAME_ERR, docStyle.getErrorStyle() ); KeywordStyles styles = docStyle.getKeywordStyles(); for ( KSIterator it=styles.begin(); it!=styles.end(); it++ ) {- os << getAttributes ( "tspan."+it->first, it->second );+ os << getAttributes ( tspan+it->first, it->second ); } if ( includeStyleDef ) { os << "]]>\n"@@ -111,16 +117,24 @@ string SVGGenerator::getAttributes ( const string & elemName, const ElementStyle & elem ) { ostringstream s;++ string customStyle(elem.getCustomStyle());+ if ( !elemName.empty() ) { s << elemName << " { "; }- s << "fill:#"- << ( elem.getColour().getRed ( HTML ) )- << ( elem.getColour().getGreen ( HTML ) )- << ( elem.getColour().getBlue ( HTML ) )- << ( elem.isBold() ? "; font-weight:bold" :"" )- << ( elem.isItalic() ? "; font-style:italic" :"" )- << ( elem.isUnderline() ? "; text-decoration:underline" :"" );++ if (customStyle.empty()) {+ s << "fill:#"+ << ( elem.getColour().getRed ( HTML ) )+ << ( elem.getColour().getGreen ( HTML ) )+ << ( elem.getColour().getBlue ( HTML ) )+ << ( elem.isBold() ? "; font-weight:bold" :"" )+ << ( elem.isItalic() ? "; font-style:italic" :"" )+ << ( elem.isUnderline() ? "; text-decoration:underline" :"" );+ } else {+ s << customStyle;+ } if ( !elemName.empty() ) { s << "; }\n" ; }@@ -222,16 +236,16 @@ string SVGGenerator::getKeywordCloseTag ( unsigned int styleID ) string SVGGenerator::getNewLine() {+ ostringstream ss;++ printSyntaxError(ss); if ( lineNumber>1 ) {- ostringstream os; int fontSize=0; StringTools::str2num<int> ( fontSize, getBaseFontSize(), std::dec );- os<< "</text>\n<text x=\"10\" y=\""<< ( lineNumber*fontSize*2 ) <<"\">";- return os.str();- } else {- return "";+ ss<< "</text>\n<text x=\"10\" y=\""<< ( lineNumber*fontSize*2 ) <<"\">"; }+ return ss.str(); } void SVGGenerator::setSVGSize ( const string& w, const string& h )
@@ -68,6 +68,7 @@ SyntaxReader::SyntaxReader() : paramsNeedUpdate(false), rawStringPrefix(0), continuationChar(0),+ keywordCount(0), validateStateChangeFct(NULL), decorateFct(NULL), decorateLineBeginFct(NULL),@@ -251,6 +252,8 @@ LoadResult SyntaxReader::load ( const string& langDefPath, const string& pluginR idx++; } + keywordCount = kwId;+ if (globals.count("KeywordFormatHints")) { idx=1; Diluculum::LuaValue lVal = ls["KeywordFormatHints"][idx].value();@@ -539,18 +542,21 @@ bool SyntaxReader::allowsInnerSection(const string& langPath) return allowInnerSections[langPath]; } -unsigned int SyntaxReader::generateNewKWClass ( int classID )+unsigned int SyntaxReader::generateNewKWClass ( int classID, const char *prefix ) { char className[5]= {0};- snprintf(className, sizeof(className), "kw%c", ('a'+classID-1));+ snprintf(className, sizeof(className), "%s%c", prefix, 'a'+classID-1); unsigned int newClassID=0; bool found=false;+ while (!keywordClasses.empty() && newClassID<keywordClasses.size() && !found ) {+ found = ( className==keywordClasses.at(newClassID++) ); } if ( !found ) { newClassID++;+ keywordClasses.push_back ( className ); } return newClassID;@@ -688,5 +694,8 @@ void SyntaxReader::clearPersistentSnippets() { persistentSnippets.clear(); } +int SyntaxReader::getKeywordCount() const {+ return keywordCount;+} }
@@ -2,7 +2,7 @@ TexGenerator.cpp - description ------------------- begin : Mit Jul 24 2002- copyright : (C) 2002 by Andre Simon+ copyright : (C) 2002-2021 by Andre Simon email : a.simon@mailbox.org ***************************************************************************/ @@ -42,7 +42,7 @@ TexGenerator::TexGenerator() mode, it switches it to horizontal mode).*/ newLineTag="\\leavevmode\\par\n"; - spacer = "\\ ";+ spacer = initialSpacer = "\\ "; maskWs=true; excludeWs=true; maskWsBegin = "{\\hlstd";@@ -67,6 +67,9 @@ void TexGenerator::initOutputTags() openTags.push_back ( "{\\hl"+STY_NAME_SYM+" " ); openTags.push_back ( "{\\hl"+STY_NAME_IPL+" " ); + openTags.push_back ( "{\\hl"+STY_NAME_ERR+" " );+ openTags.push_back ( "{\\hl"+STY_NAME_ERM+" " );+ for (unsigned int i=0; i<NUMBER_BUILTIN_STATES; i++ ) { closeTags.push_back ( "}" ); }@@ -75,15 +78,27 @@ void TexGenerator::initOutputTags() string TexGenerator::getAttributes ( const string & elemName,const ElementStyle & elem ) { ostringstream s;- s << "\\def\\hl"- << elemName- << "{";- if ( elem.isBold() ) s << "\\bf";- if ( elem.isItalic() ) s << "\\it";- s << "\\textColor{"- << ( elem.getColour().getRed ( TEX ) ) <<" "- << ( elem.getColour().getGreen ( TEX ) ) <<" "- << ( elem.getColour().getBlue ( TEX ) ) <<" 0.0}}\n";++ string customStyle(elem.getCustomStyle());++ s << "\\def\\hl"+ << elemName+ << "{";++ if (customStyle.empty()) {++ if ( elem.isBold() ) s << "\\bf";+ if ( elem.isItalic() ) s << "\\it";+ s << "\\textColor{"+ << ( elem.getColour().getRed ( TEX ) ) <<" "+ << ( elem.getColour().getGreen ( TEX ) ) <<" "+ << ( elem.getColour().getBlue ( TEX ) ) <<" 0.0}";+ } else {+ s << customStyle;+ }++ s << "}\n";+ return s.str(); } @@ -276,6 +291,9 @@ string TexGenerator::getStyleDefinition() os << getAttributes ( STY_NAME_SYM, docStyle.getOperatorStyle() ); os << getAttributes ( STY_NAME_IPL, docStyle.getInterpolationStyle() ); + os << getAttributes ( STY_NAME_ERR, docStyle.getErrorStyle() );+ os << getAttributes ( STY_NAME_ERM, docStyle.getErrorMessageStyle() );+ KeywordStyles styles = docStyle.getKeywordStyles(); for ( KSIterator it=styles.begin(); it!=styles.end(); it++ ) { os << getAttributes ( it->first, it->second );
@@ -34,7 +34,7 @@ along with Highlight. If not, see <http://www.gnu.org/licenses/>. namespace highlight { -ThemeReader::ThemeReader() : fileOK ( false ), restoreStyles(false), dirtyAttributes(false)+ ThemeReader::ThemeReader() : fileOK ( false ), restoreStyles(false), dirtyAttributes(false), keywordStyleCnt(0), outputType(HTML) {} ThemeReader::~ThemeReader()@@ -44,8 +44,42 @@ ThemeReader::~ThemeReader() } } +OutputType ThemeReader::getOutputType(const string &typeDesc) {++ if (typeDesc=="html" || typeDesc=="xhtml") return HTML;++ if (typeDesc=="rtf") return RTF;+ if (typeDesc=="latex") return LATEX;+ if (typeDesc=="tex") return TEX;+ if (typeDesc=="rtf") return RTF;+ if (typeDesc=="ansi") return ESC_ANSI;+ if (typeDesc=="xterm256") return ESC_XTERM256;+ if (typeDesc=="truecolor") return ESC_TRUECOLOR;++ if (typeDesc=="svg") return SVG;+ if (typeDesc=="bbcode") return BBCODE;+ if (typeDesc=="pango") return PANGO;+ if (typeDesc=="odt") return ODTFLAT;+ return HTML;+}+ void ThemeReader::initStyle(ElementStyle& style, const Diluculum::LuaVariable& var) {++ if (var["Custom"].value()!=Diluculum::Nil) {++ int idx=1;++ while (var["Custom"][idx].value() !=Diluculum::Nil) {++ if (getOutputType(var["Custom"][idx]["Format"].value().asString()) == outputType) {+ style.setCustomStyle (var["Custom"][idx]["Style"].value().asString() );+ return;+ }+ idx++;+ }+ }+ string styleColor="#000000"; bool styleBold=false, styleItalic=false, styleUnderline=false; @@ -62,11 +96,17 @@ void ThemeReader::initStyle(ElementStyle& style, const Diluculum::LuaVariable& v style.setBold(styleBold); style.setItalic(styleItalic); style.setUnderline(styleUnderline);++ if (var["Underline"].value()!=Diluculum::Nil)+ styleUnderline= var["Underline"].value().asBoolean(); } -bool ThemeReader::load ( const string &styleDefinitionPath , OutputType type)+bool ThemeReader::load ( const string &styleDefinitionPath , OutputType type, bool loadSemanticStyles) { try {++ outputType = type;+ fileOK=true; Diluculum::LuaState ls;@@ -83,9 +123,9 @@ bool ThemeReader::load ( const string &styleDefinitionPath , OutputType type) ls["HL_FORMAT_BBCODE"]=BBCODE; ls["HL_FORMAT_PANGO"]=PANGO; ls["HL_FORMAT_ODT"]=ODTFLAT;- ls["HL_OUTPUT"] = type;+ ls["HL_OUTPUT"] = outputType; ls.doString("Injections={}");- + lua_register (ls.getState(), "StoreValue", KeyStore::luaStore); ls.doFile (styleDefinitionPath);@@ -96,7 +136,7 @@ bool ThemeReader::load ( const string &styleDefinitionPath , OutputType type) Diluculum::LuaValueMap categoryMap; categoryMap = ls["Categories"].value().asTable();- + for(Diluculum::LuaValueMap::const_iterator it = categoryMap.begin(); it != categoryMap.end(); ++it) { categories.append(it->second.asString());@@ -105,7 +145,7 @@ bool ThemeReader::load ( const string &styleDefinitionPath , OutputType type) } } }- + if (pluginChunks.size()) { Diluculum::LuaValueList params; params.push_back(desc);@@ -127,18 +167,66 @@ bool ThemeReader::load ( const string &styleDefinitionPath , OutputType type) initStyle(line, ls["LineNum"]); initStyle(operators, ls["Operator"]); + errorMessages.setBold(true);+ errorMessages.setColour(Colour("#ff0000"));++ if (outputType==HTML || outputType==XHTML) {+ hover.setCustomStyle ("cursor:help");+ errorMessages.setCustomStyle ("color:red; border:solid 1px red; margin-left: 3em");++ ostringstream lineColourFmt;+ Colour lineColour = line.getColour();+ lineColourFmt << "#"<<lineColour.getRed(HTML)<<lineColour.getGreen(HTML)<<lineColour.getBlue(HTML);+ line.setCustomStyle("user-select: none; color: " + lineColourFmt.str());+ }++ if (outputType==LATEX) {+ errorMessages.setCustomStyle ("\\marginpar{\\small\\itshape\\color{red}#1}");+ }++ if (ls["ErrorMessage"].value() !=Diluculum::Nil){+ initStyle(errorMessages, ls["ErrorMessage"]);+ }++ if (ls["Hover"].value() !=Diluculum::Nil){+ initStyle(hover, ls["Hover"]);+ }++ errors.setBold(true);+ errors.setColour(Colour("#ff0000"));+ if (ls["Error"].value() !=Diluculum::Nil){+ initStyle(errors, ls["Error"]);+ }+ int idx=1; ElementStyle kwStyle; char kwName[5];- while (ls["Keywords"][idx].value() !=Diluculum::Nil) {+ while (ls["Keywords"][idx].value() !=Diluculum::Nil && idx < 27) { initStyle(kwStyle, ls["Keywords"][idx]); snprintf(kwName, sizeof(kwName), "kw%c", ('a'+idx-1)); keywordStyles.insert ( make_pair ( string(kwName), kwStyle )); idx++; }- ++ keywordStyleCnt = idx - 1;++ if (loadSemanticStyles && ls["SemanticTokenTypes"].value() !=Diluculum::Nil) {++ idx=1;+ while (ls["SemanticTokenTypes"][idx].value() !=Diluculum::Nil && idx < 27) {++ initStyle(kwStyle, ls["SemanticTokenTypes"][idx]["Style"]);+ snprintf(kwName, sizeof(kwName), "st%c", ('a'+idx+-1));+ keywordStyles.insert ( make_pair ( string(kwName), kwStyle ));+ semanticStyleMap[ls["SemanticTokenTypes"][idx]["Type"].value().asString()] = keywordStyleCnt + idx;+ //std::cerr<<"semanticStyleMap "<< (ls["SemanticTokenTypes"][idx]["Type"].value().asString()) << " -> "<< keywordStyleCnt + idx<<"\n";++ idx++;+ }+ }+ originalStyles=keywordStyles;- + idx=1; while (ls["Injections"][idx].value() !=Diluculum::Nil) { themeInjections +=ls["Injections"][idx].value().asString();@@ -159,6 +247,19 @@ bool ThemeReader::load ( const string &styleDefinitionPath , OutputType type) return fileOK; } +int ThemeReader::getSemanticStyle(const string &type) {++ return semanticStyleMap.count(type) ? semanticStyleMap[type] : 0;+}++int ThemeReader::getSemanticTokenStyleCount() const {+ return semanticStyleMap.size();+}++int ThemeReader::getKeywordStyleCount() const {+ return keywordStyleCnt;+}+ string ThemeReader::getErrorMessage() const { return errorMsg;@@ -224,6 +325,21 @@ ElementStyle ThemeReader::getOperatorStyle() const return operators; } +ElementStyle ThemeReader::getHoverStyle() const+{+ return hover;+}++ElementStyle ThemeReader::getErrorStyle() const+{+ return errors;+}++ElementStyle ThemeReader::getErrorMessageStyle() const+{+ return errorMessages;+}+ bool ThemeReader::found () const { return fileOK;@@ -255,19 +371,19 @@ string ThemeReader::getInjections() const } void ThemeReader::overrideAttributes(vector<int>& attributes) {- + if (dirtyAttributes) keywordStyles=originalStyles;- + for ( std::vector<int>::iterator it = attributes.begin() ; it != attributes.end(); ++it) { int kwGroup=*it & 0xf; char kwName[5]; snprintf(kwName, sizeof(kwName), "kw%c", ('a'+kwGroup-1));- + if (keywordStyles.count ( kwName)) {- - ElementStyle elem = keywordStyles[kwName]; ++ ElementStyle elem = keywordStyles[kwName]; if (*it & 128) elem.setBold(true); if (*it & 256) elem.setItalic(true); if (*it & 512) elem.setUnderline(true);@@ -280,21 +396,21 @@ void ThemeReader::overrideAttributes(vector<int>& attributes) { } } -float ThemeReader::getsRGB(int rgbValue) {+float ThemeReader::getsRGB(int rgbValue) const { float s = (float)rgbValue / 255; s = (s <= 0.03928) ? s / 12.92 : std::pow(((s + 0.055) / 1.055), 2.4); return s; } -float ThemeReader::getBrightness(const Colour& colour) {- return 0.2126*getsRGB(colour.getRed()) + - 0.7152*getsRGB(colour.getGreen()) + +float ThemeReader::getBrightness(const Colour& colour) const {+ return 0.2126*getsRGB(colour.getRed()) ++ 0.7152*getsRGB(colour.getGreen()) + 0.0722*getsRGB(colour.getBlue()); }-float ThemeReader::getContrast() {+float ThemeReader::getContrast() const { float canvasBrightness = getBrightness(canvas.getColour()); float defaultBrightness = getBrightness(defaultElem.getColour());- return (std::max(canvasBrightness, defaultBrightness) + 0.05) / + return (std::max(canvasBrightness, defaultBrightness) + 0.05) / (std::min(canvasBrightness, defaultBrightness) + 0.05); }
src/core/xterm256generator.cpp
@@ -2,7 +2,7 @@ xterm256generator.cpp - description ------------------- begin : Oct 13 2006- copyright : (C) 2006-2020 by Andre Simon+ copyright : (C) 2006-202 by Andre Simon email : a.simon@mailbox.org ***************************************************************************/ @@ -103,6 +103,9 @@ void Xterm256Generator::initOutputTags ( ) openTags.push_back ( getOpenTag ( docStyle.getOperatorStyle() ) ); openTags.push_back ( getOpenTag ( docStyle.getInterpolationStyle()) ); + openTags.push_back ( getOpenTag ( docStyle.getErrorStyle() ) );+ openTags.push_back ( getOpenTag ( docStyle.getErrorMessageStyle()) );+ for (unsigned int i=0; i<NUMBER_BUILTIN_STATES; i++ ) { closeTags.push_back ( "\033[m" ); }@@ -149,7 +152,10 @@ string Xterm256Generator::getKeywordCloseTag ( unsigned int styleID ) string Xterm256Generator::getNewLine() {- string nlStr;++ ostringstream ss;++ printSyntaxError(ss); if (canvasPadding>0) { unsigned int lastLineLength=getLastLineLength();@@ -158,13 +164,16 @@ string Xterm256Generator::getNewLine() if (lastLineLength<512 && lastLineLength > canvasPadding && lastLineLength) canvasPadding = lastLineLength; - nlStr += canvasColSeq;+ ss << canvasColSeq; if (canvasPadding > lastLineLength)- nlStr += string(canvasPadding - lastLineLength, ' ');- nlStr += "\033[m";+ ss << string(canvasPadding - lastLineLength, ' ');+ ss << "\033[m"; }- nlStr += (printNewLines) ? newLineTag : "";- return nlStr;++ if (printNewLines)+ ss << newLineTag;++ return ss.str(); } void Xterm256Generator::setESCTrueColor(bool b) {
@@ -7,5 +7,8 @@ <file>folder.png</file> <file>script.png</file> <file>clipboard.png</file>+ <file>script_blue.png</file>+ <file>ls_not_supported.png</file>+ <file>ls_supported.png</file> </qresource> </RCC>
@@ -9,64 +9,75 @@ Check installation.</source> <translation type="obsolete">Не са намерени теми или схеми за подреждане.</translation> </message> <message>- <location filename="mainwindow.cpp" line="138"/>- <location filename="mainwindow.cpp" line="158"/>+ <location filename="mainwindow.cpp" line="140"/>+ <location filename="mainwindow.cpp" line="155"/>+ <location filename="mainwindow.cpp" line="171"/> <source>Initialization error</source> <translation>Грешка при инициализация</translation> </message> <message>- <location filename="mainwindow.cpp" line="139"/>+ <location filename="mainwindow.cpp" line="141"/> <source>Could not read a colour theme: </source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="143"/>+ <location filename="mainwindow.cpp" line="145"/> <source>light</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="144"/>+ <location filename="mainwindow.cpp" line="146"/> <source>dark</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="145"/>+ <location filename="mainwindow.cpp" line="147"/> <source>B16 light</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="146"/>+ <location filename="mainwindow.cpp" line="148"/> <source>B16 dark</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="159"/>+ <location filename="mainwindow.cpp" line="151"/>+ <source>Please select a Server</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="156"/>+ <source>Could not find LSP profiles. Check installation.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="172"/> <source>Could not find syntax definitions. Check installation.</source> <translation>Не могат да бъдат открити синтактични определения. Проверете инсталацията.</translation> </message> <message>- <location filename="mainwindow.cpp" line="275"/>+ <location filename="mainwindow.cpp" line="296"/> <source>NTFS Short Names</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="275"/>+ <location filename="mainwindow.cpp" line="296"/> <source>NTFS short names may be disabled on your volumes. Highlight can not read input with multibyte file names if no short name is available. This information will no longer bother you.</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="278"/>+ <location filename="mainwindow.cpp" line="299"/> <source>Always at your service</source> <translation>Винаги на вашите услуги</translation> </message> <message>- <location filename="mainwindow.cpp" line="325"/>+ <location filename="mainwindow.cpp" line="343"/> <source>Select one or more files to open</source> <translation>Изберете един или повече файлове за отваряне</translation> </message> <message>- <location filename="mainwindow.cpp" line="362"/>+ <location filename="mainwindow.cpp" line="380"/> <source>Select destination directory</source> <translation>Изберете целева папка</translation> </message>@@ -79,117 +90,142 @@ Check installation.</source> <translation type="obsolete">Не може да бъде прочетена информация за маркери в "%1"</translation> </message> <message>- <location filename="mainwindow.cpp" line="1039"/>- <location filename="mainwindow.cpp" line="1070"/>+ <location filename="mainwindow.cpp" line="1130"/>+ <location filename="mainwindow.cpp" line="1161"/> <source>Output error</source> <translation>Изходна грешка</translation> </message> <message>- <location filename="mainwindow.cpp" line="1039"/>+ <location filename="mainwindow.cpp" line="1130"/> <source>Output directory does not exist!</source> <translation>Изходната папка не съществува!</translation> </message> <message>- <location filename="mainwindow.cpp" line="1070"/>+ <location filename="mainwindow.cpp" line="1161"/> <source>You must define a style output file!</source> <translation>Трябва да определите файл със стилови описания за изход!</translation> </message> <message>- <location filename="mainwindow.cpp" line="1119"/>+ <location filename="mainwindow.cpp" line="1213"/> <source>Processing %1 (%2/%3)</source> <translation>Обработка на %1 (%2/%3)</translation> </message> <message>- <location filename="mainwindow.cpp" line="1129"/>+ <location filename="mainwindow.cpp" line="1223"/> <source>Language definition error</source> <translation>Грешка в описанието на езика</translation> </message> <message>- <location filename="mainwindow.cpp" line="1130"/>+ <location filename="mainwindow.cpp" line="1224"/> <source>Invalid regular expression in %1: %2</source> <translation>Недействителен регулярен израз в %1: %2</translation> </message> <message>- <location filename="mainwindow.cpp" line="1134"/>+ <location filename="mainwindow.cpp" line="1228"/> <source>Unknown syntax</source> <translation>Непознат синтаксис</translation> </message> <message>- <location filename="mainwindow.cpp" line="1134"/>+ <location filename="mainwindow.cpp" line="1228"/> <source>Could not convert %1</source> <translation>Невъзможност за превръщане на %1</translation> </message> <message>- <location filename="mainwindow.cpp" line="1137"/>+ <location filename="mainwindow.cpp" line="1231"/> <source>Lua error</source> <translation>Lua грешка</translation> </message> <message>- <location filename="mainwindow.cpp" line="1137"/>+ <location filename="mainwindow.cpp" line="1231"/> <source>Could not convert %1: Lua Syntax error: %2</source> <translation>Невъзможност за превръщане на %1:\nLua синтактична грешка: %2</translation> </message> <message>- <location filename="mainwindow.cpp" line="1284"/>+ <location filename="mainwindow.cpp" line="1406"/> <source>Converted %1 files in %2 ms</source> <translation>%1 файла превърнати за %2 мс</translation> </message> <message>- <location filename="mainwindow.cpp" line="1473"/>+ <location filename="mainwindow.cpp" line="1610"/> <source>Conversion of "%1" not possible.</source> <translation>Превръщането на "%1" не е възможно.</translation> </message> <message>- <location filename="mainwindow.cpp" line="1473"/>- <location filename="mainwindow.cpp" line="1614"/>- <location filename="mainwindow.cpp" line="1660"/>+ <location filename="mainwindow.cpp" line="1610"/>+ <location filename="mainwindow.cpp" line="1758"/>+ <location filename="mainwindow.cpp" line="1813"/> <source>clipboard data</source> <translation>данни от системен буфер</translation> </message> <message>- <location filename="mainwindow.cpp" line="1544"/>+ <location filename="mainwindow.cpp" line="1689"/> <source>%1 options</source> <translation>%1 настройки</translation> </message> <message>- <location filename="mainwindow.cpp" line="1587"/>- <location filename="mainwindow.cpp" line="1598"/>+ <location filename="mainwindow.cpp" line="1730"/>+ <location filename="mainwindow.cpp" line="1741"/> <source>(user script)</source> <translation>(потребителски скрипт)</translation> </message> <message>- <location filename="mainwindow.cpp" line="1613"/>+ <location filename="mainwindow.cpp" line="1757"/> <source>Preview (%1):</source> <translation>Преглед (%1):</translation> </message> <message>- <location filename="mainwindow.cpp" line="1616"/>+ <location filename="mainwindow.cpp" line="1760"/> <source>Current syntax: %1 %2</source> <translation>Текущ синтаксис: %1 %2</translation> </message> <message>- <location filename="mainwindow.cpp" line="1617"/>+ <location filename="mainwindow.cpp" line="1761"/> <source>Current theme: %1 %2</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="1620"/>+ <location filename="mainwindow.cpp" line="1764"/> <source>Contrast: %1 %2</source> <translation type="unfinished"></translation> </message>+ <message>+ <location filename="mainwindow.cpp" line="2216"/>+ <source>Language server initialization successful</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="2221"/>+ <source>Language server connection failed</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="2223"/>+ <source>Language server initialization failed</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="2251"/>+ <source>Select workspace directory</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="2255"/>+ <source>Choose the Language Server executable</source>+ <translation type="unfinished"></translation>+ </message> <message> <source>Current syntax: %1</source> <translation type="vanished">Текущ синтаксис: %1</translation> </message> <message>- <location filename="mainwindow.cpp" line="1660"/>+ <location filename="mainwindow.cpp" line="1813"/> <source>Preview of "%1" not possible.</source> <translation>Преглед на "%1" не е възможен.</translation> </message> <message>- <location filename="mainwindow.cpp" line="1906"/>+ <location filename="mainwindow.cpp" line="2063"/> <source>Some plug-in effects may not be visible in the preview.</source> <translation>Някои ефекти от модули може да не са видими в прегледа.</translation> </message>@@ -198,20 +234,20 @@ Lua Syntax error: %2</source> <translation type="obsolete">Избор на ctags файл</translation> </message> <message>- <location filename="mainwindow.cpp" line="1700"/>- <location filename="mainwindow.cpp" line="1704"/>- <location filename="mainwindow.cpp" line="1708"/>- <location filename="mainwindow.cpp" line="1713"/>+ <location filename="mainwindow.cpp" line="1857"/>+ <location filename="mainwindow.cpp" line="1861"/>+ <location filename="mainwindow.cpp" line="1865"/>+ <location filename="mainwindow.cpp" line="1870"/> <source>Choose a style include file</source> <translation>Изберете файл със стилови описания за включване</translation> </message> <message>- <location filename="mainwindow.cpp" line="1718"/>+ <location filename="mainwindow.cpp" line="1875"/> <source>About providing translations</source> <translation>За предоставянето на преводи</translation> </message> <message>- <location filename="mainwindow.cpp" line="1719"/>+ <location filename="mainwindow.cpp" line="1876"/> <source>The GUI was developed using the Qt toolkit, and translations may be provided using the tools Qt Linguist and lrelease. The highlight.ts file for Linguist resides in the src/gui-qt subdirectory. The qm file generated by lrelease has to be saved in gui-files/l10n.@@ -224,17 +260,17 @@ Please send a note to as (at) andre-simon (dot) de if you have issues during tra Моля, пишете на as (at) andre-simon (dot) de ако имате проблeми при превода или ако сте завършили или обновили превод.</translation> </message> <message>- <location filename="mainwindow.cpp" line="1777"/>+ <location filename="mainwindow.cpp" line="1934"/> <source>Select one or more plug-ins</source> <translation>Изберете един или повече модули</translation> </message> <message>- <location filename="mainwindow.cpp" line="1788"/>+ <location filename="mainwindow.cpp" line="1945"/> <source>Select one or more syntax or theme scripts</source> <translation>Изберете един или повече синтактични или тематични скриптове</translation> </message> <message>- <location filename="mainwindow.cpp" line="1848"/>+ <location filename="mainwindow.cpp" line="2005"/> <source>Choose a plug-in input file</source> <translation>Изберете входен файл с модул</translation> </message>@@ -297,10 +333,12 @@ Please send a note to as (at) andre-simon (dot) de if you have issues during tra <message> <location filename="mainwindow.ui" line="310"/> <location filename="mainwindow.ui" line="669"/>- <location filename="mainwindow.ui" line="1333"/>- <location filename="mainwindow.ui" line="1602"/>- <location filename="mainwindow.ui" line="1710"/>- <location filename="mainwindow.ui" line="2005"/>+ <location filename="mainwindow.ui" line="819"/>+ <location filename="mainwindow.ui" line="884"/>+ <location filename="mainwindow.ui" line="1509"/>+ <location filename="mainwindow.ui" line="1778"/>+ <location filename="mainwindow.ui" line="1886"/>+ <location filename="mainwindow.ui" line="2181"/> <source>...</source> <translation>...</translation> </message>@@ -319,78 +357,78 @@ Please send a note to as (at) andre-simon (dot) de if you have issues during tra <translation type="obsolete">Опции за изход</translation> </message> <message>- <location filename="mainwindow.ui" line="788"/>+ <location filename="mainwindow.ui" line="964"/> <source>General</source> <translation>Общи</translation> </message> <message>- <location filename="mainwindow.ui" line="808"/>+ <location filename="mainwindow.ui" line="984"/> <source>Output for&mat:</source> <oldsource>Output format:</oldsource> <translation>Изходен фор&мат:</translation> </message> <message>- <location filename="mainwindow.ui" line="830"/>+ <location filename="mainwindow.ui" line="1006"/> <source>Choose an output format.</source> <translation>Избор на изходен формат.</translation> </message> <message>- <location filename="mainwindow.ui" line="834"/>+ <location filename="mainwindow.ui" line="1010"/> <source>HTML</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="839"/>+ <location filename="mainwindow.ui" line="1015"/> <source>XHTML</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="844"/>+ <location filename="mainwindow.ui" line="1020"/> <source>LaTeX</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="849"/>+ <location filename="mainwindow.ui" line="1025"/> <source>TeX</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="854"/>+ <location filename="mainwindow.ui" line="1030"/> <source>RTF</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="859"/>+ <location filename="mainwindow.ui" line="1035"/> <source>ODT</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="864"/>+ <location filename="mainwindow.ui" line="1040"/> <source>SVG</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="874"/>+ <location filename="mainwindow.ui" line="1050"/> <source>ANSI ESC</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="879"/>+ <location filename="mainwindow.ui" line="1055"/> <source>XTerm256 ESC</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="884"/>+ <location filename="mainwindow.ui" line="1060"/> <source>Truecolor ESC</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="903"/>+ <location filename="mainwindow.ui" line="1079"/> <source>Add line numbers to the output.</source> <translation>Добавяне на номера на редове в изхода.</translation> </message> <message>- <location filename="mainwindow.ui" line="906"/>+ <location filename="mainwindow.ui" line="1082"/> <source>Add line numbers</source> <translation>Добавяне на номера на редове</translation> </message>@@ -399,49 +437,49 @@ Please send a note to as (at) andre-simon (dot) de if you have issues during tra <translation type="vanished">Задаване на начало на номерацията</translation> </message> <message>- <location filename="mainwindow.ui" line="945"/>+ <location filename="mainwindow.ui" line="1121"/> <source>Select the line number width.</source> <translation>Избора на дължина на номера на реда.</translation> </message> <message>- <location filename="mainwindow.ui" line="966"/>+ <location filename="mainwindow.ui" line="1142"/> <source>Fill leading space of line numbers with zeroes.</source> <translation>Подпълване на номерата на редове с водещи нули.</translation> </message> <message>- <location filename="mainwindow.ui" line="969"/>+ <location filename="mainwindow.ui" line="1145"/> <source>Pad with zeroes</source> <translation>Подпълване с нули</translation> </message> <message>- <location filename="mainwindow.ui" line="982"/>+ <location filename="mainwindow.ui" line="1158"/> <source>Generate output without document header and footer.</source> <translation>Създаване на изход без горен и долен колонтитул.</translation> </message> <message>- <location filename="mainwindow.ui" line="985"/>+ <location filename="mainwindow.ui" line="1161"/> <source>Omit header and footer</source> <translation>Пропускане на горен и долен колонтитул</translation> </message> <message>- <location filename="mainwindow.ui" line="992"/>+ <location filename="mainwindow.ui" line="1168"/> <source>Output any plug-in text injections even if document header and footer is omitted.</source> <translation>Извеждане на всеки текст вмъкнат от модули дори ако горен и долен колонтитул са пропуснати.</translation> </message> <message>- <location filename="mainwindow.ui" line="995"/>+ <location filename="mainwindow.ui" line="1171"/> <source>Keep Plug-In injections</source> <translation>Запазване на текста вмъкнат от модули</translation> </message> <message>- <location filename="mainwindow.ui" line="1002"/>+ <location filename="mainwindow.ui" line="1178"/> <source>Test if input data is not binary. Removes Unicode BOM mark.</source> <translation>Проверява дали входните данни не са двоични. Премахва Unicode BOM.</translation> </message> <message>- <location filename="mainwindow.ui" line="1006"/>+ <location filename="mainwindow.ui" line="1182"/> <source>Validate input data</source> <translation>Проверка на входни данни</translation> </message>@@ -450,25 +488,25 @@ Removes Unicode BOM mark.</source> <translation type="vanished">Задаване кодирането на изходния файл.</translation> </message> <message>- <location filename="mainwindow.ui" line="1843"/>+ <location filename="mainwindow.ui" line="2019"/> <source>I&mage width:</source> <translation>Дължина на &изображението:</translation> </message> <message>- <location filename="mainwindow.ui" line="1891"/>+ <location filename="mainwindow.ui" line="2067"/> <source>Height:</source> <oldsource>Image height:</oldsource> <translation>Височина:</translation> </message> <message>- <location filename="mainwindow.ui" line="2149"/>+ <location filename="mainwindow.ui" line="2328"/> <source>Reformat and indent your code. This feature is enabled for C, C++, C# and Java code.</source> <translation>Преформатиране и подреждане на кода. Тази възможност е налична за C, C++, C# и Java код.</translation> </message> <message>- <location filename="mainwindow.ui" line="2480"/>+ <location filename="mainwindow.ui" line="2662"/> <source>&Plug-Ins</source> <translation>&Модули</translation> </message>@@ -477,134 +515,139 @@ This feature is enabled for C, C++, C# and Java code.</source> <translation type="obsolete">Кодиране:</translation> </message> <message>- <location filename="mainwindow.ui" line="1035"/>+ <location filename="mainwindow.ui" line="1211"/> <source>Select or define the encoding. The result has to match the input file encoding.</source> <translation>Избор или определяне на кодиране. Резултата трябва да съвпада с кодирането на входния файл.</translation> </message> <message>- <location filename="mainwindow.ui" line="1046"/>+ <location filename="mainwindow.ui" line="1222"/> <source>ISO-8859-1</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1051"/>+ <location filename="mainwindow.ui" line="1227"/> <source>ISO-8859-2</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1056"/>+ <location filename="mainwindow.ui" line="1232"/> <source>ISO-8859-3</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1061"/>+ <location filename="mainwindow.ui" line="1237"/> <source>ISO-8859-4</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1066"/>+ <location filename="mainwindow.ui" line="1242"/> <source>ISO-8859-5</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1071"/>+ <location filename="mainwindow.ui" line="1247"/> <source>ISO-8859-6</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1076"/>+ <location filename="mainwindow.ui" line="1252"/> <source>ISO-8859-7</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1081"/>+ <location filename="mainwindow.ui" line="1257"/> <source>ISO-8859-8</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1086"/>+ <location filename="mainwindow.ui" line="1262"/> <source>ISO-8859-9</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1091"/>+ <location filename="mainwindow.ui" line="1267"/> <source>ISO-8859-10</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1096"/>+ <location filename="mainwindow.ui" line="1272"/> <source>ISO-8859-11</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1101"/>+ <location filename="mainwindow.ui" line="1277"/> <source>ISO-8859-12</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1106"/>+ <location filename="mainwindow.ui" line="1282"/> <source>ISO-8859-13</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1111"/>+ <location filename="mainwindow.ui" line="1287"/> <source>ISO-8859-14</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1116"/>+ <location filename="mainwindow.ui" line="1292"/> <source>ISO-8859-15</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1121"/>+ <location filename="mainwindow.ui" line="1297"/> <source>UTF-8</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1145"/>+ <location filename="mainwindow.ui" line="1321"/> <source>Output specific</source> <translation>Особености на изхода</translation> </message> <message>- <location filename="mainwindow.ui" line="1378"/>+ <location filename="mainwindow.ui" line="1554"/> <source>Add an anchor to each line.</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="1442"/>+ <location filename="mainwindow.ui" line="1618"/> <source>Add HTML MIME Type when copying code to the clipboard</source> <translation>Добавяне на HTML MIME-Type при копиране на код в системния буфер</translation> </message> <message>- <location filename="mainwindow.ui" line="1445"/>+ <location filename="mainwindow.ui" line="1621"/> <source>Copy with MIME type</source> <translation>Копиране с MIME-Type</translation> </message> <message>- <location filename="mainwindow.ui" line="1483"/>+ <location filename="mainwindow.ui" line="1659"/> <source>Adapt output for the Babel package</source> <translation>Приспособяване на изхода за пакета Babel</translation> </message> <message>- <location filename="mainwindow.ui" line="1493"/>+ <location filename="mainwindow.ui" line="1669"/> <source>Adapt output for the Beamer package</source> <translation>Приспособяване на изхода за пакета Beamer</translation> </message> <message>- <location filename="mainwindow.ui" line="1496"/>+ <location filename="mainwindow.ui" line="1672"/> <source>Add Beamer compatibility</source> <translation>Добавяне на Beamer съвместимост</translation> </message> <message>- <location filename="mainwindow.ui" line="1747"/>+ <location filename="mainwindow.ui" line="1923"/> <source>Set page color attribute to background color.</source> <translation>Задаване на атрибут за цвят на страница към цвят на фона.</translation> </message> <message>- <location filename="mainwindow.ui" line="2485"/>+ <location filename="mainwindow.ui" line="2536"/>+ <source>DejaVu Sans Mono</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="2667"/> <source>&File access trace (W32)</source> <translation type="unfinished"></translation> </message>@@ -617,26 +660,26 @@ The result has to match the input file encoding.</source> <translation type="obsolete">Стил</translation> </message> <message>- <location filename="mainwindow.ui" line="1194"/>- <location filename="mainwindow.ui" line="1520"/>- <location filename="mainwindow.ui" line="1628"/>- <location filename="mainwindow.ui" line="1923"/>+ <location filename="mainwindow.ui" line="1370"/>+ <location filename="mainwindow.ui" line="1696"/>+ <location filename="mainwindow.ui" line="1804"/>+ <location filename="mainwindow.ui" line="2099"/> <source>Include the style information in each output file.</source> <translation>Включване на стилова информация във всеки изходен файл.</translation> </message> <message>- <location filename="mainwindow.ui" line="1197"/>- <location filename="mainwindow.ui" line="1926"/>+ <location filename="mainwindow.ui" line="1373"/>+ <location filename="mainwindow.ui" line="2102"/> <source>Embed style (CSS)</source> <translation>Вграден стил (CSS)</translation> </message> <message>- <location filename="mainwindow.ui" line="1210"/>+ <location filename="mainwindow.ui" line="1386"/> <source>Add CSS information to each tag (do not use CSS class definitions).</source> <translation>Добавяне на CSS информация към всеки маркер (да не се използват CSS клас определения).</translation> </message> <message>- <location filename="mainwindow.ui" line="1213"/>+ <location filename="mainwindow.ui" line="1389"/> <source>Inline CSS</source> <translation>Вложен CSS</translation> </message>@@ -645,15 +688,15 @@ The result has to match the input file encoding.</source> <translation type="obsolete">Файл със стилове:</translation> </message> <message>- <location filename="mainwindow.ui" line="1273"/>- <location filename="mainwindow.ui" line="1656"/>- <location filename="mainwindow.ui" line="1951"/>+ <location filename="mainwindow.ui" line="1449"/>+ <location filename="mainwindow.ui" line="1832"/>+ <location filename="mainwindow.ui" line="2127"/> <source>Name of the referenced style file.</source> <translation>Име на използвания файл със стилове.</translation> </message> <message>- <location filename="mainwindow.ui" line="1276"/>- <location filename="mainwindow.ui" line="1954"/>+ <location filename="mainwindow.ui" line="1452"/>+ <location filename="mainwindow.ui" line="2130"/> <source>highlight.css</source> <translation></translation> </message>@@ -662,18 +705,18 @@ The result has to match the input file encoding.</source> <translation type="obsolete">Файл със стилове за включване:</translation> </message> <message>- <location filename="mainwindow.ui" line="1317"/>- <location filename="mainwindow.ui" line="1989"/>+ <location filename="mainwindow.ui" line="1493"/>+ <location filename="mainwindow.ui" line="2165"/> <source>Path of the CSS include file.</source> <translation>Път към CSS файла за включване.</translation> </message> <message>- <location filename="mainwindow.ui" line="1330"/>+ <location filename="mainwindow.ui" line="1506"/> <source>Select a CSS include file.</source> <translation>Избор на CSS файл за включване.</translation> </message> <message>- <location filename="mainwindow.ui" line="1227"/>+ <location filename="mainwindow.ui" line="1403"/> <source>CSS class prefix:</source> <translation>Представка за CSS клас:</translation> </message>@@ -683,7 +726,7 @@ The result has to match the input file encoding.</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="1240"/>+ <location filename="mainwindow.ui" line="1416"/> <source>Add a CSS class name prefix to avoid namespace clashes.</source> <translation>Добавяне на представка към имена на CSS класове за избягване на колизии с имена.</translation> </message>@@ -692,12 +735,12 @@ The result has to match the input file encoding.</source> <translation type="obsolete">Маркери и индекс файлове</translation> </message> <message>- <location filename="mainwindow.ui" line="1415"/>+ <location filename="mainwindow.ui" line="1591"/> <source>Generate an index file with hyperlinks to all outputted files.</source> <translation>Създаване на индекс файл с връзки към всички изходни файлове.</translation> </message> <message>- <location filename="mainwindow.ui" line="1418"/>+ <location filename="mainwindow.ui" line="1594"/> <source>Generate index file</source> <translation>Създаване на индекс файл</translation> </message>@@ -720,7 +763,7 @@ See ctags.sf.net for details.</source> <translation type="obsolete">Избор на ctags файл.</translation> </message> <message>- <location filename="mainwindow.ui" line="1359"/>+ <location filename="mainwindow.ui" line="1535"/> <source>Misc</source> <translation>Разни</translation> </message>@@ -729,22 +772,22 @@ See ctags.sf.net for details.</source> <translation type="vanished">Добавяне на котва към всеки ред.</translation> </message> <message>- <location filename="mainwindow.ui" line="1381"/>+ <location filename="mainwindow.ui" line="1557"/> <source>Add line anchors</source> <translation>Добавяне на котва към ред</translation> </message> <message>- <location filename="mainwindow.ui" line="1388"/>+ <location filename="mainwindow.ui" line="1564"/> <source>Add the filename as prefix to the anchors.</source> <translation>Добавяне името на файла като представка към името на котвата.</translation> </message> <message>- <location filename="mainwindow.ui" line="1391"/>+ <location filename="mainwindow.ui" line="1567"/> <source>Include file name in anchor</source> <translation>Включване на името на файла в котва</translation> </message> <message>- <location filename="mainwindow.ui" line="1398"/>+ <location filename="mainwindow.ui" line="1574"/> <source>Output the lines within an ordered list.</source> <translation>Извеждане на редовете в подреден списък.</translation> </message>@@ -753,7 +796,7 @@ See ctags.sf.net for details.</source> <translation type="obsolete">Подреден списък</translation> </message> <message>- <location filename="mainwindow.ui" line="1425"/>+ <location filename="mainwindow.ui" line="1601"/> <source>Add &lt;pre&gt; tags to the output, if the flag "No document header and footer" is selected.</source> <translation>Добавяне на &lt;pre&gt; маркери към изхода, когато флага "Пропускане на горен и долен колонтитул" е избран.</translation> </message>@@ -766,12 +809,12 @@ See ctags.sf.net for details.</source> <translation type="obsolete">LaTeX опции</translation> </message> <message>- <location filename="mainwindow.ui" line="1473"/>+ <location filename="mainwindow.ui" line="1649"/> <source>Replace quotes by dq sequences.</source> <translation>Заместване на кавички с dq последователности.</translation> </message> <message>- <location filename="mainwindow.ui" line="1476"/>+ <location filename="mainwindow.ui" line="1652"/> <source>Escape quotes</source> <translation>Заместване на кавички</translation> </message>@@ -784,7 +827,7 @@ See ctags.sf.net for details.</source> <translation type="obsolete">Babel съвместим</translation> </message> <message>- <location filename="mainwindow.ui" line="1503"/>+ <location filename="mainwindow.ui" line="1679"/> <source>Replace default symbols (brackets, tilde) by nice redefinitions.</source> <translation>Заменя символите по подразбиране (скоби, тилда) с правилни .</translation> </message>@@ -793,18 +836,18 @@ See ctags.sf.net for details.</source> <translation type="obsolete">Символи за хубав печат</translation> </message> <message>- <location filename="mainwindow.ui" line="1523"/>+ <location filename="mainwindow.ui" line="1699"/> <source>Embed style (defs)</source> <translation>Вграждане на стилови определения</translation> </message> <message>- <location filename="mainwindow.ui" line="1548"/>+ <location filename="mainwindow.ui" line="1724"/> <source>Name of the referenced style file.</source> <translation>Име на използвания файл със стилове.</translation> </message> <message>- <location filename="mainwindow.ui" line="1551"/>- <location filename="mainwindow.ui" line="1659"/>+ <location filename="mainwindow.ui" line="1727"/>+ <location filename="mainwindow.ui" line="1835"/> <source>highlight.sty</source> <translation></translation> </message>@@ -813,7 +856,7 @@ See ctags.sf.net for details.</source> <translation type="obsolete">Включване на стил:</translation> </message> <message>- <location filename="mainwindow.ui" line="1028"/>+ <location filename="mainwindow.ui" line="1204"/> <source>Set encoding:</source> <translation>Кодиране:</translation> </message>@@ -822,30 +865,30 @@ See ctags.sf.net for details.</source> <translation type="obsolete">Четене на ctags файл:</translation> </message> <message>- <location filename="mainwindow.ui" line="1401"/>+ <location filename="mainwindow.ui" line="1577"/> <source>Output as ordered list</source> <translation>Извеждане като подреден списък</translation> </message> <message>- <location filename="mainwindow.ui" line="1428"/>+ <location filename="mainwindow.ui" line="1604"/> <source>Enclose in pre tags</source> <translation>Заграждане с pre маркери</translation> </message> <message>- <location filename="mainwindow.ui" line="1486"/>+ <location filename="mainwindow.ui" line="1662"/> <source>Add Babel compatibility</source> <translation>Добавяне на Babel съвместимост</translation> </message> <message>- <location filename="mainwindow.ui" line="1506"/>+ <location filename="mainwindow.ui" line="1682"/> <source>Add pretty symbols</source> <translation>Добавяне на символи за хубав печат</translation> </message> <message>- <location filename="mainwindow.ui" line="1254"/>- <location filename="mainwindow.ui" line="1532"/>- <location filename="mainwindow.ui" line="1640"/>- <location filename="mainwindow.ui" line="1935"/>+ <location filename="mainwindow.ui" line="1430"/>+ <location filename="mainwindow.ui" line="1708"/>+ <location filename="mainwindow.ui" line="1816"/>+ <location filename="mainwindow.ui" line="2111"/> <source>Stylesheet file:</source> <translation>Файл със стилови описания:</translation> </message>@@ -930,35 +973,135 @@ See ctags.sf.net for details.</source> <translation>Описание на скрипт</translation> </message> <message>- <location filename="mainwindow.ui" line="926"/>+ <location filename="mainwindow.ui" line="757"/>+ <source>Configure the LSP Client</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="764"/>+ <source>LSP</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="772"/>+ <source>Language Server:</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="779"/>+ <source>Select a Language Server profile.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="796"/>+ <source>Executable:</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="803"/>+ <source>Path of the server executable.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="816"/>+ <source>Select the server executable.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="830"/>+ <source>Print LSP messages to standard error</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="833"/>+ <source>Output Logs</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="840"/>+ <source>Start an initialization request.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="843"/>+ <source>Check Capabilities</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="861"/>+ <source>Workspace:</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="868"/>+ <source>The workspace directory.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="881"/>+ <source>Select the workspace directory of your project.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="893"/>+ <source>Run hover requests to add tooltips to your output (HTML only).</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="896"/>+ <source>Hover</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="906"/>+ <source>Improve token recognition with semantic highlighting.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="909"/>+ <source>Semantic Highlighting</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="919"/>+ <source>Show syntax errors and messages (depends on output format).</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="922"/>+ <source>Show Syntax Errors</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="1102"/> <source>Set line numbering start.</source> <translation>Задаване на начало на номерацията.</translation> </message> <message>- <location filename="mainwindow.ui" line="1013"/>+ <location filename="mainwindow.ui" line="1189"/> <source>Generate output without version information comment.</source> <translation>Създаване на изход без коментар с информация за версията.</translation> </message> <message>- <location filename="mainwindow.ui" line="1016"/>+ <location filename="mainwindow.ui" line="1192"/> <source>Omit version info comment</source> <translation>Без коментар с информация за версията</translation> </message> <message>- <location filename="mainwindow.ui" line="1025"/>+ <location filename="mainwindow.ui" line="1201"/> <source>Set the output file encoding.</source> <translation>Задаване на кодирането на изходния файл.</translation> </message> <message>- <location filename="mainwindow.ui" line="1287"/>- <location filename="mainwindow.ui" line="1562"/>- <location filename="mainwindow.ui" line="1670"/>- <location filename="mainwindow.ui" line="1965"/>+ <location filename="mainwindow.ui" line="1463"/>+ <location filename="mainwindow.ui" line="1738"/>+ <location filename="mainwindow.ui" line="1846"/>+ <location filename="mainwindow.ui" line="2141"/> <source>Stylesheet include file:</source> <translation>Файл със стилови описания за включване:</translation> </message> <message>- <location filename="mainwindow.ui" line="1371"/>+ <location filename="mainwindow.ui" line="1547"/> <source>Line numbering options:</source> <translation>Настройки за номерация на редове:</translation> </message>@@ -1047,12 +1190,12 @@ p, li { white-space: pre-wrap; } <translation type="obsolete">Разрешаване на избраните модули</translation> </message> <message>- <location filename="mainwindow.ui" line="869"/>+ <location filename="mainwindow.ui" line="1045"/> <source>BBCode</source> <translation>BBCode</translation> </message> <message>- <location filename="mainwindow.ui" line="1186"/>+ <location filename="mainwindow.ui" line="1362"/> <source>Stylesheets</source> <translation>Стилови описания</translation> </message>@@ -1065,15 +1208,15 @@ p, li { white-space: pre-wrap; } <translation type="obsolete">Индекс/ctags</translation> </message> <message>- <location filename="mainwindow.ui" line="1586"/>- <location filename="mainwindow.ui" line="1694"/>+ <location filename="mainwindow.ui" line="1762"/>+ <location filename="mainwindow.ui" line="1870"/> <source>Path of the style include file.</source> <translation>Път към файла със стилови описания за включване.</translation> </message> <message>- <location filename="mainwindow.ui" line="1599"/>- <location filename="mainwindow.ui" line="1707"/>- <location filename="mainwindow.ui" line="2002"/>+ <location filename="mainwindow.ui" line="1775"/>+ <location filename="mainwindow.ui" line="1883"/>+ <location filename="mainwindow.ui" line="2178"/> <source>Select a style include file.</source> <translation>Избор на файл със стилови описания за включване.</translation> </message>@@ -1082,7 +1225,7 @@ p, li { white-space: pre-wrap; } <translation type="obsolete">TeX опции</translation> </message> <message>- <location filename="mainwindow.ui" line="1631"/>+ <location filename="mainwindow.ui" line="1807"/> <source>Embed style (macros)</source> <translation>Вграждане на стил (макроси)</translation> </message>@@ -1091,14 +1234,14 @@ p, li { white-space: pre-wrap; } <translation type="obsolete">RTF опции</translation> </message> <message>- <location filename="mainwindow.ui" line="1736"/>+ <location filename="mainwindow.ui" line="1912"/> <source>Add character stylesheets with formatting information. You can select the stylesheets in your word processor to reformat additional text.</source> <translation>Добавяне на стилови описания с информация за форматиране на знаци. Можете да изберете стиловите описания във вашия текстов редактор, за да преформатирате допълнително текста.</translation> </message> <message>- <location filename="mainwindow.ui" line="1740"/>+ <location filename="mainwindow.ui" line="1916"/> <source>Add character styles</source> <translation>Добавяне на стилове за знаци</translation> </message>@@ -1107,57 +1250,57 @@ You can select the stylesheets in your word processor to reformat additional tex <translation type="vanished">Задаване на атрибут за цвят на страница към цвят на фона</translation> </message> <message>- <location filename="mainwindow.ui" line="1750"/>+ <location filename="mainwindow.ui" line="1926"/> <source>Set page color</source> <translation>Задаване на цвят на страница</translation> </message> <message>- <location filename="mainwindow.ui" line="1759"/>+ <location filename="mainwindow.ui" line="1935"/> <source>Page size:</source> <translation>Размер на страница:</translation> </message> <message>- <location filename="mainwindow.ui" line="1772"/>+ <location filename="mainwindow.ui" line="1948"/> <source>Select a page size.</source> <translation>Избор на размер на страница.</translation> </message> <message>- <location filename="mainwindow.ui" line="1779"/>+ <location filename="mainwindow.ui" line="1955"/> <source>A3</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1784"/>+ <location filename="mainwindow.ui" line="1960"/> <source>A4</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1789"/>+ <location filename="mainwindow.ui" line="1965"/> <source>A5</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1794"/>+ <location filename="mainwindow.ui" line="1970"/> <source>B4</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1799"/>+ <location filename="mainwindow.ui" line="1975"/> <source>B5</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1804"/>+ <location filename="mainwindow.ui" line="1980"/> <source>B6</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1809"/>+ <location filename="mainwindow.ui" line="1985"/> <source>Letter</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1814"/>+ <location filename="mainwindow.ui" line="1990"/> <source>Legal</source> <translation></translation> </message>@@ -1174,32 +1317,32 @@ You can select the stylesheets in your word processor to reformat additional tex <translation type="vanished">Широчина:</translation> </message> <message>- <location filename="mainwindow.ui" line="1871"/>+ <location filename="mainwindow.ui" line="2047"/> <source>Enter the SVG width (may contain units).</source> <translation>Въвеждане широчина на SVG (може да съдържа единици).</translation> </message> <message>- <location filename="mainwindow.ui" line="1907"/>+ <location filename="mainwindow.ui" line="2083"/> <source>Enter the SVG height (may contain units).</source> <translation>Въвеждане на височина на SVG (може да съдържа единици).</translation> </message> <message>- <location filename="mainwindow.ui" line="2031"/>+ <location filename="mainwindow.ui" line="2207"/> <source>No options defined.</source> <translation>Няма опции.</translation> </message> <message>- <location filename="mainwindow.ui" line="2056"/>+ <location filename="mainwindow.ui" line="2232"/> <source>Formatting</source> <translation>Форматиране</translation> </message> <message>- <location filename="mainwindow.ui" line="2085"/>+ <location filename="mainwindow.ui" line="2261"/> <source>Color theme:</source> <translation>Цветова тема:</translation> </message> <message>- <location filename="mainwindow.ui" line="2132"/>+ <location filename="mainwindow.ui" line="2308"/> <source>Select a colour theme.</source> <translation>Избор на цветова тема.</translation> </message>@@ -1210,84 +1353,84 @@ This feature is enabled tor C, C++, C# and Java code.</source> Тази възможност е налична за C, C++, C# и Java код.</translation> </message> <message>- <location filename="mainwindow.ui" line="2153"/>+ <location filename="mainwindow.ui" line="2332"/> <source>Reformat:</source> <translation>Преформатиране:</translation> </message> <message>- <location filename="mainwindow.ui" line="2172"/>+ <location filename="mainwindow.ui" line="2351"/> <source>Choose a formatting scheme.</source> <translation>Избор на схема за форматиране.</translation> </message> <message>- <location filename="mainwindow.ui" line="2186"/>+ <location filename="mainwindow.ui" line="2365"/> <source>Change the keyword case.</source> <translation>Промяна на регистъра на ключовите думи.</translation> </message> <message>- <location filename="mainwindow.ui" line="2189"/>+ <location filename="mainwindow.ui" line="2368"/> <source>Keyword case:</source> <translation>Регистър за ключови думи:</translation> </message> <message>- <location filename="mainwindow.ui" line="2208"/>+ <location filename="mainwindow.ui" line="2387"/> <source>Select a keyword case.</source> <translation>Избор на регистър за ключови думи.</translation> </message> <message>- <location filename="mainwindow.ui" line="2215"/>+ <location filename="mainwindow.ui" line="2394"/> <source>UPPER</source> <translation>ГОРЕН</translation> </message> <message>- <location filename="mainwindow.ui" line="2220"/>+ <location filename="mainwindow.ui" line="2399"/> <source>lower</source> <translation>долен</translation> </message> <message>- <location filename="mainwindow.ui" line="2225"/>+ <location filename="mainwindow.ui" line="2404"/> <source>Capitalize</source> <translation>Изречение</translation> </message> <message>- <location filename="mainwindow.ui" line="2243"/>+ <location filename="mainwindow.ui" line="2422"/> <source>Tab width:</source> <translation>Дължина на табулатор:</translation> </message> <message>- <location filename="mainwindow.ui" line="2259"/>+ <location filename="mainwindow.ui" line="2438"/> <source>Enter the number of spaces which replace a tab. Set the width to 0 to keep tabs.</source> <translation>Въвеждане на броя интервали заместващи табулатор. Въведете 0 за запазване на табулатори.</translation> </message> <message>- <location filename="mainwindow.ui" line="2274"/>+ <location filename="mainwindow.ui" line="2453"/> <source>Enable line wrapping.</source> <translation>Разрешаване на пренасяне на редове.</translation> </message> <message>- <location filename="mainwindow.ui" line="2277"/>+ <location filename="mainwindow.ui" line="2456"/> <source>Line wrapping</source> <translation>Пренасяне на редове</translation> </message> <message>- <location filename="mainwindow.ui" line="2290"/>+ <location filename="mainwindow.ui" line="2469"/> <source>Enter the maximum line length.</source> <translation>Въвеждане на максимална дължина на ред.</translation> </message> <message>- <location filename="mainwindow.ui" line="2309"/>+ <location filename="mainwindow.ui" line="2488"/> <source>Indent statements and function parameters after wrapping.</source> <translation>Подреждане на изрази и параметри на функции след пренасяне.</translation> </message> <message>- <location filename="mainwindow.ui" line="2312"/>+ <location filename="mainwindow.ui" line="2491"/> <source>Intelligent wrapping</source> <translation>Интелигентно пренасяне</translation> </message> <message>- <location filename="mainwindow.ui" line="2333"/>+ <location filename="mainwindow.ui" line="2512"/> <source>Font na&me:</source> <oldsource>Font name:</oldsource> <translation>Име на &шрифт:</translation>@@ -1301,18 +1444,18 @@ Set the width to 0 to keep tabs.</source> <translation type="vanished">Размер на шрифт:</translation> </message> <message>- <location filename="mainwindow.ui" line="2391"/>+ <location filename="mainwindow.ui" line="2573"/> <source>Enter the font size.</source> <translation>Въвеждане на размер на шрифта.</translation> </message> <message>- <location filename="mainwindow.ui" line="2464"/>+ <location filename="mainwindow.ui" line="2646"/> <source>&Visit andre-simon.de</source> <oldsource>Visit andre-simon.de</oldsource> <translation>&Посещаване на andre-simon.de</translation> </message> <message>- <location filename="mainwindow.ui" line="2475"/>+ <location filename="mainwindow.ui" line="2657"/> <source>&Dock floating panels</source> <translation>&Закачане на плаващи панели</translation> </message>@@ -1447,78 +1590,78 @@ Set the width to 0 to keep tabs.</source> <translation type="obsolete">Използване на твърди интервали</translation> </message> <message>- <location filename="mainwindow.ui" line="2319"/>+ <location filename="mainwindow.ui" line="2498"/> <source>Do not add line numbering to lines which were automatically wrapped.</source> <translation>Без номериране на редове, които са били автоматично пренесени.</translation> </message> <message>- <location filename="mainwindow.ui" line="2322"/>+ <location filename="mainwindow.ui" line="2501"/> <source>Omit line numbers of wrapped lines</source> <translation>Пропускане на номер за пренесени редове</translation> </message> <message>- <location filename="mainwindow.ui" line="2354"/>+ <location filename="mainwindow.ui" line="2533"/> <source>Select or enter the font name. HTML supports a list of fonts, separated with comma.</source> <translation>Избор или въвеждане на име на шрифт. HTML поддържа списък с шрифтове, разделени със запетая.</translation> </message> <message>- <location filename="mainwindow.ui" line="2369"/>+ <location filename="mainwindow.ui" line="2551"/> <source>Font si&ze:</source> <translation>Размер на &шрифта:</translation> </message> <message>- <location filename="mainwindow.ui" line="2406"/>+ <location filename="mainwindow.ui" line="2588"/> <source>&Open files</source> <translation>&Отваряне на файлове</translation> </message> <message>- <location filename="mainwindow.ui" line="2411"/>+ <location filename="mainwindow.ui" line="2593"/> <source>&Exit</source> <translation>&Изход</translation> </message> <message>- <location filename="mainwindow.ui" line="2416"/>+ <location filename="mainwindow.ui" line="2598"/> <source>&Load</source> <translation>&Зареждане</translation> </message> <message>- <location filename="mainwindow.ui" line="2421"/>+ <location filename="mainwindow.ui" line="2603"/> <source>&Save</source> <translation>&Запазване</translation> </message> <message>- <location filename="mainwindow.ui" line="2426"/>+ <location filename="mainwindow.ui" line="2608"/> <source>Load &default project</source> <translation>Зареждане на проект по &подразбиране</translation> </message> <message>- <location filename="mainwindow.ui" line="2431"/>+ <location filename="mainwindow.ui" line="2613"/> <source>&Readme</source> <oldsource>Readme</oldsource> <translation>Файл Про&чети ме</translation> </message> <message>- <location filename="mainwindow.ui" line="2436"/>+ <location filename="mainwindow.ui" line="2618"/> <source>&Tips</source> <translation>&Съвети</translation> </message> <message>- <location filename="mainwindow.ui" line="2444"/>+ <location filename="mainwindow.ui" line="2626"/> <source>&Changelog</source> <translation>&Журнал на промените</translation> </message> <message>- <location filename="mainwindow.ui" line="2449"/>+ <location filename="mainwindow.ui" line="2631"/> <source>&License</source> <translation>&Лиценз</translation> </message> <message>- <location filename="mainwindow.ui" line="2454"/>+ <location filename="mainwindow.ui" line="2636"/> <source>&About Highlight</source> <translation>Относно &Highlight</translation> </message> <message>- <location filename="mainwindow.ui" line="2459"/>+ <location filename="mainwindow.ui" line="2641"/> <source>A&bout translations</source> <oldsource>About &translations</oldsource> <translation>Относно п&реводите</translation>
@@ -186,6 +186,34 @@ Lua Syntax error: %2</source> <source>Contrast: %1 %2</source> <translation type="unfinished"></translation> </message>+ <message>+ <source>Please select a Server</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <source>Could not find LSP profiles. Check installation.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <source>Select workspace directory</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <source>Choose the Language Server executable</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <source>Language server initialization successful</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <source>Language server connection failed</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <source>Language server initialization failed</source>+ <translation type="unfinished"></translation>+ </message> </context> <context> <name>MainWindowClass</name>@@ -1146,6 +1174,90 @@ This feature is enabled for C, C++, C# and Java code.</source> <source>&File access trace (W32)</source> <translation type="unfinished"></translation> </message>+ <message>+ <source>Configure the LSP Client</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <source>LSP</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <source>Language Server:</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <source>Select a Language Server profile.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <source>Executable:</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <source>Path of the server executable.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <source>Select the server executable.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <source>Print LSP messages to standard error</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <source>Output Logs</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <source>Start an initialization request.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <source>Check Capabilities</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <source>Workspace:</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <source>The workspace directory.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <source>Select the workspace directory of your project.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <source>Run hover requests to add tooltips to your output (HTML only).</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <source>Hover</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <source>Improve token recognition with semantic highlighting.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <source>Semantic Highlighting</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <source>Show syntax errors and messages (depends on output format).</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <source>Show Syntax Errors</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <source>DejaVu Sans Mono</source>+ <translation type="unfinished"></translation>+ </message> </context> <context> <name>ShowTextFile</name>
@@ -10,64 +10,75 @@ Check installation.</source> Installation prüfen.</translation> </message> <message>- <location filename="mainwindow.cpp" line="138"/>- <location filename="mainwindow.cpp" line="158"/>+ <location filename="mainwindow.cpp" line="140"/>+ <location filename="mainwindow.cpp" line="155"/>+ <location filename="mainwindow.cpp" line="171"/> <source>Initialization error</source> <translation>Initialisierungsfehler</translation> </message> <message>- <location filename="mainwindow.cpp" line="139"/>+ <location filename="mainwindow.cpp" line="141"/> <source>Could not read a colour theme: </source> <translation>Konnte dieses Farbschema nicht lesen: </translation> </message> <message>- <location filename="mainwindow.cpp" line="143"/>+ <location filename="mainwindow.cpp" line="145"/> <source>light</source> <translation>Hell</translation> </message> <message>- <location filename="mainwindow.cpp" line="144"/>+ <location filename="mainwindow.cpp" line="146"/> <source>dark</source> <translation>Dunkel</translation> </message> <message>- <location filename="mainwindow.cpp" line="145"/>+ <location filename="mainwindow.cpp" line="147"/> <source>B16 light</source> <translation>B16 Hell</translation> </message> <message>- <location filename="mainwindow.cpp" line="146"/>+ <location filename="mainwindow.cpp" line="148"/> <source>B16 dark</source> <translation>B16 Dunkel</translation> </message> <message>- <location filename="mainwindow.cpp" line="159"/>+ <location filename="mainwindow.cpp" line="151"/>+ <source>Please select a Server</source>+ <translation>Bitte einen Server wählen</translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="156"/>+ <source>Could not find LSP profiles. Check installation.</source>+ <translation>Konnte kein LSP Profil finden. Installation prüfen.</translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="172"/> <source>Could not find syntax definitions. Check installation.</source> <translation>Syntaxdefinitionen nicht gefunden. Installation prüfen.</translation> </message> <message>- <location filename="mainwindow.cpp" line="275"/>+ <location filename="mainwindow.cpp" line="296"/> <source>NTFS Short Names</source> <translation></translation> </message> <message>- <location filename="mainwindow.cpp" line="275"/>+ <location filename="mainwindow.cpp" line="296"/> <source>NTFS short names may be disabled on your volumes. Highlight can not read input with multibyte file names if no short name is available. This information will no longer bother you.</source> <translation></translation> </message> <message>- <location filename="mainwindow.cpp" line="278"/>+ <location filename="mainwindow.cpp" line="299"/> <source>Always at your service</source> <translation>Stets zu Diensten</translation> </message> <message>- <location filename="mainwindow.cpp" line="325"/>+ <location filename="mainwindow.cpp" line="343"/> <source>Select one or more files to open</source> <translation>Wähle eine oder mehrere Dateien zum Öffnen</translation> </message> <message>- <location filename="mainwindow.cpp" line="362"/>+ <location filename="mainwindow.cpp" line="380"/> <source>Select destination directory</source> <translation>Wähle das Zielverzeichnis</translation> </message>@@ -80,117 +91,142 @@ Installation prüfen.</translation> <translation type="obsolete">Konnte Tags-Informationen in %1 nicht lesen</translation> </message> <message>- <location filename="mainwindow.cpp" line="1039"/>- <location filename="mainwindow.cpp" line="1070"/>+ <location filename="mainwindow.cpp" line="1130"/>+ <location filename="mainwindow.cpp" line="1161"/> <source>Output error</source> <translation>Ausgabefehler</translation> </message> <message>- <location filename="mainwindow.cpp" line="1039"/>+ <location filename="mainwindow.cpp" line="1130"/> <source>Output directory does not exist!</source> <translation>Zielverzeichnis existert nicht!</translation> </message> <message>- <location filename="mainwindow.cpp" line="1070"/>+ <location filename="mainwindow.cpp" line="1161"/> <source>You must define a style output file!</source> <translation>Sie müssen ein Stylesheet zur Ausgabe angeben!</translation> </message> <message>- <location filename="mainwindow.cpp" line="1119"/>+ <location filename="mainwindow.cpp" line="1213"/> <source>Processing %1 (%2/%3)</source> <translation>Verarbeite %1 (%2/%3)</translation> </message> <message>- <location filename="mainwindow.cpp" line="1129"/>+ <location filename="mainwindow.cpp" line="1223"/> <source>Language definition error</source> <translation>Fehler in Sprachdefinition</translation> </message> <message>- <location filename="mainwindow.cpp" line="1130"/>+ <location filename="mainwindow.cpp" line="1224"/> <source>Invalid regular expression in %1: %2</source> <translation>Ungültiger regulärer Ausdruck in %1: %2</translation> </message> <message>- <location filename="mainwindow.cpp" line="1134"/>+ <location filename="mainwindow.cpp" line="1228"/> <source>Unknown syntax</source> <translation>Unbekannte Syntax</translation> </message> <message>- <location filename="mainwindow.cpp" line="1134"/>+ <location filename="mainwindow.cpp" line="1228"/> <source>Could not convert %1</source> <translation>Konnte %1 nicht konvertieren</translation> </message> <message>- <location filename="mainwindow.cpp" line="1137"/>+ <location filename="mainwindow.cpp" line="1231"/> <source>Lua error</source> <translation>Lua Fehler</translation> </message> <message>- <location filename="mainwindow.cpp" line="1137"/>+ <location filename="mainwindow.cpp" line="1231"/> <source>Could not convert %1: Lua Syntax error: %2</source> <translation>Konnte %1 nicht konvertieren:\nLua Syntaxfehler: %2</translation> </message> <message>- <location filename="mainwindow.cpp" line="1284"/>+ <location filename="mainwindow.cpp" line="1406"/> <source>Converted %1 files in %2 ms</source> <translation>%1 Dateien in %2 ms konvertiert</translation> </message> <message>- <location filename="mainwindow.cpp" line="1473"/>+ <location filename="mainwindow.cpp" line="1610"/> <source>Conversion of "%1" not possible.</source> <translation>Konnte "%1" nicht konvertieren.</translation> </message> <message>- <location filename="mainwindow.cpp" line="1473"/>- <location filename="mainwindow.cpp" line="1614"/>- <location filename="mainwindow.cpp" line="1660"/>+ <location filename="mainwindow.cpp" line="1610"/>+ <location filename="mainwindow.cpp" line="1758"/>+ <location filename="mainwindow.cpp" line="1813"/> <source>clipboard data</source> <translation>Daten der Zwischenablage</translation> </message> <message>- <location filename="mainwindow.cpp" line="1544"/>+ <location filename="mainwindow.cpp" line="1689"/> <source>%1 options</source> <translation>%1-Optionen</translation> </message> <message>- <location filename="mainwindow.cpp" line="1587"/>- <location filename="mainwindow.cpp" line="1598"/>+ <location filename="mainwindow.cpp" line="1730"/>+ <location filename="mainwindow.cpp" line="1741"/> <source>(user script)</source> <translation>(Benutzerskript)</translation> </message> <message>- <location filename="mainwindow.cpp" line="1613"/>+ <location filename="mainwindow.cpp" line="1757"/> <source>Preview (%1):</source> <translation>Vorschau (%1):</translation> </message> <message>- <location filename="mainwindow.cpp" line="1616"/>+ <location filename="mainwindow.cpp" line="1760"/> <source>Current syntax: %1 %2</source> <translation>Aktuelle Syntax: %1 %2</translation> </message> <message>- <location filename="mainwindow.cpp" line="1617"/>+ <location filename="mainwindow.cpp" line="1761"/> <source>Current theme: %1 %2</source> <translation>Farbschema: %1 %2</translation> </message> <message>- <location filename="mainwindow.cpp" line="1620"/>+ <location filename="mainwindow.cpp" line="1764"/> <source>Contrast: %1 %2</source> <translation>Kontrast: %1 %2</translation> </message>+ <message>+ <location filename="mainwindow.cpp" line="2216"/>+ <source>Language server initialization successful</source>+ <translation>Language Server - Initialisierung erfolgreich</translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="2221"/>+ <source>Language server connection failed</source>+ <translation>Language Server - Verbindung fehlgeschlagen</translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="2223"/>+ <source>Language server initialization failed</source>+ <translation>Language Server - Initialisierung fehlgeschlagen</translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="2251"/>+ <source>Select workspace directory</source>+ <translation>Projektverzeichnis wählen</translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="2255"/>+ <source>Choose the Language Server executable</source>+ <translation>Wähle die ausführbare Datei des Language Servers</translation>+ </message> <message> <source>Current syntax: %1</source> <translation type="vanished">Aktuelle Syntax: %1</translation> </message> <message>- <location filename="mainwindow.cpp" line="1660"/>+ <location filename="mainwindow.cpp" line="1813"/> <source>Preview of "%1" not possible.</source> <translation>Vorschau von "%1" nicht möglich.</translation> </message> <message>- <location filename="mainwindow.cpp" line="1906"/>+ <location filename="mainwindow.cpp" line="2063"/> <source>Some plug-in effects may not be visible in the preview.</source> <translation>Einige Plug-In Effekte könnten in der Vorschau nicht dargestellt werden.</translation> </message>@@ -199,20 +235,20 @@ Lua Syntax error: %2</source> <translation type="obsolete">Wählen Sie eine ctags Datei</translation> </message> <message>- <location filename="mainwindow.cpp" line="1700"/>- <location filename="mainwindow.cpp" line="1704"/>- <location filename="mainwindow.cpp" line="1708"/>- <location filename="mainwindow.cpp" line="1713"/>+ <location filename="mainwindow.cpp" line="1857"/>+ <location filename="mainwindow.cpp" line="1861"/>+ <location filename="mainwindow.cpp" line="1865"/>+ <location filename="mainwindow.cpp" line="1870"/> <source>Choose a style include file</source> <translation>Wählen Sie ein Eingabe-Stylesheet</translation> </message> <message>- <location filename="mainwindow.cpp" line="1718"/>+ <location filename="mainwindow.cpp" line="1875"/> <source>About providing translations</source> <translation>Übersetzungen bereitstellen</translation> </message> <message>- <location filename="mainwindow.cpp" line="1719"/>+ <location filename="mainwindow.cpp" line="1876"/> <source>The GUI was developed using the Qt toolkit, and translations may be provided using the tools Qt Linguist and lrelease. The highlight.ts file for Linguist resides in the src/gui-qt subdirectory. The qm file generated by lrelease has to be saved in gui-files/l10n.@@ -225,17 +261,17 @@ Die von lrelease ausgegebene qm-Datei wird in gui-files/l10n gespeichert. Bitte senden Sie eine Nachricht an as (at) andre-simon (dot) de, wenn Sie Probleme bei der Übersetzung haben oder wenn Sie eine Übersetzung fertiggestellt bzw. aktualisiert haben.</translation> </message> <message>- <location filename="mainwindow.cpp" line="1777"/>+ <location filename="mainwindow.cpp" line="1934"/> <source>Select one or more plug-ins</source> <translation>Wähle ein Plug-in</translation> </message> <message>- <location filename="mainwindow.cpp" line="1788"/>+ <location filename="mainwindow.cpp" line="1945"/> <source>Select one or more syntax or theme scripts</source> <translation>Wähle ein oder mehrere Syntax- oder Themeskripte aus</translation> </message> <message>- <location filename="mainwindow.cpp" line="1848"/>+ <location filename="mainwindow.cpp" line="2005"/> <source>Choose a plug-in input file</source> <translation>Wähle eine Eingabedatei für Plug-Ins aus</translation> </message>@@ -298,10 +334,12 @@ Bitte senden Sie eine Nachricht an as (at) andre-simon (dot) de, wenn Sie Proble <message> <location filename="mainwindow.ui" line="310"/> <location filename="mainwindow.ui" line="669"/>- <location filename="mainwindow.ui" line="1333"/>- <location filename="mainwindow.ui" line="1602"/>- <location filename="mainwindow.ui" line="1710"/>- <location filename="mainwindow.ui" line="2005"/>+ <location filename="mainwindow.ui" line="819"/>+ <location filename="mainwindow.ui" line="884"/>+ <location filename="mainwindow.ui" line="1509"/>+ <location filename="mainwindow.ui" line="1778"/>+ <location filename="mainwindow.ui" line="1886"/>+ <location filename="mainwindow.ui" line="2181"/> <source>...</source> <translation>...</translation> </message>@@ -320,78 +358,78 @@ Bitte senden Sie eine Nachricht an as (at) andre-simon (dot) de, wenn Sie Proble <translation type="obsolete">Ausgabeoptionen</translation> </message> <message>- <location filename="mainwindow.ui" line="788"/>+ <location filename="mainwindow.ui" line="964"/> <source>General</source> <translation>Allgemein</translation> </message> <message>- <location filename="mainwindow.ui" line="808"/>+ <location filename="mainwindow.ui" line="984"/> <source>Output for&mat:</source> <oldsource>Output format:</oldsource> <translation>Ausgabeformat:</translation> </message> <message>- <location filename="mainwindow.ui" line="830"/>+ <location filename="mainwindow.ui" line="1006"/> <source>Choose an output format.</source> <translation>Wähle ein Ausgabeformat.</translation> </message> <message>- <location filename="mainwindow.ui" line="834"/>+ <location filename="mainwindow.ui" line="1010"/> <source>HTML</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="839"/>+ <location filename="mainwindow.ui" line="1015"/> <source>XHTML</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="844"/>+ <location filename="mainwindow.ui" line="1020"/> <source>LaTeX</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="849"/>+ <location filename="mainwindow.ui" line="1025"/> <source>TeX</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="854"/>+ <location filename="mainwindow.ui" line="1030"/> <source>RTF</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="859"/>+ <location filename="mainwindow.ui" line="1035"/> <source>ODT</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="864"/>+ <location filename="mainwindow.ui" line="1040"/> <source>SVG</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="874"/>+ <location filename="mainwindow.ui" line="1050"/> <source>ANSI ESC</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="879"/>+ <location filename="mainwindow.ui" line="1055"/> <source>XTerm256 ESC</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="884"/>+ <location filename="mainwindow.ui" line="1060"/> <source>Truecolor ESC</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="903"/>+ <location filename="mainwindow.ui" line="1079"/> <source>Add line numbers to the output.</source> <translation>Füge Zeilennummern zur Ausgabe hinzu.</translation> </message> <message>- <location filename="mainwindow.ui" line="906"/>+ <location filename="mainwindow.ui" line="1082"/> <source>Add line numbers</source> <translation>Zeilennummerierung</translation> </message>@@ -400,49 +438,49 @@ Bitte senden Sie eine Nachricht an as (at) andre-simon (dot) de, wenn Sie Proble <translation type="vanished">Lege den Beginn der Nummerierung fest</translation> </message> <message>- <location filename="mainwindow.ui" line="945"/>+ <location filename="mainwindow.ui" line="1121"/> <source>Select the line number width.</source> <translation>Wähle die Stellenanzahl der Nummerierung.</translation> </message> <message>- <location filename="mainwindow.ui" line="966"/>+ <location filename="mainwindow.ui" line="1142"/> <source>Fill leading space of line numbers with zeroes.</source> <translation>Fülle Zeilennummerierung mit Nullen auf.</translation> </message> <message>- <location filename="mainwindow.ui" line="969"/>+ <location filename="mainwindow.ui" line="1145"/> <source>Pad with zeroes</source> <translation>Zeige führende Nullen</translation> </message> <message>- <location filename="mainwindow.ui" line="982"/>+ <location filename="mainwindow.ui" line="1158"/> <source>Generate output without document header and footer.</source> <translation>Erzeuge Ausgabe ohne Dokumentenkopf und -fußteil.</translation> </message> <message>- <location filename="mainwindow.ui" line="985"/>+ <location filename="mainwindow.ui" line="1161"/> <source>Omit header and footer</source> <translation>Kopf- und Fußteil auslassen</translation> </message> <message>- <location filename="mainwindow.ui" line="992"/>+ <location filename="mainwindow.ui" line="1168"/> <source>Output any plug-in text injections even if document header and footer is omitted.</source> <translation>Gib Textausgaben der Plug-Ins aus auch wenn Kopf- und Fußteil der Dokumente weggelassen werden.</translation> </message> <message>- <location filename="mainwindow.ui" line="995"/>+ <location filename="mainwindow.ui" line="1171"/> <source>Keep Plug-In injections</source> <translation>Behalte Plug-In Ausgaben</translation> </message> <message>- <location filename="mainwindow.ui" line="1002"/>+ <location filename="mainwindow.ui" line="1178"/> <source>Test if input data is not binary. Removes Unicode BOM mark.</source> <translation>Stellt sicher, daß die Eingabe nicht binär ist. Entfernt den Unicode BOM.</translation> </message> <message>- <location filename="mainwindow.ui" line="1006"/>+ <location filename="mainwindow.ui" line="1182"/> <source>Validate input data</source> <translation>Prüfe Eingabedaten</translation> </message>@@ -451,25 +489,25 @@ Entfernt den Unicode BOM.</translation> <translation type="vanished">Setzt das Encoding.</translation> </message> <message>- <location filename="mainwindow.ui" line="1843"/>+ <location filename="mainwindow.ui" line="2019"/> <source>I&mage width:</source> <translation>Bild&breite:</translation> </message> <message>- <location filename="mainwindow.ui" line="1891"/>+ <location filename="mainwindow.ui" line="2067"/> <source>Height:</source> <oldsource>Image height:</oldsource> <translation>Höhe:</translation> </message> <message>- <location filename="mainwindow.ui" line="2149"/>+ <location filename="mainwindow.ui" line="2328"/> <source>Reformat and indent your code. This feature is enabled for C, C++, C# and Java code.</source> <translation>Formatiere den Eingabecode. Diese Funktion kann auf C, C++, C# und Java-Code angewandt werden.</translation> </message> <message>- <location filename="mainwindow.ui" line="2480"/>+ <location filename="mainwindow.ui" line="2662"/> <source>&Plug-Ins</source> <translation>&Plug-Ins</translation> </message>@@ -478,134 +516,139 @@ Diese Funktion kann auf C, C++, C# und Java-Code angewandt werden.</translation> <translation type="obsolete">Encoding:</translation> </message> <message>- <location filename="mainwindow.ui" line="1035"/>+ <location filename="mainwindow.ui" line="1211"/> <source>Select or define the encoding. The result has to match the input file encoding.</source> <translation>Wähle oder definiere das Ausgabe-Encoding. Das Encoding muss mit den Eingabedateien übereinstimmen.</translation> </message> <message>- <location filename="mainwindow.ui" line="1046"/>+ <location filename="mainwindow.ui" line="1222"/> <source>ISO-8859-1</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1051"/>+ <location filename="mainwindow.ui" line="1227"/> <source>ISO-8859-2</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1056"/>+ <location filename="mainwindow.ui" line="1232"/> <source>ISO-8859-3</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1061"/>+ <location filename="mainwindow.ui" line="1237"/> <source>ISO-8859-4</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1066"/>+ <location filename="mainwindow.ui" line="1242"/> <source>ISO-8859-5</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1071"/>+ <location filename="mainwindow.ui" line="1247"/> <source>ISO-8859-6</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1076"/>+ <location filename="mainwindow.ui" line="1252"/> <source>ISO-8859-7</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1081"/>+ <location filename="mainwindow.ui" line="1257"/> <source>ISO-8859-8</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1086"/>+ <location filename="mainwindow.ui" line="1262"/> <source>ISO-8859-9</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1091"/>+ <location filename="mainwindow.ui" line="1267"/> <source>ISO-8859-10</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1096"/>+ <location filename="mainwindow.ui" line="1272"/> <source>ISO-8859-11</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1101"/>+ <location filename="mainwindow.ui" line="1277"/> <source>ISO-8859-12</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1106"/>+ <location filename="mainwindow.ui" line="1282"/> <source>ISO-8859-13</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1111"/>+ <location filename="mainwindow.ui" line="1287"/> <source>ISO-8859-14</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1116"/>+ <location filename="mainwindow.ui" line="1292"/> <source>ISO-8859-15</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1121"/>+ <location filename="mainwindow.ui" line="1297"/> <source>UTF-8</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1145"/>+ <location filename="mainwindow.ui" line="1321"/> <source>Output specific</source> <translation>Format-Optionen</translation> </message> <message>- <location filename="mainwindow.ui" line="1378"/>+ <location filename="mainwindow.ui" line="1554"/> <source>Add an anchor to each line.</source> <translation>Füge Anker zu jeder Zeile hinzu.</translation> </message> <message>- <location filename="mainwindow.ui" line="1442"/>+ <location filename="mainwindow.ui" line="1618"/> <source>Add HTML MIME Type when copying code to the clipboard</source> <translation>Füge HTML MIME-Type hinzu wenn Code in die Zwischenablage kopiert wird</translation> </message> <message>- <location filename="mainwindow.ui" line="1445"/>+ <location filename="mainwindow.ui" line="1621"/> <source>Copy with MIME type</source> <translation>Kopiere mit MIME-Type</translation> </message> <message>- <location filename="mainwindow.ui" line="1483"/>+ <location filename="mainwindow.ui" line="1659"/> <source>Adapt output for the Babel package</source> <translation>Passe die Ausgabe für das Babel-Paket an</translation> </message> <message>- <location filename="mainwindow.ui" line="1493"/>+ <location filename="mainwindow.ui" line="1669"/> <source>Adapt output for the Beamer package</source> <translation>Passe die Ausgabe für das Beamer-Paket an</translation> </message> <message>- <location filename="mainwindow.ui" line="1496"/>+ <location filename="mainwindow.ui" line="1672"/> <source>Add Beamer compatibility</source> <translation>Beamer Kompatibilität</translation> </message> <message>- <location filename="mainwindow.ui" line="1747"/>+ <location filename="mainwindow.ui" line="1923"/> <source>Set page color attribute to background color.</source> <translation>Setze die Hintergrundfarbe als Seitenfarbe.</translation> </message> <message>- <location filename="mainwindow.ui" line="2485"/>+ <location filename="mainwindow.ui" line="2536"/>+ <source>DejaVu Sans Mono</source>+ <translation></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="2667"/> <source>&File access trace (W32)</source> <translation></translation> </message>@@ -618,26 +661,26 @@ Das Encoding muss mit den Eingabedateien übereinstimmen.</translation> <translation type="obsolete">Stylesheets</translation> </message> <message>- <location filename="mainwindow.ui" line="1194"/>- <location filename="mainwindow.ui" line="1520"/>- <location filename="mainwindow.ui" line="1628"/>- <location filename="mainwindow.ui" line="1923"/>+ <location filename="mainwindow.ui" line="1370"/>+ <location filename="mainwindow.ui" line="1696"/>+ <location filename="mainwindow.ui" line="1804"/>+ <location filename="mainwindow.ui" line="2099"/> <source>Include the style information in each output file.</source> <translation>Füge die Stylesheets in jede Ausgabedatei ein.</translation> </message> <message>- <location filename="mainwindow.ui" line="1197"/>- <location filename="mainwindow.ui" line="1926"/>+ <location filename="mainwindow.ui" line="1373"/>+ <location filename="mainwindow.ui" line="2102"/> <source>Embed style (CSS)</source> <translation>CSS einbetten</translation> </message> <message>- <location filename="mainwindow.ui" line="1210"/>+ <location filename="mainwindow.ui" line="1386"/> <source>Add CSS information to each tag (do not use CSS class definitions).</source> <translation>Füge Stylesheets in jeden Tag ein (benutze keine CSS Klassen).</translation> </message> <message>- <location filename="mainwindow.ui" line="1213"/>+ <location filename="mainwindow.ui" line="1389"/> <source>Inline CSS</source> <translation></translation> </message>@@ -646,15 +689,15 @@ Das Encoding muss mit den Eingabedateien übereinstimmen.</translation> <translation type="obsolete">Stylesheet-Datei:</translation> </message> <message>- <location filename="mainwindow.ui" line="1273"/>- <location filename="mainwindow.ui" line="1656"/>- <location filename="mainwindow.ui" line="1951"/>+ <location filename="mainwindow.ui" line="1449"/>+ <location filename="mainwindow.ui" line="1832"/>+ <location filename="mainwindow.ui" line="2127"/> <source>Name of the referenced style file.</source> <translation>Name des referenzierten Stylesheets.</translation> </message> <message>- <location filename="mainwindow.ui" line="1276"/>- <location filename="mainwindow.ui" line="1954"/>+ <location filename="mainwindow.ui" line="1452"/>+ <location filename="mainwindow.ui" line="2130"/> <source>highlight.css</source> <translation></translation> </message>@@ -663,18 +706,18 @@ Das Encoding muss mit den Eingabedateien übereinstimmen.</translation> <translation type="obsolete">Eingabe-Stylesheet:</translation> </message> <message>- <location filename="mainwindow.ui" line="1317"/>- <location filename="mainwindow.ui" line="1989"/>+ <location filename="mainwindow.ui" line="1493"/>+ <location filename="mainwindow.ui" line="2165"/> <source>Path of the CSS include file.</source> <translation>Pfad zur CSS-Datei, die ins Stylesheet eingefügt werden soll.</translation> </message> <message>- <location filename="mainwindow.ui" line="1330"/>+ <location filename="mainwindow.ui" line="1506"/> <source>Select a CSS include file.</source> <translation>Wähle eine Stylesheet-Eingabedatei.</translation> </message> <message>- <location filename="mainwindow.ui" line="1227"/>+ <location filename="mainwindow.ui" line="1403"/> <source>CSS class prefix:</source> <translation>CSS Präfix:</translation> </message>@@ -684,7 +727,7 @@ Das Encoding muss mit den Eingabedateien übereinstimmen.</translation> <translation>Zeigt die Beschreibung des markierten Skripts an.</translation> </message> <message>- <location filename="mainwindow.ui" line="1240"/>+ <location filename="mainwindow.ui" line="1416"/> <source>Add a CSS class name prefix to avoid namespace clashes.</source> <translation>Definiere einen CSS-Klassennamen, um Kollisionen mit anderen Stylesheets zu vermeiden.</translation> </message>@@ -693,12 +736,12 @@ Das Encoding muss mit den Eingabedateien übereinstimmen.</translation> <translation type="obsolete">Tags- und Indexdateien</translation> </message> <message>- <location filename="mainwindow.ui" line="1415"/>+ <location filename="mainwindow.ui" line="1591"/> <source>Generate an index file with hyperlinks to all outputted files.</source> <translation>Erzeuge eine Indexdatei mit Links zu allen Ausgabedateien.</translation> </message> <message>- <location filename="mainwindow.ui" line="1418"/>+ <location filename="mainwindow.ui" line="1594"/> <source>Generate index file</source> <translation>Indexdatei erzeugen</translation> </message>@@ -721,7 +764,7 @@ Siehe ctags.sf.net um mehr darüber zu erfahren.</translation> <translation type="obsolete">Wähle eine ctags Datei.</translation> </message> <message>- <location filename="mainwindow.ui" line="1359"/>+ <location filename="mainwindow.ui" line="1535"/> <source>Misc</source> <translation>Verschiedenes</translation> </message>@@ -730,22 +773,22 @@ Siehe ctags.sf.net um mehr darüber zu erfahren.</translation> <translation type="vanished">Füge Anker zu jeder Zeile hinzu.</translation> </message> <message>- <location filename="mainwindow.ui" line="1381"/>+ <location filename="mainwindow.ui" line="1557"/> <source>Add line anchors</source> <translation>Anker einfügen</translation> </message> <message>- <location filename="mainwindow.ui" line="1388"/>+ <location filename="mainwindow.ui" line="1564"/> <source>Add the filename as prefix to the anchors.</source> <translation>Füge Dateinamen als Präfix zum Anker hinzu.</translation> </message> <message>- <location filename="mainwindow.ui" line="1391"/>+ <location filename="mainwindow.ui" line="1567"/> <source>Include file name in anchor</source> <translation>Dateiname im Anker</translation> </message> <message>- <location filename="mainwindow.ui" line="1398"/>+ <location filename="mainwindow.ui" line="1574"/> <source>Output the lines within an ordered list.</source> <translation>Gib die Zeilen als sortierte Liste aus.</translation> </message>@@ -754,7 +797,7 @@ Siehe ctags.sf.net um mehr darüber zu erfahren.</translation> <translation type="obsolete">Sortierte Liste</translation> </message> <message>- <location filename="mainwindow.ui" line="1425"/>+ <location filename="mainwindow.ui" line="1601"/> <source>Add &lt;pre&gt; tags to the output, if the flag "No document header and footer" is selected.</source> <translation>Schließe die Ausgabe in &lt;pre&gt;-Tags ein, wenn die Option "Kopf- und Fußteil auslassen" gewählt ist.</translation> </message>@@ -767,12 +810,12 @@ Siehe ctags.sf.net um mehr darüber zu erfahren.</translation> <translation type="obsolete">LaTeX Optionen</translation> </message> <message>- <location filename="mainwindow.ui" line="1473"/>+ <location filename="mainwindow.ui" line="1649"/> <source>Replace quotes by dq sequences.</source> <translation>Ersetze Anführungszeichen mit \dq-Sequenzen.</translation> </message> <message>- <location filename="mainwindow.ui" line="1476"/>+ <location filename="mainwindow.ui" line="1652"/> <source>Escape quotes</source> <translation>Ersetze Anführungszeichen</translation> </message>@@ -785,7 +828,7 @@ Siehe ctags.sf.net um mehr darüber zu erfahren.</translation> <translation type="obsolete">Babel Kompatibilität</translation> </message> <message>- <location filename="mainwindow.ui" line="1503"/>+ <location filename="mainwindow.ui" line="1679"/> <source>Replace default symbols (brackets, tilde) by nice redefinitions.</source> <translation>Ersetze Standard-Darstellung verschiedener Symbole (Klammern, Tilde) durch schönere Definitionen.</translation> </message>@@ -794,18 +837,18 @@ Siehe ctags.sf.net um mehr darüber zu erfahren.</translation> <translation type="obsolete">Schönere Symbole</translation> </message> <message>- <location filename="mainwindow.ui" line="1523"/>+ <location filename="mainwindow.ui" line="1699"/> <source>Embed style (defs)</source> <translation>Stylesheet einbetten</translation> </message> <message>- <location filename="mainwindow.ui" line="1548"/>+ <location filename="mainwindow.ui" line="1724"/> <source>Name of the referenced style file.</source> <translation>Name des referenzierten Stylesheets.</translation> </message> <message>- <location filename="mainwindow.ui" line="1551"/>- <location filename="mainwindow.ui" line="1659"/>+ <location filename="mainwindow.ui" line="1727"/>+ <location filename="mainwindow.ui" line="1835"/> <source>highlight.sty</source> <translation></translation> </message>@@ -814,7 +857,7 @@ Siehe ctags.sf.net um mehr darüber zu erfahren.</translation> <translation type="obsolete">Eingabe-Stylesheet:</translation> </message> <message>- <location filename="mainwindow.ui" line="1028"/>+ <location filename="mainwindow.ui" line="1204"/> <source>Set encoding:</source> <translation>Encoding:</translation> </message>@@ -823,30 +866,30 @@ Siehe ctags.sf.net um mehr darüber zu erfahren.</translation> <translation type="obsolete">Lese ctags-Datei:</translation> </message> <message>- <location filename="mainwindow.ui" line="1401"/>+ <location filename="mainwindow.ui" line="1577"/> <source>Output as ordered list</source> <translation>Sortierte Liste</translation> </message> <message>- <location filename="mainwindow.ui" line="1428"/>+ <location filename="mainwindow.ui" line="1604"/> <source>Enclose in pre tags</source> <translation>Schließe in pre-Tags ein</translation> </message> <message>- <location filename="mainwindow.ui" line="1486"/>+ <location filename="mainwindow.ui" line="1662"/> <source>Add Babel compatibility</source> <translation>Babel Kompatibilität</translation> </message> <message>- <location filename="mainwindow.ui" line="1506"/>+ <location filename="mainwindow.ui" line="1682"/> <source>Add pretty symbols</source> <translation>Symbole anpassen</translation> </message> <message>- <location filename="mainwindow.ui" line="1254"/>- <location filename="mainwindow.ui" line="1532"/>- <location filename="mainwindow.ui" line="1640"/>- <location filename="mainwindow.ui" line="1935"/>+ <location filename="mainwindow.ui" line="1430"/>+ <location filename="mainwindow.ui" line="1708"/>+ <location filename="mainwindow.ui" line="1816"/>+ <location filename="mainwindow.ui" line="2111"/> <source>Stylesheet file:</source> <translation>Stylesheet-Datei:</translation> </message>@@ -931,35 +974,135 @@ Siehe ctags.sf.net um mehr darüber zu erfahren.</translation> <translation>Skriptbeschreibung</translation> </message> <message>- <location filename="mainwindow.ui" line="926"/>+ <location filename="mainwindow.ui" line="757"/>+ <source>Configure the LSP Client</source>+ <translation>LSP-Client Konfiguration</translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="764"/>+ <source>LSP</source>+ <translation>LSP</translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="772"/>+ <source>Language Server:</source>+ <translation>Language Server:</translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="779"/>+ <source>Select a Language Server profile.</source>+ <translation>Wähle ein Language Server Profil.</translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="796"/>+ <source>Executable:</source>+ <translation>Programm:</translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="803"/>+ <source>Path of the server executable.</source>+ <translation>Pfad der ausführbaren Datei.</translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="816"/>+ <source>Select the server executable.</source>+ <translation>Wähle die ausführbare Datei des Servers.</translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="830"/>+ <source>Print LSP messages to standard error</source>+ <translation>Gebe LSP Nachrichten in der Standard-Fehlerausgabe aus</translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="833"/>+ <source>Output Logs</source>+ <translation>Schreibe Logs</translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="840"/>+ <source>Start an initialization request.</source>+ <translation>Führe eine Initialisierung aus.</translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="843"/>+ <source>Check Capabilities</source>+ <translation>Fähigkeiten prüfen</translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="861"/>+ <source>Workspace:</source>+ <translation>Projektverzeichnis:</translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="868"/>+ <source>The workspace directory.</source>+ <translation>Das Projektverzeichnis der Eingabedateien.</translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="881"/>+ <source>Select the workspace directory of your project.</source>+ <translation>Wähle das Projektverzeichnis.</translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="893"/>+ <source>Run hover requests to add tooltips to your output (HTML only).</source>+ <translation>Führe Hover-Anfragen durch um Tooltips für die Ausgabe zu erhalten (nur HTML).</translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="896"/>+ <source>Hover</source>+ <translation>Hover</translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="906"/>+ <source>Improve token recognition with semantic highlighting.</source>+ <translation>Verbessere die Syntax-Erkennung mit semantischem Highlighting.</translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="909"/>+ <source>Semantic Highlighting</source>+ <translation>Semantisches Highlighting</translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="919"/>+ <source>Show syntax errors and messages (depends on output format).</source>+ <translation>Zeige Syntaxfehler und Beschreibungen (abhängig vom Ausgabeformat).</translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="922"/>+ <source>Show Syntax Errors</source>+ <translation>Syntaxfehler</translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="1102"/> <source>Set line numbering start.</source> <translation>Lege den Beginn der Nummerierung fest.</translation> </message> <message>- <location filename="mainwindow.ui" line="1013"/>+ <location filename="mainwindow.ui" line="1189"/> <source>Generate output without version information comment.</source> <translation>Erzeuge Ausgabe ohne Versionskommentar.</translation> </message> <message>- <location filename="mainwindow.ui" line="1016"/>+ <location filename="mainwindow.ui" line="1192"/> <source>Omit version info comment</source> <translation>Versionskommentar auslassen</translation> </message> <message>- <location filename="mainwindow.ui" line="1025"/>+ <location filename="mainwindow.ui" line="1201"/> <source>Set the output file encoding.</source> <translation>Das Ausgabe-Encoding bestimmen.</translation> </message> <message>- <location filename="mainwindow.ui" line="1287"/>- <location filename="mainwindow.ui" line="1562"/>- <location filename="mainwindow.ui" line="1670"/>- <location filename="mainwindow.ui" line="1965"/>+ <location filename="mainwindow.ui" line="1463"/>+ <location filename="mainwindow.ui" line="1738"/>+ <location filename="mainwindow.ui" line="1846"/>+ <location filename="mainwindow.ui" line="2141"/> <source>Stylesheet include file:</source> <translation>Eingabe-Stylesheet:</translation> </message> <message>- <location filename="mainwindow.ui" line="1371"/>+ <location filename="mainwindow.ui" line="1547"/> <source>Line numbering options:</source> <translation>Optionen der Zeilennummerierung:</translation> </message>@@ -1048,12 +1191,12 @@ p, li { white-space: pre-wrap; } <translation type="obsolete">Aktiviere das selektierte Plug-In Skript</translation> </message> <message>- <location filename="mainwindow.ui" line="869"/>+ <location filename="mainwindow.ui" line="1045"/> <source>BBCode</source> <translation>BBCode</translation> </message> <message>- <location filename="mainwindow.ui" line="1186"/>+ <location filename="mainwindow.ui" line="1362"/> <source>Stylesheets</source> <translation>Stylesheets</translation> </message>@@ -1066,15 +1209,15 @@ p, li { white-space: pre-wrap; } <translation type="obsolete">Index/ctags</translation> </message> <message>- <location filename="mainwindow.ui" line="1586"/>- <location filename="mainwindow.ui" line="1694"/>+ <location filename="mainwindow.ui" line="1762"/>+ <location filename="mainwindow.ui" line="1870"/> <source>Path of the style include file.</source> <translation>Pfad zur sty-Datei, die ins Stylesheet eingefügt werden soll.</translation> </message> <message>- <location filename="mainwindow.ui" line="1599"/>- <location filename="mainwindow.ui" line="1707"/>- <location filename="mainwindow.ui" line="2002"/>+ <location filename="mainwindow.ui" line="1775"/>+ <location filename="mainwindow.ui" line="1883"/>+ <location filename="mainwindow.ui" line="2178"/> <source>Select a style include file.</source> <translation>Wähle eine Stylesheet-Eingabedatei.</translation> </message>@@ -1083,7 +1226,7 @@ p, li { white-space: pre-wrap; } <translation type="obsolete">TeX Optionen</translation> </message> <message>- <location filename="mainwindow.ui" line="1631"/>+ <location filename="mainwindow.ui" line="1807"/> <source>Embed style (macros)</source> <translation>Stylesheet einbetten</translation> </message>@@ -1092,14 +1235,14 @@ p, li { white-space: pre-wrap; } <translation type="obsolete">RTF Optionen</translation> </message> <message>- <location filename="mainwindow.ui" line="1736"/>+ <location filename="mainwindow.ui" line="1912"/> <source>Add character stylesheets with formatting information. You can select the stylesheets in your word processor to reformat additional text.</source> <translation>Füge Zeichenvorlagen mit Formatierungsinformationen hinzu. Diese können in der Textverarbeitung gewählt werden, um zusätzlichen Text zu formatieren.</translation> </message> <message>- <location filename="mainwindow.ui" line="1740"/>+ <location filename="mainwindow.ui" line="1916"/> <source>Add character styles</source> <translation>Zeichenvorlagen</translation> </message>@@ -1108,57 +1251,57 @@ Diese können in der Textverarbeitung gewählt werden, um zusätzlichen Text zu <translation type="vanished">Setze die Hintergrundfarbe als Seitenfarbe</translation> </message> <message>- <location filename="mainwindow.ui" line="1750"/>+ <location filename="mainwindow.ui" line="1926"/> <source>Set page color</source> <translation>Seitenfarbe setzen</translation> </message> <message>- <location filename="mainwindow.ui" line="1759"/>+ <location filename="mainwindow.ui" line="1935"/> <source>Page size:</source> <translation>Papierformat:</translation> </message> <message>- <location filename="mainwindow.ui" line="1772"/>+ <location filename="mainwindow.ui" line="1948"/> <source>Select a page size.</source> <translation>Wähle eine Seitengröße aus.</translation> </message> <message>- <location filename="mainwindow.ui" line="1779"/>+ <location filename="mainwindow.ui" line="1955"/> <source>A3</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1784"/>+ <location filename="mainwindow.ui" line="1960"/> <source>A4</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1789"/>+ <location filename="mainwindow.ui" line="1965"/> <source>A5</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1794"/>+ <location filename="mainwindow.ui" line="1970"/> <source>B4</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1799"/>+ <location filename="mainwindow.ui" line="1975"/> <source>B5</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1804"/>+ <location filename="mainwindow.ui" line="1980"/> <source>B6</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1809"/>+ <location filename="mainwindow.ui" line="1985"/> <source>Letter</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1814"/>+ <location filename="mainwindow.ui" line="1990"/> <source>Legal</source> <translation></translation> </message>@@ -1175,27 +1318,27 @@ Diese können in der Textverarbeitung gewählt werden, um zusätzlichen Text zu <translation type="vanished">Breite:</translation> </message> <message>- <location filename="mainwindow.ui" line="1871"/>+ <location filename="mainwindow.ui" line="2047"/> <source>Enter the SVG width (may contain units).</source> <translation>Gib die Bildbreite ein (kann Größeneinheiten enthalten).</translation> </message> <message>- <location filename="mainwindow.ui" line="1907"/>+ <location filename="mainwindow.ui" line="2083"/> <source>Enter the SVG height (may contain units).</source> <translation>Gib die Bildhöhe ein (kann Größeneinheiten enthalten).</translation> </message> <message>- <location filename="mainwindow.ui" line="2031"/>+ <location filename="mainwindow.ui" line="2207"/> <source>No options defined.</source> <translation>Keine Optionen vorhanden.</translation> </message> <message>- <location filename="mainwindow.ui" line="2056"/>+ <location filename="mainwindow.ui" line="2232"/> <source>Formatting</source> <translation>Formatierung</translation> </message> <message>- <location filename="mainwindow.ui" line="2085"/>+ <location filename="mainwindow.ui" line="2261"/> <source>Color theme:</source> <translation>Farbschema:</translation> </message>@@ -1208,7 +1351,7 @@ Diese können in der Textverarbeitung gewählt werden, um zusätzlichen Text zu <translation type="vanished">Base16</translation> </message> <message>- <location filename="mainwindow.ui" line="2132"/>+ <location filename="mainwindow.ui" line="2308"/> <source>Select a colour theme.</source> <translation>Wähle ein Farbschema.</translation> </message>@@ -1219,84 +1362,84 @@ This feature is enabled tor C, C++, C# and Java code.</source> Diese Funktion kann auf C, C++, C# und Java-Code angewandt werden.</translation> </message> <message>- <location filename="mainwindow.ui" line="2153"/>+ <location filename="mainwindow.ui" line="2332"/> <source>Reformat:</source> <translation>Formatieren:</translation> </message> <message>- <location filename="mainwindow.ui" line="2172"/>+ <location filename="mainwindow.ui" line="2351"/> <source>Choose a formatting scheme.</source> <translation>Wähle ein Formatierungs-Schema.</translation> </message> <message>- <location filename="mainwindow.ui" line="2186"/>+ <location filename="mainwindow.ui" line="2365"/> <source>Change the keyword case.</source> <translation>Ändere die Groß- und Kleinschreibung, wenn die Eingabesyntax nicht case-sensitive ist.</translation> </message> <message>- <location filename="mainwindow.ui" line="2189"/>+ <location filename="mainwindow.ui" line="2368"/> <source>Keyword case:</source> <translation>Schlüsselwort Case:</translation> </message> <message>- <location filename="mainwindow.ui" line="2208"/>+ <location filename="mainwindow.ui" line="2387"/> <source>Select a keyword case.</source> <translation>Wähle einen Typ der Groß- und Kleinschreibung.</translation> </message> <message>- <location filename="mainwindow.ui" line="2215"/>+ <location filename="mainwindow.ui" line="2394"/> <source>UPPER</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="2220"/>+ <location filename="mainwindow.ui" line="2399"/> <source>lower</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="2225"/>+ <location filename="mainwindow.ui" line="2404"/> <source>Capitalize</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="2243"/>+ <location filename="mainwindow.ui" line="2422"/> <source>Tab width:</source> <translation>Tabulatorbreite:</translation> </message> <message>- <location filename="mainwindow.ui" line="2259"/>+ <location filename="mainwindow.ui" line="2438"/> <source>Enter the number of spaces which replace a tab. Set the width to 0 to keep tabs.</source> <translation>Gib die Anzahl der Leerzeichen an, die ein Tab ersetzen. Setze die Anzahl auf Null, um Tabs auszugeben.</translation> </message> <message>- <location filename="mainwindow.ui" line="2274"/>+ <location filename="mainwindow.ui" line="2453"/> <source>Enable line wrapping.</source> <translation>Aktiviere den automatischen Zeilenumbruch.</translation> </message> <message>- <location filename="mainwindow.ui" line="2277"/>+ <location filename="mainwindow.ui" line="2456"/> <source>Line wrapping</source> <translation>Zeilenumbruch</translation> </message> <message>- <location filename="mainwindow.ui" line="2290"/>+ <location filename="mainwindow.ui" line="2469"/> <source>Enter the maximum line length.</source> <translation>Gib die maximale Zeilenlänge ein.</translation> </message> <message>- <location filename="mainwindow.ui" line="2309"/>+ <location filename="mainwindow.ui" line="2488"/> <source>Indent statements and function parameters after wrapping.</source> <translation>Rücke Kommandos und Funktionsparameter nach dem Umbruch ein.</translation> </message> <message>- <location filename="mainwindow.ui" line="2312"/>+ <location filename="mainwindow.ui" line="2491"/> <source>Intelligent wrapping</source> <translation>Intelligenter Umbruch</translation> </message> <message>- <location filename="mainwindow.ui" line="2333"/>+ <location filename="mainwindow.ui" line="2512"/> <source>Font na&me:</source> <oldsource>Font name:</oldsource> <translation>Schriftart:</translation>@@ -1310,18 +1453,18 @@ Setze die Anzahl auf Null, um Tabs auszugeben.</translation> <translation type="vanished">Schriftgröße:</translation> </message> <message>- <location filename="mainwindow.ui" line="2391"/>+ <location filename="mainwindow.ui" line="2573"/> <source>Enter the font size.</source> <translation>Gib die Schriftgröße ein.</translation> </message> <message>- <location filename="mainwindow.ui" line="2464"/>+ <location filename="mainwindow.ui" line="2646"/> <source>&Visit andre-simon.de</source> <oldsource>Visit andre-simon.de</oldsource> <translation>&Besuche andre-simon.de</translation> </message> <message>- <location filename="mainwindow.ui" line="2475"/>+ <location filename="mainwindow.ui" line="2657"/> <source>&Dock floating panels</source> <translation>&Schwebende Fenster andocken</translation> </message>@@ -1456,78 +1599,78 @@ Setze die Anzahl auf Null, um Tabs auszugeben.</translation> <translation type="obsolete">Benutze geschützte Leerzeichen</translation> </message> <message>- <location filename="mainwindow.ui" line="2319"/>+ <location filename="mainwindow.ui" line="2498"/> <source>Do not add line numbering to lines which were automatically wrapped.</source> <translation>Gib bei automatisch umgebrochenen Zeilen keine Nummerierung aus.</translation> </message> <message>- <location filename="mainwindow.ui" line="2322"/>+ <location filename="mainwindow.ui" line="2501"/> <source>Omit line numbers of wrapped lines</source> <translation>Keine Nummerierung bei Umbruch</translation> </message> <message>- <location filename="mainwindow.ui" line="2354"/>+ <location filename="mainwindow.ui" line="2533"/> <source>Select or enter the font name. HTML supports a list of fonts, separated with comma.</source> <translation>Wähle oder gib den Fontnamen ein. HTML unterstützt auch eine mit Komma getrennte Liste von Fonts.</translation> </message> <message>- <location filename="mainwindow.ui" line="2369"/>+ <location filename="mainwindow.ui" line="2551"/> <source>Font si&ze:</source> <translation>Schrift&größe:</translation> </message> <message>- <location filename="mainwindow.ui" line="2406"/>+ <location filename="mainwindow.ui" line="2588"/> <source>&Open files</source> <translation>Öffne &Dateien</translation> </message> <message>- <location filename="mainwindow.ui" line="2411"/>+ <location filename="mainwindow.ui" line="2593"/> <source>&Exit</source> <translation>&Beenden</translation> </message> <message>- <location filename="mainwindow.ui" line="2416"/>+ <location filename="mainwindow.ui" line="2598"/> <source>&Load</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="2421"/>+ <location filename="mainwindow.ui" line="2603"/> <source>&Save</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="2426"/>+ <location filename="mainwindow.ui" line="2608"/> <source>Load &default project</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="2431"/>+ <location filename="mainwindow.ui" line="2613"/> <source>&Readme</source> <oldsource>Readme</oldsource> <translation>&Handbuch</translation> </message> <message>- <location filename="mainwindow.ui" line="2436"/>+ <location filename="mainwindow.ui" line="2618"/> <source>&Tips</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="2444"/>+ <location filename="mainwindow.ui" line="2626"/> <source>&Changelog</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="2449"/>+ <location filename="mainwindow.ui" line="2631"/> <source>&License</source> <translation>&Lizenz</translation> </message> <message>- <location filename="mainwindow.ui" line="2454"/>+ <location filename="mainwindow.ui" line="2636"/> <source>&About Highlight</source> <translation>&Über Highlight</translation> </message> <message>- <location filename="mainwindow.ui" line="2459"/>+ <location filename="mainwindow.ui" line="2641"/> <source>A&bout translations</source> <oldsource>About &translations</oldsource> <translation>&Infos zu Übersetzungen</translation>
@@ -10,64 +10,75 @@ Check installation.</source> Revise su instalación.</translation> </message> <message>- <location filename="mainwindow.cpp" line="138"/>- <location filename="mainwindow.cpp" line="158"/>+ <location filename="mainwindow.cpp" line="140"/>+ <location filename="mainwindow.cpp" line="155"/>+ <location filename="mainwindow.cpp" line="171"/> <source>Initialization error</source> <translation>Error de inicialización</translation> </message> <message>- <location filename="mainwindow.cpp" line="139"/>+ <location filename="mainwindow.cpp" line="141"/> <source>Could not read a colour theme: </source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="143"/>+ <location filename="mainwindow.cpp" line="145"/> <source>light</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="144"/>+ <location filename="mainwindow.cpp" line="146"/> <source>dark</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="145"/>+ <location filename="mainwindow.cpp" line="147"/> <source>B16 light</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="146"/>+ <location filename="mainwindow.cpp" line="148"/> <source>B16 dark</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="159"/>+ <location filename="mainwindow.cpp" line="151"/>+ <source>Please select a Server</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="156"/>+ <source>Could not find LSP profiles. Check installation.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="172"/> <source>Could not find syntax definitions. Check installation.</source> <translation>Definiciones de sintaxis no encontradas. Revise su instalacion.</translation> </message> <message>- <location filename="mainwindow.cpp" line="275"/>+ <location filename="mainwindow.cpp" line="296"/> <source>NTFS Short Names</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="275"/>+ <location filename="mainwindow.cpp" line="296"/> <source>NTFS short names may be disabled on your volumes. Highlight can not read input with multibyte file names if no short name is available. This information will no longer bother you.</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="278"/>+ <location filename="mainwindow.cpp" line="299"/> <source>Always at your service</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="325"/>+ <location filename="mainwindow.cpp" line="343"/> <source>Select one or more files to open</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="362"/>+ <location filename="mainwindow.cpp" line="380"/> <source>Select destination directory</source> <translation type="unfinished"></translation> </message>@@ -80,118 +91,143 @@ Revise su instalacion.</translation> <translation type="obsolete">No se pudieron leer las etiquetas de "%1"</translation> </message> <message>- <location filename="mainwindow.cpp" line="1039"/>- <location filename="mainwindow.cpp" line="1070"/>+ <location filename="mainwindow.cpp" line="1130"/>+ <location filename="mainwindow.cpp" line="1161"/> <source>Output error</source> <translation>Error de salida</translation> </message> <message>- <location filename="mainwindow.cpp" line="1039"/>+ <location filename="mainwindow.cpp" line="1130"/> <source>Output directory does not exist!</source> <translation>¡Directorio de salida no existe!</translation> </message> <message>- <location filename="mainwindow.cpp" line="1070"/>+ <location filename="mainwindow.cpp" line="1161"/> <source>You must define a style output file!</source> <translation>¡Debe especificar un archivo de estilo de salida!</translation> </message> <message>- <location filename="mainwindow.cpp" line="1119"/>+ <location filename="mainwindow.cpp" line="1213"/> <source>Processing %1 (%2/%3)</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="1129"/>+ <location filename="mainwindow.cpp" line="1223"/> <source>Language definition error</source> <translation>Error de definición de lenguaje</translation> </message> <message>- <location filename="mainwindow.cpp" line="1130"/>+ <location filename="mainwindow.cpp" line="1224"/> <source>Invalid regular expression in %1: %2</source> <translation>Expresión regular inválida en %1: %2</translation> </message> <message>- <location filename="mainwindow.cpp" line="1134"/>+ <location filename="mainwindow.cpp" line="1228"/> <source>Unknown syntax</source> <translation>Sintaxis desconocida</translation> </message> <message>- <location filename="mainwindow.cpp" line="1134"/>+ <location filename="mainwindow.cpp" line="1228"/> <source>Could not convert %1</source> <translation>No se pudo convertir %1</translation> </message> <message>- <location filename="mainwindow.cpp" line="1137"/>+ <location filename="mainwindow.cpp" line="1231"/> <source>Lua error</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="1137"/>+ <location filename="mainwindow.cpp" line="1231"/> <source>Could not convert %1: Lua Syntax error: %2</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="1284"/>+ <location filename="mainwindow.cpp" line="1406"/> <source>Converted %1 files in %2 ms</source> <translation>Se convirtieron%1 archivos en %2 ms</translation> </message> <message>- <location filename="mainwindow.cpp" line="1473"/>+ <location filename="mainwindow.cpp" line="1610"/> <source>Conversion of "%1" not possible.</source> <translation>No es posible la conversión de "%1".</translation> </message> <message>- <location filename="mainwindow.cpp" line="1473"/>- <location filename="mainwindow.cpp" line="1614"/>- <location filename="mainwindow.cpp" line="1660"/>+ <location filename="mainwindow.cpp" line="1610"/>+ <location filename="mainwindow.cpp" line="1758"/>+ <location filename="mainwindow.cpp" line="1813"/> <source>clipboard data</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="1544"/>+ <location filename="mainwindow.cpp" line="1689"/> <source>%1 options</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="1587"/>- <location filename="mainwindow.cpp" line="1598"/>+ <location filename="mainwindow.cpp" line="1730"/>+ <location filename="mainwindow.cpp" line="1741"/> <source>(user script)</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="1613"/>+ <location filename="mainwindow.cpp" line="1757"/> <source>Preview (%1):</source> <translation>Previsualización (%1):</translation> </message> <message>- <location filename="mainwindow.cpp" line="1616"/>+ <location filename="mainwindow.cpp" line="1760"/> <source>Current syntax: %1 %2</source> <translation>Sintaxis actual: %1 %2</translation> </message> <message>- <location filename="mainwindow.cpp" line="1617"/>+ <location filename="mainwindow.cpp" line="1761"/> <source>Current theme: %1 %2</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="1620"/>+ <location filename="mainwindow.cpp" line="1764"/> <source>Contrast: %1 %2</source> <translation type="unfinished"></translation> </message>+ <message>+ <location filename="mainwindow.cpp" line="2216"/>+ <source>Language server initialization successful</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="2221"/>+ <source>Language server connection failed</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="2223"/>+ <source>Language server initialization failed</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="2251"/>+ <source>Select workspace directory</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="2255"/>+ <source>Choose the Language Server executable</source>+ <translation type="unfinished"></translation>+ </message> <message> <source>Current syntax: %1</source> <translation type="vanished">Sintaxis actual: %1</translation> </message> <message>- <location filename="mainwindow.cpp" line="1660"/>+ <location filename="mainwindow.cpp" line="1813"/> <source>Preview of "%1" not possible.</source> <translation>No es posible previsualizar "%1".</translation> </message> <message>- <location filename="mainwindow.cpp" line="1906"/>+ <location filename="mainwindow.cpp" line="2063"/> <source>Some plug-in effects may not be visible in the preview.</source> <translation type="unfinished"></translation> </message>@@ -200,20 +236,20 @@ Lua Syntax error: %2</source> <translation type="obsolete">Elija un archivo de ctags</translation> </message> <message>- <location filename="mainwindow.cpp" line="1700"/>- <location filename="mainwindow.cpp" line="1704"/>- <location filename="mainwindow.cpp" line="1708"/>- <location filename="mainwindow.cpp" line="1713"/>+ <location filename="mainwindow.cpp" line="1857"/>+ <location filename="mainwindow.cpp" line="1861"/>+ <location filename="mainwindow.cpp" line="1865"/>+ <location filename="mainwindow.cpp" line="1870"/> <source>Choose a style include file</source> <translation>Elija un archivo de inclusión de estilo</translation> </message> <message>- <location filename="mainwindow.cpp" line="1718"/>+ <location filename="mainwindow.cpp" line="1875"/> <source>About providing translations</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="1719"/>+ <location filename="mainwindow.cpp" line="1876"/> <source>The GUI was developed using the Qt toolkit, and translations may be provided using the tools Qt Linguist and lrelease. The highlight.ts file for Linguist resides in the src/gui-qt subdirectory. The qm file generated by lrelease has to be saved in gui-files/l10n.@@ -222,17 +258,17 @@ Please send a note to as (at) andre-simon (dot) de if you have issues during tra <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="1777"/>+ <location filename="mainwindow.cpp" line="1934"/> <source>Select one or more plug-ins</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="1788"/>+ <location filename="mainwindow.cpp" line="1945"/> <source>Select one or more syntax or theme scripts</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="1848"/>+ <location filename="mainwindow.cpp" line="2005"/> <source>Choose a plug-in input file</source> <translation type="unfinished"></translation> </message>@@ -295,10 +331,12 @@ Please send a note to as (at) andre-simon (dot) de if you have issues during tra <message> <location filename="mainwindow.ui" line="310"/> <location filename="mainwindow.ui" line="669"/>- <location filename="mainwindow.ui" line="1333"/>- <location filename="mainwindow.ui" line="1602"/>- <location filename="mainwindow.ui" line="1710"/>- <location filename="mainwindow.ui" line="2005"/>+ <location filename="mainwindow.ui" line="819"/>+ <location filename="mainwindow.ui" line="884"/>+ <location filename="mainwindow.ui" line="1509"/>+ <location filename="mainwindow.ui" line="1778"/>+ <location filename="mainwindow.ui" line="1886"/>+ <location filename="mainwindow.ui" line="2181"/> <source>...</source> <translation>...</translation> </message>@@ -317,100 +355,100 @@ Please send a note to as (at) andre-simon (dot) de if you have issues during tra <translation type="obsolete">Opciones de salida</translation> </message> <message>- <location filename="mainwindow.ui" line="788"/>+ <location filename="mainwindow.ui" line="964"/> <source>General</source> <translation>General</translation> </message> <message>- <location filename="mainwindow.ui" line="808"/>+ <location filename="mainwindow.ui" line="984"/> <source>Output for&mat:</source> <oldsource>Output format:</oldsource> <translation type="unfinished">Formato de salida:</translation> </message> <message>- <location filename="mainwindow.ui" line="830"/>+ <location filename="mainwindow.ui" line="1006"/> <source>Choose an output format.</source> <translation>Elija un formato de salida.</translation> </message> <message>- <location filename="mainwindow.ui" line="834"/>+ <location filename="mainwindow.ui" line="1010"/> <source>HTML</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="839"/>+ <location filename="mainwindow.ui" line="1015"/> <source>XHTML</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="844"/>+ <location filename="mainwindow.ui" line="1020"/> <source>LaTeX</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="849"/>+ <location filename="mainwindow.ui" line="1025"/> <source>TeX</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="854"/>+ <location filename="mainwindow.ui" line="1030"/> <source>RTF</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="859"/>+ <location filename="mainwindow.ui" line="1035"/> <source>ODT</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="864"/>+ <location filename="mainwindow.ui" line="1040"/> <source>SVG</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="903"/>+ <location filename="mainwindow.ui" line="1079"/> <source>Add line numbers to the output.</source> <translation>Agregar números de linea a la salida.</translation> </message> <message>- <location filename="mainwindow.ui" line="906"/>+ <location filename="mainwindow.ui" line="1082"/> <source>Add line numbers</source> <translation>Agregar números de linea</translation> </message> <message>- <location filename="mainwindow.ui" line="945"/>+ <location filename="mainwindow.ui" line="1121"/> <source>Select the line number width.</source> <translation>Seleccione el ancho de número de linea.</translation> </message> <message>- <location filename="mainwindow.ui" line="966"/>+ <location filename="mainwindow.ui" line="1142"/> <source>Fill leading space of line numbers with zeroes.</source> <translation>Llenar espacio antes de los números de lineas con ceros.</translation> </message> <message>- <location filename="mainwindow.ui" line="969"/>+ <location filename="mainwindow.ui" line="1145"/> <source>Pad with zeroes</source> <translation>Rellenar con ceros</translation> </message> <message>- <location filename="mainwindow.ui" line="982"/>+ <location filename="mainwindow.ui" line="1158"/> <source>Generate output without document header and footer.</source> <translation>Generar documento de salida con cabecera y pie de página.</translation> </message> <message>- <location filename="mainwindow.ui" line="985"/>+ <location filename="mainwindow.ui" line="1161"/> <source>Omit header and footer</source> <translation>Omitir cabecera y pie de página</translation> </message> <message>- <location filename="mainwindow.ui" line="1002"/>+ <location filename="mainwindow.ui" line="1178"/> <source>Test if input data is not binary. Removes Unicode BOM mark.</source> <translation>Probar si los datos de entrada no son binarios. Remueve marca BOM de Unicode.</translation> </message> <message>- <location filename="mainwindow.ui" line="1006"/>+ <location filename="mainwindow.ui" line="1182"/> <source>Validate input data</source> <translation>Validar datos de entrada</translation> </message>@@ -423,94 +461,94 @@ Remueve marca BOM de Unicode.</translation> <translation type="obsolete">Codificación:</translation> </message> <message>- <location filename="mainwindow.ui" line="1035"/>+ <location filename="mainwindow.ui" line="1211"/> <source>Select or define the encoding. The result has to match the input file encoding.</source> <translation>Elija o defina la codificación. El resultado tiene que corresponder a la codificación del archivo de entrada.</translation> </message> <message>- <location filename="mainwindow.ui" line="1046"/>+ <location filename="mainwindow.ui" line="1222"/> <source>ISO-8859-1</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1051"/>+ <location filename="mainwindow.ui" line="1227"/> <source>ISO-8859-2</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1056"/>+ <location filename="mainwindow.ui" line="1232"/> <source>ISO-8859-3</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1061"/>+ <location filename="mainwindow.ui" line="1237"/> <source>ISO-8859-4</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1066"/>+ <location filename="mainwindow.ui" line="1242"/> <source>ISO-8859-5</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1071"/>+ <location filename="mainwindow.ui" line="1247"/> <source>ISO-8859-6</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1076"/>+ <location filename="mainwindow.ui" line="1252"/> <source>ISO-8859-7</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1081"/>+ <location filename="mainwindow.ui" line="1257"/> <source>ISO-8859-8</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1086"/>+ <location filename="mainwindow.ui" line="1262"/> <source>ISO-8859-9</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1091"/>+ <location filename="mainwindow.ui" line="1267"/> <source>ISO-8859-10</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1096"/>+ <location filename="mainwindow.ui" line="1272"/> <source>ISO-8859-11</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1101"/>+ <location filename="mainwindow.ui" line="1277"/> <source>ISO-8859-12</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1106"/>+ <location filename="mainwindow.ui" line="1282"/> <source>ISO-8859-13</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1111"/>+ <location filename="mainwindow.ui" line="1287"/> <source>ISO-8859-14</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1116"/>+ <location filename="mainwindow.ui" line="1292"/> <source>ISO-8859-15</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1121"/>+ <location filename="mainwindow.ui" line="1297"/> <source>UTF-8</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1145"/>+ <location filename="mainwindow.ui" line="1321"/> <source>Output specific</source> <translation>Esoecificas de salida</translation> </message>@@ -523,26 +561,26 @@ El resultado tiene que corresponder a la codificación del archivo de entrada.</ <translation type="obsolete">Hoja de estilo</translation> </message> <message>- <location filename="mainwindow.ui" line="1194"/>- <location filename="mainwindow.ui" line="1520"/>- <location filename="mainwindow.ui" line="1628"/>- <location filename="mainwindow.ui" line="1923"/>+ <location filename="mainwindow.ui" line="1370"/>+ <location filename="mainwindow.ui" line="1696"/>+ <location filename="mainwindow.ui" line="1804"/>+ <location filename="mainwindow.ui" line="2099"/> <source>Include the style information in each output file.</source> <translation>Incluir la información de estilo en cada archivo de salida.</translation> </message> <message>- <location filename="mainwindow.ui" line="1197"/>- <location filename="mainwindow.ui" line="1926"/>+ <location filename="mainwindow.ui" line="1373"/>+ <location filename="mainwindow.ui" line="2102"/> <source>Embed style (CSS)</source> <translation>Incrustar estilo (CSS)</translation> </message> <message>- <location filename="mainwindow.ui" line="1210"/>+ <location filename="mainwindow.ui" line="1386"/> <source>Add CSS information to each tag (do not use CSS class definitions).</source> <translation>Agregar información de CSS a cada etiqueta (no utilizar definiciones de clase de CSS).</translation> </message> <message>- <location filename="mainwindow.ui" line="1213"/>+ <location filename="mainwindow.ui" line="1389"/> <source>Inline CSS</source> <translation></translation> </message>@@ -551,15 +589,15 @@ El resultado tiene que corresponder a la codificación del archivo de entrada.</ <translation type="obsolete">Archivo de estilo:</translation> </message> <message>- <location filename="mainwindow.ui" line="1273"/>- <location filename="mainwindow.ui" line="1656"/>- <location filename="mainwindow.ui" line="1951"/>+ <location filename="mainwindow.ui" line="1449"/>+ <location filename="mainwindow.ui" line="1832"/>+ <location filename="mainwindow.ui" line="2127"/> <source>Name of the referenced style file.</source> <translation>Nombre del archivo de estilo citado.</translation> </message> <message>- <location filename="mainwindow.ui" line="1276"/>- <location filename="mainwindow.ui" line="1954"/>+ <location filename="mainwindow.ui" line="1452"/>+ <location filename="mainwindow.ui" line="2130"/> <source>highlight.css</source> <translation></translation> </message>@@ -568,23 +606,23 @@ El resultado tiene que corresponder a la codificación del archivo de entrada.</ <translation type="obsolete">Archivo de estilo a incluir:</translation> </message> <message>- <location filename="mainwindow.ui" line="1317"/>- <location filename="mainwindow.ui" line="1989"/>+ <location filename="mainwindow.ui" line="1493"/>+ <location filename="mainwindow.ui" line="2165"/> <source>Path of the CSS include file.</source> <translation>Ruta del archivo CSS a incluir.</translation> </message> <message>- <location filename="mainwindow.ui" line="1330"/>+ <location filename="mainwindow.ui" line="1506"/> <source>Select a CSS include file.</source> <translation>Seleccionar un archivo CSS a incluir.</translation> </message> <message>- <location filename="mainwindow.ui" line="1227"/>+ <location filename="mainwindow.ui" line="1403"/> <source>CSS class prefix:</source> <translation>Prefijo de clase de CSS:</translation> </message> <message>- <location filename="mainwindow.ui" line="1240"/>+ <location filename="mainwindow.ui" line="1416"/> <source>Add a CSS class name prefix to avoid namespace clashes.</source> <translation>Agregue un prefijo de nombre de clase de CSS para evitar conflictos.</translation> </message>@@ -593,12 +631,12 @@ El resultado tiene que corresponder a la codificación del archivo de entrada.</ <translation type="obsolete">Archivos de etiquetas e índice</translation> </message> <message>- <location filename="mainwindow.ui" line="1415"/>+ <location filename="mainwindow.ui" line="1591"/> <source>Generate an index file with hyperlinks to all outputted files.</source> <translation>Generar un archivo de indice con enlaces a todos los archivos de salida.</translation> </message> <message>- <location filename="mainwindow.ui" line="1418"/>+ <location filename="mainwindow.ui" line="1594"/> <source>Generate index file</source> <translation>Generar archivo de índice</translation> </message>@@ -621,7 +659,7 @@ Vea ctags.sf.net para más detalles.</translation> <translation type="obsolete">Elijir un archivo de ctags.</translation> </message> <message>- <location filename="mainwindow.ui" line="1359"/>+ <location filename="mainwindow.ui" line="1535"/> <source>Misc</source> <translation>Miscelaneo</translation> </message>@@ -630,22 +668,22 @@ Vea ctags.sf.net para más detalles.</translation> <translation type="vanished">Agregar una ancla a cada linea.</translation> </message> <message>- <location filename="mainwindow.ui" line="1381"/>+ <location filename="mainwindow.ui" line="1557"/> <source>Add line anchors</source> <translation>Agregar ancla por linea</translation> </message> <message>- <location filename="mainwindow.ui" line="1388"/>+ <location filename="mainwindow.ui" line="1564"/> <source>Add the filename as prefix to the anchors.</source> <translation>Agregar el nombre de archivo como prefijo a las anclas.</translation> </message> <message>- <location filename="mainwindow.ui" line="1391"/>+ <location filename="mainwindow.ui" line="1567"/> <source>Include file name in anchor</source> <translation>Incluir el nombre de archivo en el ancla</translation> </message> <message>- <location filename="mainwindow.ui" line="1398"/>+ <location filename="mainwindow.ui" line="1574"/> <source>Output the lines within an ordered list.</source> <translation>Producir las lineas de salida dentro de una lista ordenada.</translation> </message>@@ -654,7 +692,7 @@ Vea ctags.sf.net para más detalles.</translation> <translation type="obsolete">Lista ordenada</translation> </message> <message>- <location filename="mainwindow.ui" line="1425"/>+ <location filename="mainwindow.ui" line="1601"/> <source>Add &lt;pre&gt; tags to the output, if the flag "No document header and footer" is selected.</source> <translation>Agregar etiquetas &lt;pre&gt; a la salida, si la opción "Sin cabecera ni pie de página" está seleccionada.</translation> </message>@@ -667,12 +705,12 @@ Vea ctags.sf.net para más detalles.</translation> <translation type="obsolete">Opciones de LaTeX</translation> </message> <message>- <location filename="mainwindow.ui" line="1473"/>+ <location filename="mainwindow.ui" line="1649"/> <source>Replace quotes by dq sequences.</source> <translation>Reemplazar comillas por sucesiones de dobles comillas.</translation> </message> <message>- <location filename="mainwindow.ui" line="1476"/>+ <location filename="mainwindow.ui" line="1652"/> <source>Escape quotes</source> <translation>Sobrepasar comillas</translation> </message>@@ -685,7 +723,7 @@ Vea ctags.sf.net para más detalles.</translation> <translation type="obsolete">Compatibilidad con Babel</translation> </message> <message>- <location filename="mainwindow.ui" line="1503"/>+ <location filename="mainwindow.ui" line="1679"/> <source>Replace default symbols (brackets, tilde) by nice redefinitions.</source> <translation>Reemplazar símbolos por defecto (llaves, corchetes, tildes) por redefiniciones apropiadas.</translation> </message>@@ -694,18 +732,18 @@ Vea ctags.sf.net para más detalles.</translation> <translation type="obsolete">Símbolos lindos</translation> </message> <message>- <location filename="mainwindow.ui" line="1523"/>+ <location filename="mainwindow.ui" line="1699"/> <source>Embed style (defs)</source> <translation>Incrustar estilo</translation> </message> <message>- <location filename="mainwindow.ui" line="1548"/>+ <location filename="mainwindow.ui" line="1724"/> <source>Name of the referenced style file.</source> <translation>Nombre del archivo de estilo citado.</translation> </message> <message>- <location filename="mainwindow.ui" line="1551"/>- <location filename="mainwindow.ui" line="1659"/>+ <location filename="mainwindow.ui" line="1727"/>+ <location filename="mainwindow.ui" line="1835"/> <source>highlight.sty</source> <translation></translation> </message>@@ -714,7 +752,7 @@ Vea ctags.sf.net para más detalles.</translation> <translation type="obsolete">Incluir estilo:</translation> </message> <message>- <location filename="mainwindow.ui" line="1028"/>+ <location filename="mainwindow.ui" line="1204"/> <source>Set encoding:</source> <translation type="unfinished"></translation> </message>@@ -724,18 +762,18 @@ Vea ctags.sf.net para más detalles.</translation> <translation>Destino de salida</translation> </message> <message>- <location filename="mainwindow.ui" line="1254"/>- <location filename="mainwindow.ui" line="1532"/>- <location filename="mainwindow.ui" line="1640"/>- <location filename="mainwindow.ui" line="1935"/>+ <location filename="mainwindow.ui" line="1430"/>+ <location filename="mainwindow.ui" line="1708"/>+ <location filename="mainwindow.ui" line="1816"/>+ <location filename="mainwindow.ui" line="2111"/> <source>Stylesheet file:</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="1287"/>- <location filename="mainwindow.ui" line="1562"/>- <location filename="mainwindow.ui" line="1670"/>- <location filename="mainwindow.ui" line="1965"/>+ <location filename="mainwindow.ui" line="1463"/>+ <location filename="mainwindow.ui" line="1738"/>+ <location filename="mainwindow.ui" line="1846"/>+ <location filename="mainwindow.ui" line="2141"/> <source>Stylesheet include file:</source> <translation type="unfinished"></translation> </message>@@ -893,151 +931,256 @@ Vea ctags.sf.net para más detalles.</translation> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="869"/>+ <location filename="mainwindow.ui" line="757"/>+ <source>Configure the LSP Client</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="764"/>+ <source>LSP</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="772"/>+ <source>Language Server:</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="779"/>+ <source>Select a Language Server profile.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="796"/>+ <source>Executable:</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="803"/>+ <source>Path of the server executable.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="816"/>+ <source>Select the server executable.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="830"/>+ <source>Print LSP messages to standard error</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="833"/>+ <source>Output Logs</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="840"/>+ <source>Start an initialization request.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="843"/>+ <source>Check Capabilities</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="861"/>+ <source>Workspace:</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="868"/>+ <source>The workspace directory.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="881"/>+ <source>Select the workspace directory of your project.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="893"/>+ <source>Run hover requests to add tooltips to your output (HTML only).</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="896"/>+ <source>Hover</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="906"/>+ <source>Improve token recognition with semantic highlighting.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="909"/>+ <source>Semantic Highlighting</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="919"/>+ <source>Show syntax errors and messages (depends on output format).</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="922"/>+ <source>Show Syntax Errors</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="1045"/> <source>BBCode</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="874"/>+ <location filename="mainwindow.ui" line="1050"/> <source>ANSI ESC</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="879"/>+ <location filename="mainwindow.ui" line="1055"/> <source>XTerm256 ESC</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="884"/>+ <location filename="mainwindow.ui" line="1060"/> <source>Truecolor ESC</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="926"/>+ <location filename="mainwindow.ui" line="1102"/> <source>Set line numbering start.</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="992"/>+ <location filename="mainwindow.ui" line="1168"/> <source>Output any plug-in text injections even if document header and footer is omitted.</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="995"/>+ <location filename="mainwindow.ui" line="1171"/> <source>Keep Plug-In injections</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="1013"/>+ <location filename="mainwindow.ui" line="1189"/> <source>Generate output without version information comment.</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="1016"/>+ <location filename="mainwindow.ui" line="1192"/> <source>Omit version info comment</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="1025"/>+ <location filename="mainwindow.ui" line="1201"/> <source>Set the output file encoding.</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="1186"/>+ <location filename="mainwindow.ui" line="1362"/> <source>Stylesheets</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="1371"/>+ <location filename="mainwindow.ui" line="1547"/> <source>Line numbering options:</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="1378"/>+ <location filename="mainwindow.ui" line="1554"/> <source>Add an anchor to each line.</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="1401"/>+ <location filename="mainwindow.ui" line="1577"/> <source>Output as ordered list</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="1428"/>+ <location filename="mainwindow.ui" line="1604"/> <source>Enclose in pre tags</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="1442"/>+ <location filename="mainwindow.ui" line="1618"/> <source>Add HTML MIME Type when copying code to the clipboard</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="1445"/>+ <location filename="mainwindow.ui" line="1621"/> <source>Copy with MIME type</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="1483"/>+ <location filename="mainwindow.ui" line="1659"/> <source>Adapt output for the Babel package</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="1486"/>+ <location filename="mainwindow.ui" line="1662"/> <source>Add Babel compatibility</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="1493"/>+ <location filename="mainwindow.ui" line="1669"/> <source>Adapt output for the Beamer package</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="1496"/>+ <location filename="mainwindow.ui" line="1672"/> <source>Add Beamer compatibility</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="1506"/>+ <location filename="mainwindow.ui" line="1682"/> <source>Add pretty symbols</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="1586"/>- <location filename="mainwindow.ui" line="1694"/>+ <location filename="mainwindow.ui" line="1762"/>+ <location filename="mainwindow.ui" line="1870"/> <source>Path of the style include file.</source> <translation>Ruta del archivo de estilo a incluir.</translation> </message> <message>- <location filename="mainwindow.ui" line="1599"/>- <location filename="mainwindow.ui" line="1707"/>- <location filename="mainwindow.ui" line="2002"/>+ <location filename="mainwindow.ui" line="1775"/>+ <location filename="mainwindow.ui" line="1883"/>+ <location filename="mainwindow.ui" line="2178"/> <source>Select a style include file.</source> <translation>Seleccione un archivo de estilo a incluir.</translation> </message> <message>- <location filename="mainwindow.ui" line="1747"/>+ <location filename="mainwindow.ui" line="1923"/> <source>Set page color attribute to background color.</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="2149"/>+ <location filename="mainwindow.ui" line="2328"/> <source>Reformat and indent your code. This feature is enabled for C, C++, C# and Java code.</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="2369"/>+ <location filename="mainwindow.ui" line="2536"/>+ <source>DejaVu Sans Mono</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="2551"/> <source>Font si&ze:</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="2480"/>+ <location filename="mainwindow.ui" line="2662"/> <source>&Plug-Ins</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="2485"/>+ <location filename="mainwindow.ui" line="2667"/> <source>&File access trace (W32)</source> <translation type="unfinished"></translation> </message>@@ -1046,7 +1189,7 @@ This feature is enabled for C, C++, C# and Java code.</source> <translation type="obsolete">Opciones de TeX</translation> </message> <message>- <location filename="mainwindow.ui" line="1631"/>+ <location filename="mainwindow.ui" line="1807"/> <source>Embed style (macros)</source> <translation>Estilo de incrustación (macros)</translation> </message>@@ -1055,64 +1198,64 @@ This feature is enabled for C, C++, C# and Java code.</source> <translation type="obsolete">Opciones de RTF</translation> </message> <message>- <location filename="mainwindow.ui" line="1736"/>+ <location filename="mainwindow.ui" line="1912"/> <source>Add character stylesheets with formatting information. You can select the stylesheets in your word processor to reformat additional text.</source> <translation>Agregar hojas de estilo de caracteres con informacion de formato. Puede selecionar la hoja de estilo en su procesador de textos para dar formato nuevamente a texto adicional.</translation> </message> <message>- <location filename="mainwindow.ui" line="1740"/>+ <location filename="mainwindow.ui" line="1916"/> <source>Add character styles</source> <translation>Agregar estilos de caracteres</translation> </message> <message>- <location filename="mainwindow.ui" line="1759"/>+ <location filename="mainwindow.ui" line="1935"/> <source>Page size:</source> <translation>Tamaño de paǵina:</translation> </message> <message>- <location filename="mainwindow.ui" line="1772"/>+ <location filename="mainwindow.ui" line="1948"/> <source>Select a page size.</source> <translation>Seleccionar un tamaño de página.</translation> </message> <message>- <location filename="mainwindow.ui" line="1779"/>+ <location filename="mainwindow.ui" line="1955"/> <source>A3</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1784"/>+ <location filename="mainwindow.ui" line="1960"/> <source>A4</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1789"/>+ <location filename="mainwindow.ui" line="1965"/> <source>A5</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1794"/>+ <location filename="mainwindow.ui" line="1970"/> <source>B4</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1799"/>+ <location filename="mainwindow.ui" line="1975"/> <source>B5</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1804"/>+ <location filename="mainwindow.ui" line="1980"/> <source>B6</source> <translation></translation> </message> <message>- <location filename="mainwindow.ui" line="1809"/>+ <location filename="mainwindow.ui" line="1985"/> <source>Letter</source> <translation>Carta</translation> </message> <message>- <location filename="mainwindow.ui" line="1814"/>+ <location filename="mainwindow.ui" line="1990"/> <source>Legal</source> <translation>Oficio</translation> </message>@@ -1129,37 +1272,37 @@ Puede selecionar la hoja de estilo en su procesador de textos para dar formato n <translation type="vanished">Ancho:</translation> </message> <message>- <location filename="mainwindow.ui" line="1871"/>+ <location filename="mainwindow.ui" line="2047"/> <source>Enter the SVG width (may contain units).</source> <translation>Introducir el ancho de SVG (puede incluir unidades).</translation> </message> <message>- <location filename="mainwindow.ui" line="1891"/>+ <location filename="mainwindow.ui" line="2067"/> <source>Height:</source> <translation>Alto:</translation> </message> <message>- <location filename="mainwindow.ui" line="1907"/>+ <location filename="mainwindow.ui" line="2083"/> <source>Enter the SVG height (may contain units).</source> <translation>Introducir el alto de SVG (puede incluir unidades).</translation> </message> <message>- <location filename="mainwindow.ui" line="2031"/>+ <location filename="mainwindow.ui" line="2207"/> <source>No options defined.</source> <translation>No hay opciones definidas.</translation> </message> <message>- <location filename="mainwindow.ui" line="2056"/>+ <location filename="mainwindow.ui" line="2232"/> <source>Formatting</source> <translation>Formato</translation> </message> <message>- <location filename="mainwindow.ui" line="2085"/>+ <location filename="mainwindow.ui" line="2261"/> <source>Color theme:</source> <translation>Tema de color:</translation> </message> <message>- <location filename="mainwindow.ui" line="2132"/>+ <location filename="mainwindow.ui" line="2308"/> <source>Select a colour theme.</source> <translation>Seleccionar un tema de color.</translation> </message>@@ -1170,84 +1313,84 @@ This feature is enabled tor C, C++, C# and Java code.</source> Esta propiedad esta habilitada para código en C, C++, C# y Java.</translation> </message> <message>- <location filename="mainwindow.ui" line="2153"/>+ <location filename="mainwindow.ui" line="2332"/> <source>Reformat:</source> <translation>Dar formato nuevamente:</translation> </message> <message>- <location filename="mainwindow.ui" line="2172"/>+ <location filename="mainwindow.ui" line="2351"/> <source>Choose a formatting scheme.</source> <translation>Elija un esquema de formato.</translation> </message> <message>- <location filename="mainwindow.ui" line="2186"/>+ <location filename="mainwindow.ui" line="2365"/> <source>Change the keyword case.</source> <translation>Cambiar mayúsculas/minúsculas en palabras reservadas.</translation> </message> <message>- <location filename="mainwindow.ui" line="2189"/>+ <location filename="mainwindow.ui" line="2368"/> <source>Keyword case:</source> <translation>Mayúsculas/minúsculas de palabras reservadas:</translation> </message> <message>- <location filename="mainwindow.ui" line="2208"/>+ <location filename="mainwindow.ui" line="2387"/> <source>Select a keyword case.</source> <translation>Seleccione un estilo de mayúsculas/minúsculas.</translation> </message> <message>- <location filename="mainwindow.ui" line="2215"/>+ <location filename="mainwindow.ui" line="2394"/> <source>UPPER</source> <translation>MAYÚSCULAS</translation> </message> <message>- <location filename="mainwindow.ui" line="2220"/>+ <location filename="mainwindow.ui" line="2399"/> <source>lower</source> <translation>minúsculas</translation> </message> <message>- <location filename="mainwindow.ui" line="2225"/>+ <location filename="mainwindow.ui" line="2404"/> <source>Capitalize</source> <translation>Primera Letra Mayúscula</translation> </message> <message>- <location filename="mainwindow.ui" line="2243"/>+ <location filename="mainwindow.ui" line="2422"/> <source>Tab width:</source> <translation>Ancho de tabulador:</translation> </message> <message>- <location filename="mainwindow.ui" line="2259"/>+ <location filename="mainwindow.ui" line="2438"/> <source>Enter the number of spaces which replace a tab. Set the width to 0 to keep tabs.</source> <translation>Introducir el número de espacios que reemplazaran un tabulador. En caso de ser 0 se mantendrán los tabuladores.</translation> </message> <message>- <location filename="mainwindow.ui" line="2274"/>+ <location filename="mainwindow.ui" line="2453"/> <source>Enable line wrapping.</source> <translation>Habilitar romper lineas.</translation> </message> <message>- <location filename="mainwindow.ui" line="2277"/>+ <location filename="mainwindow.ui" line="2456"/> <source>Line wrapping</source> <translation>Romper lineas</translation> </message> <message>- <location filename="mainwindow.ui" line="2290"/>+ <location filename="mainwindow.ui" line="2469"/> <source>Enter the maximum line length.</source> <translation>Introducir longitud máxima de linea.</translation> </message> <message>- <location filename="mainwindow.ui" line="2309"/>+ <location filename="mainwindow.ui" line="2488"/> <source>Indent statements and function parameters after wrapping.</source> <translation>Indentar instrucciones y parámetros de funciones después de romper la linea.</translation> </message> <message>- <location filename="mainwindow.ui" line="2312"/>+ <location filename="mainwindow.ui" line="2491"/> <source>Intelligent wrapping</source> <translation>Rompido inteligente</translation> </message> <message>- <location filename="mainwindow.ui" line="2333"/>+ <location filename="mainwindow.ui" line="2512"/> <source>Font na&me:</source> <oldsource>Font name:</oldsource> <translation type="unfinished">Nombre de la fuente:</translation>@@ -1261,18 +1404,18 @@ En caso de ser 0 se mantendrán los tabuladores.</translation> <translation type="vanished">Tamaño de la fuente:</translation> </message> <message>- <location filename="mainwindow.ui" line="2391"/>+ <location filename="mainwindow.ui" line="2573"/> <source>Enter the font size.</source> <translation>Introducir el tamaño de la fuente.</translation> </message> <message>- <location filename="mainwindow.ui" line="2464"/>+ <location filename="mainwindow.ui" line="2646"/> <source>&Visit andre-simon.de</source> <oldsource>Visit andre-simon.de</oldsource> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="2475"/>+ <location filename="mainwindow.ui" line="2657"/> <source>&Dock floating panels</source> <translation type="unfinished"></translation> </message>@@ -1357,83 +1500,83 @@ En caso de ser 0 se mantendrán los tabuladores.</translation> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="1750"/>+ <location filename="mainwindow.ui" line="1926"/> <source>Set page color</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="1843"/>+ <location filename="mainwindow.ui" line="2019"/> <source>I&mage width:</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="2319"/>+ <location filename="mainwindow.ui" line="2498"/> <source>Do not add line numbering to lines which were automatically wrapped.</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="2322"/>+ <location filename="mainwindow.ui" line="2501"/> <source>Omit line numbers of wrapped lines</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="2354"/>+ <location filename="mainwindow.ui" line="2533"/> <source>Select or enter the font name. HTML supports a list of fonts, separated with comma.</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="2406"/>+ <location filename="mainwindow.ui" line="2588"/> <source>&Open files</source> <translation>Ab&rir archivos</translation> </message> <message>- <location filename="mainwindow.ui" line="2411"/>+ <location filename="mainwindow.ui" line="2593"/> <source>&Exit</source> <translation>&Salir</translation> </message> <message>- <location filename="mainwindow.ui" line="2416"/>+ <location filename="mainwindow.ui" line="2598"/> <source>&Load</source> <translation>&Cargar</translation> </message> <message>- <location filename="mainwindow.ui" line="2421"/>+ <location filename="mainwindow.ui" line="2603"/> <source>&Save</source> <translation>&Guardar</translation> </message> <message>- <location filename="mainwindow.ui" line="2426"/>+ <location filename="mainwindow.ui" line="2608"/> <source>Load &default project</source> <translation>Cargar proyecto por &defecto</translation> </message> <message>- <location filename="mainwindow.ui" line="2431"/>+ <location filename="mainwindow.ui" line="2613"/> <source>&Readme</source> <oldsource>Readme</oldsource> <translation type="unfinished">Leeme</translation> </message> <message>- <location filename="mainwindow.ui" line="2436"/>+ <location filename="mainwindow.ui" line="2618"/> <source>&Tips</source> <translation>A&visos</translation> </message> <message>- <location filename="mainwindow.ui" line="2444"/>+ <location filename="mainwindow.ui" line="2626"/> <source>&Changelog</source> <translation>&Bitácora de cambios</translation> </message> <message>- <location filename="mainwindow.ui" line="2449"/>+ <location filename="mainwindow.ui" line="2631"/> <source>&License</source> <translation>&Licencia</translation> </message> <message>- <location filename="mainwindow.ui" line="2454"/>+ <location filename="mainwindow.ui" line="2636"/> <source>&About Highlight</source> <translation>&Acerca de Highlight</translation> </message> <message>- <location filename="mainwindow.ui" line="2459"/>+ <location filename="mainwindow.ui" line="2641"/> <source>A&bout translations</source> <oldsource>About &translations</oldsource> <translation type="unfinished"></translation>
@@ -4,193 +4,229 @@ <context> <name>MainWindow</name> <message>- <location filename="mainwindow.cpp" line="138"/>- <location filename="mainwindow.cpp" line="158"/>+ <location filename="mainwindow.cpp" line="140"/>+ <location filename="mainwindow.cpp" line="155"/>+ <location filename="mainwindow.cpp" line="171"/> <source>Initialization error</source> <translation>Erreur lors de l'initialisation</translation> </message> <message>- <location filename="mainwindow.cpp" line="139"/>+ <location filename="mainwindow.cpp" line="141"/> <source>Could not read a colour theme: </source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="143"/>+ <location filename="mainwindow.cpp" line="145"/> <source>light</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="144"/>+ <location filename="mainwindow.cpp" line="146"/> <source>dark</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="145"/>+ <location filename="mainwindow.cpp" line="147"/> <source>B16 light</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="146"/>+ <location filename="mainwindow.cpp" line="148"/> <source>B16 dark</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="159"/>+ <location filename="mainwindow.cpp" line="151"/>+ <source>Please select a Server</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="156"/>+ <source>Could not find LSP profiles. Check installation.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="172"/> <source>Could not find syntax definitions. Check installation.</source> <translation>Impossible de trouver les définitions des syntaxes. Vérifiez votre installation.</translation> </message> <message>- <location filename="mainwindow.cpp" line="275"/>+ <location filename="mainwindow.cpp" line="296"/> <source>NTFS Short Names</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="275"/>+ <location filename="mainwindow.cpp" line="296"/> <source>NTFS short names may be disabled on your volumes. Highlight can not read input with multibyte file names if no short name is available. This information will no longer bother you.</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="278"/>+ <location filename="mainwindow.cpp" line="299"/> <source>Always at your service</source> <translation>Toujours à votre service</translation> </message> <message>- <location filename="mainwindow.cpp" line="325"/>+ <location filename="mainwindow.cpp" line="343"/> <source>Select one or more files to open</source> <translation>Sélectionnez un ou plusieurs fichiers à ouvrir</translation> </message> <message>- <location filename="mainwindow.cpp" line="362"/>+ <location filename="mainwindow.cpp" line="380"/> <source>Select destination directory</source> <translation>Sélectionnez un répertoire de destination</translation> </message> <message>- <location filename="mainwindow.cpp" line="1039"/>- <location filename="mainwindow.cpp" line="1070"/>+ <location filename="mainwindow.cpp" line="1130"/>+ <location filename="mainwindow.cpp" line="1161"/> <source>Output error</source> <translation>Erreur de sortie</translation> </message> <message>- <location filename="mainwindow.cpp" line="1039"/>+ <location filename="mainwindow.cpp" line="1130"/> <source>Output directory does not exist!</source> <translation>Le répertoire de destination n'existe pas !</translation> </message> <message>- <location filename="mainwindow.cpp" line="1070"/>+ <location filename="mainwindow.cpp" line="1161"/> <source>You must define a style output file!</source> <translation>Vous devez définir un fichier de style de sortie !</translation> </message> <message>- <location filename="mainwindow.cpp" line="1119"/>+ <location filename="mainwindow.cpp" line="1213"/> <source>Processing %1 (%2/%3)</source> <translation>Traitement de %1 (%2/%3)</translation> </message> <message>- <location filename="mainwindow.cpp" line="1129"/>+ <location filename="mainwindow.cpp" line="1223"/> <source>Language definition error</source> <translation>Erreur de définition du langage</translation> </message> <message>- <location filename="mainwindow.cpp" line="1130"/>+ <location filename="mainwindow.cpp" line="1224"/> <source>Invalid regular expression in %1: %2</source> <translation>Expression régulière non valide dans %1 : %2</translation> </message> <message>- <location filename="mainwindow.cpp" line="1134"/>+ <location filename="mainwindow.cpp" line="1228"/> <source>Unknown syntax</source> <translation>Syntaxe inconnue</translation> </message> <message>- <location filename="mainwindow.cpp" line="1134"/>+ <location filename="mainwindow.cpp" line="1228"/> <source>Could not convert %1</source> <translation>Impossible de convertir %1</translation> </message> <message>- <location filename="mainwindow.cpp" line="1137"/>+ <location filename="mainwindow.cpp" line="1231"/> <source>Lua error</source> <translation>Erreur Lua</translation> </message> <message>- <location filename="mainwindow.cpp" line="1137"/>+ <location filename="mainwindow.cpp" line="1231"/> <source>Could not convert %1: Lua Syntax error: %2</source> <translation>Impossible de convertir %1 : Erreur de syntaxe Lua : %2</translation> </message> <message>- <location filename="mainwindow.cpp" line="1284"/>+ <location filename="mainwindow.cpp" line="1406"/> <source>Converted %1 files in %2 ms</source> <translation>%1 fichier(s) converti(s) en %2 ms</translation> </message> <message>- <location filename="mainwindow.cpp" line="1473"/>+ <location filename="mainwindow.cpp" line="1610"/> <source>Conversion of "%1" not possible.</source> <translation>Conversion de "%1" impossible.</translation> </message> <message>- <location filename="mainwindow.cpp" line="1473"/>- <location filename="mainwindow.cpp" line="1614"/>- <location filename="mainwindow.cpp" line="1660"/>+ <location filename="mainwindow.cpp" line="1610"/>+ <location filename="mainwindow.cpp" line="1758"/>+ <location filename="mainwindow.cpp" line="1813"/> <source>clipboard data</source> <translation>données du presse-papiers</translation> </message> <message>- <location filename="mainwindow.cpp" line="1544"/>+ <location filename="mainwindow.cpp" line="1689"/> <source>%1 options</source> <translation>Options de %1</translation> </message> <message>- <location filename="mainwindow.cpp" line="1587"/>- <location filename="mainwindow.cpp" line="1598"/>+ <location filename="mainwindow.cpp" line="1730"/>+ <location filename="mainwindow.cpp" line="1741"/> <source>(user script)</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="1613"/>+ <location filename="mainwindow.cpp" line="1757"/> <source>Preview (%1):</source> <translation>Aperçu (%1) :</translation> </message> <message>- <location filename="mainwindow.cpp" line="1616"/>+ <location filename="mainwindow.cpp" line="1760"/> <source>Current syntax: %1 %2</source> <translation>Syntaxe actuelle : %1 %2</translation> </message> <message>- <location filename="mainwindow.cpp" line="1617"/>+ <location filename="mainwindow.cpp" line="1761"/> <source>Current theme: %1 %2</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="1620"/>+ <location filename="mainwindow.cpp" line="1764"/> <source>Contrast: %1 %2</source> <translation type="unfinished"></translation> </message>+ <message>+ <location filename="mainwindow.cpp" line="2216"/>+ <source>Language server initialization successful</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="2221"/>+ <source>Language server connection failed</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="2223"/>+ <source>Language server initialization failed</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="2251"/>+ <source>Select workspace directory</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="2255"/>+ <source>Choose the Language Server executable</source>+ <translation type="unfinished"></translation>+ </message> <message> <source>Current syntax: %1</source> <translation type="vanished">Syntaxe actuelle : %1</translation> </message> <message>- <location filename="mainwindow.cpp" line="1660"/>+ <location filename="mainwindow.cpp" line="1813"/> <source>Preview of "%1" not possible.</source> <translation>Impossible de donner un aperçu de "%1".</translation> </message> <message>- <location filename="mainwindow.cpp" line="1700"/>- <location filename="mainwindow.cpp" line="1704"/>- <location filename="mainwindow.cpp" line="1708"/>- <location filename="mainwindow.cpp" line="1713"/>+ <location filename="mainwindow.cpp" line="1857"/>+ <location filename="mainwindow.cpp" line="1861"/>+ <location filename="mainwindow.cpp" line="1865"/>+ <location filename="mainwindow.cpp" line="1870"/> <source>Choose a style include file</source> <translation>Choisissez un fichier de style à inclure</translation> </message> <message>- <location filename="mainwindow.cpp" line="1718"/>+ <location filename="mainwindow.cpp" line="1875"/> <source>About providing translations</source> <translation>À propos des traductions</translation> </message> <message>- <location filename="mainwindow.cpp" line="1719"/>+ <location filename="mainwindow.cpp" line="1876"/> <source>The GUI was developed using the Qt toolkit, and translations may be provided using the tools Qt Linguist and lrelease. The highlight.ts file for Linguist resides in the src/gui-qt subdirectory. The qm file generated by lrelease has to be saved in gui-files/l10n.@@ -203,22 +239,22 @@ Le fichier .qm généré par lrelease doit être sauvegardé dans gui-files/l10n Veuillez m'envoyer une note à l'adresse « as (at) andre-simon (dot) de » si vous rencontrez des problèmes durant la traduction ou si vous avez terminé ou mis à jour une traduction.</translation> </message> <message>- <location filename="mainwindow.cpp" line="1777"/>+ <location filename="mainwindow.cpp" line="1934"/> <source>Select one or more plug-ins</source> <translation>Sélectionner un ou plusieurs greffons</translation> </message> <message>- <location filename="mainwindow.cpp" line="1788"/>+ <location filename="mainwindow.cpp" line="1945"/> <source>Select one or more syntax or theme scripts</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="1848"/>+ <location filename="mainwindow.cpp" line="2005"/> <source>Choose a plug-in input file</source> <translation>Choisissez un fichier d'entrée pour le greffon</translation> </message> <message>- <location filename="mainwindow.cpp" line="1906"/>+ <location filename="mainwindow.cpp" line="2063"/> <source>Some plug-in effects may not be visible in the preview.</source> <translation>Certains effets du greffon peuvent ne pas être visibles dans l'aperçu.</translation> </message>@@ -323,10 +359,12 @@ Veuillez m'envoyer une note à l'adresse « as (at) andre-simon (dot) <message> <location filename="mainwindow.ui" line="310"/> <location filename="mainwindow.ui" line="669"/>- <location filename="mainwindow.ui" line="1333"/>- <location filename="mainwindow.ui" line="1602"/>- <location filename="mainwindow.ui" line="1710"/>- <location filename="mainwindow.ui" line="2005"/>+ <location filename="mainwindow.ui" line="819"/>+ <location filename="mainwindow.ui" line="884"/>+ <location filename="mainwindow.ui" line="1509"/>+ <location filename="mainwindow.ui" line="1778"/>+ <location filename="mainwindow.ui" line="1886"/>+ <location filename="mainwindow.ui" line="2181"/> <source>...</source> <translation>…</translation> </message>@@ -516,320 +554,320 @@ Veuillez m'envoyer une note à l'adresse « as (at) andre-simon (dot) <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="788"/>+ <location filename="mainwindow.ui" line="964"/> <source>General</source> <translation>Général</translation> </message> <message>- <location filename="mainwindow.ui" line="808"/>+ <location filename="mainwindow.ui" line="984"/> <source>Output for&mat:</source> <translation>For&mat de sortie :</translation> </message> <message>- <location filename="mainwindow.ui" line="830"/>+ <location filename="mainwindow.ui" line="1006"/> <source>Choose an output format.</source> <translation>Choisir un format de sortie.</translation> </message> <message>- <location filename="mainwindow.ui" line="834"/>+ <location filename="mainwindow.ui" line="1010"/> <source>HTML</source> <translation>HTML</translation> </message> <message>- <location filename="mainwindow.ui" line="839"/>+ <location filename="mainwindow.ui" line="1015"/> <source>XHTML</source> <translation>XHTML</translation> </message> <message>- <location filename="mainwindow.ui" line="844"/>+ <location filename="mainwindow.ui" line="1020"/> <source>LaTeX</source> <translation>LaTeX</translation> </message> <message>- <location filename="mainwindow.ui" line="849"/>+ <location filename="mainwindow.ui" line="1025"/> <source>TeX</source> <translation>TeX</translation> </message> <message>- <location filename="mainwindow.ui" line="854"/>+ <location filename="mainwindow.ui" line="1030"/> <source>RTF</source> <translation>RTF</translation> </message> <message>- <location filename="mainwindow.ui" line="859"/>+ <location filename="mainwindow.ui" line="1035"/> <source>ODT</source> <translation>ODT</translation> </message> <message>- <location filename="mainwindow.ui" line="864"/>+ <location filename="mainwindow.ui" line="1040"/> <source>SVG</source> <translation>SVG</translation> </message> <message>- <location filename="mainwindow.ui" line="869"/>+ <location filename="mainwindow.ui" line="1045"/> <source>BBCode</source> <translation>BBCode</translation> </message> <message>- <location filename="mainwindow.ui" line="903"/>+ <location filename="mainwindow.ui" line="1079"/> <source>Add line numbers to the output.</source> <translation>Ajouter les numéros de ligne à la sortie.</translation> </message> <message>- <location filename="mainwindow.ui" line="906"/>+ <location filename="mainwindow.ui" line="1082"/> <source>Add line numbers</source> <translation>Ajouter les numéros de lignes</translation> </message> <message>- <location filename="mainwindow.ui" line="926"/>+ <location filename="mainwindow.ui" line="1102"/> <source>Set line numbering start.</source> <translation>Définir le début de la numérotation.</translation> </message> <message>- <location filename="mainwindow.ui" line="945"/>+ <location filename="mainwindow.ui" line="1121"/> <source>Select the line number width.</source> <translation>Sélectionner la largeur des numéros de lignes.</translation> </message> <message>- <location filename="mainwindow.ui" line="966"/>+ <location filename="mainwindow.ui" line="1142"/> <source>Fill leading space of line numbers with zeroes.</source> <translation>Remplir l'espace avant les numéros de lignes par des zéros.</translation> </message> <message>- <location filename="mainwindow.ui" line="969"/>+ <location filename="mainwindow.ui" line="1145"/> <source>Pad with zeroes</source> <translation>Compléter avec des zéros</translation> </message> <message>- <location filename="mainwindow.ui" line="982"/>+ <location filename="mainwindow.ui" line="1158"/> <source>Generate output without document header and footer.</source> <translation>Générer la sortie sans haut ni bas de page.</translation> </message> <message>- <location filename="mainwindow.ui" line="985"/>+ <location filename="mainwindow.ui" line="1161"/> <source>Omit header and footer</source> <translation>Omettre haut et bas de page</translation> </message> <message>- <location filename="mainwindow.ui" line="992"/>+ <location filename="mainwindow.ui" line="1168"/> <source>Output any plug-in text injections even if document header and footer is omitted.</source> <translation>Conserver toutes les injections de texte des greffons, même si le haut et le bas de page sont omis.</translation> </message> <message>- <location filename="mainwindow.ui" line="995"/>+ <location filename="mainwindow.ui" line="1171"/> <source>Keep Plug-In injections</source> <translation>Garder les injections des greffons</translation> </message> <message>- <location filename="mainwindow.ui" line="1002"/>+ <location filename="mainwindow.ui" line="1178"/> <source>Test if input data is not binary. Removes Unicode BOM mark.</source> <translation>Vérifier si les données en entrée ne sont pas binaires. Supprime les marques Unicode BOM.</translation> </message> <message>- <location filename="mainwindow.ui" line="1006"/>+ <location filename="mainwindow.ui" line="1182"/> <source>Validate input data</source> <translation>Valider les données en entrée</translation> </message> <message>- <location filename="mainwindow.ui" line="1013"/>+ <location filename="mainwindow.ui" line="1189"/> <source>Generate output without version information comment.</source> <translation>Générer la sortie sans commentaire d'information sur la version.</translation> </message> <message>- <location filename="mainwindow.ui" line="1016"/>+ <location filename="mainwindow.ui" line="1192"/> <source>Omit version info comment</source> <translation>Omettre les informations de version</translation> </message> <message>- <location filename="mainwindow.ui" line="1025"/>+ <location filename="mainwindow.ui" line="1201"/> <source>Set the output file encoding.</source> <translation>Définir l'encodage du fichier de sortie.</translation> </message> <message>- <location filename="mainwindow.ui" line="1028"/>+ <location filename="mainwindow.ui" line="1204"/> <source>Set encoding:</source> <translation>Définir l'encodage :</translation> </message> <message>- <location filename="mainwindow.ui" line="1035"/>+ <location filename="mainwindow.ui" line="1211"/> <source>Select or define the encoding. The result has to match the input file encoding.</source> <translation>Sélectionner ou définir l'encodage. Le résultat doit correspondre à l'encodage du fichier d'entrée.</translation> </message> <message>- <location filename="mainwindow.ui" line="1046"/>+ <location filename="mainwindow.ui" line="1222"/> <source>ISO-8859-1</source> <translation>ISO-8859-1</translation> </message> <message>- <location filename="mainwindow.ui" line="1051"/>+ <location filename="mainwindow.ui" line="1227"/> <source>ISO-8859-2</source> <translation>ISO-8859-2</translation> </message> <message>- <location filename="mainwindow.ui" line="1056"/>+ <location filename="mainwindow.ui" line="1232"/> <source>ISO-8859-3</source> <translation>ISO-8859-3</translation> </message> <message>- <location filename="mainwindow.ui" line="1061"/>+ <location filename="mainwindow.ui" line="1237"/> <source>ISO-8859-4</source> <translation>ISO-8859-4</translation> </message> <message>- <location filename="mainwindow.ui" line="1066"/>+ <location filename="mainwindow.ui" line="1242"/> <source>ISO-8859-5</source> <translation>ISO-8859-5</translation> </message> <message>- <location filename="mainwindow.ui" line="1071"/>+ <location filename="mainwindow.ui" line="1247"/> <source>ISO-8859-6</source> <translation>ISO-8859-6</translation> </message> <message>- <location filename="mainwindow.ui" line="1076"/>+ <location filename="mainwindow.ui" line="1252"/> <source>ISO-8859-7</source> <translation>ISO-8859-7</translation> </message> <message>- <location filename="mainwindow.ui" line="1081"/>+ <location filename="mainwindow.ui" line="1257"/> <source>ISO-8859-8</source> <translation>ISO-8859-8</translation> </message> <message>- <location filename="mainwindow.ui" line="1086"/>+ <location filename="mainwindow.ui" line="1262"/> <source>ISO-8859-9</source> <translation>ISO-8859-9</translation> </message> <message>- <location filename="mainwindow.ui" line="1091"/>+ <location filename="mainwindow.ui" line="1267"/> <source>ISO-8859-10</source> <translation>ISO-8859-10</translation> </message> <message>- <location filename="mainwindow.ui" line="1096"/>+ <location filename="mainwindow.ui" line="1272"/> <source>ISO-8859-11</source> <translation>ISO-8859-11</translation> </message> <message>- <location filename="mainwindow.ui" line="1101"/>+ <location filename="mainwindow.ui" line="1277"/> <source>ISO-8859-12</source> <translation>ISO-8859-12</translation> </message> <message>- <location filename="mainwindow.ui" line="1106"/>+ <location filename="mainwindow.ui" line="1282"/> <source>ISO-8859-13</source> <translation>ISO-8859-13</translation> </message> <message>- <location filename="mainwindow.ui" line="1111"/>+ <location filename="mainwindow.ui" line="1287"/> <source>ISO-8859-14</source> <translation>ISO-8859-14</translation> </message> <message>- <location filename="mainwindow.ui" line="1116"/>+ <location filename="mainwindow.ui" line="1292"/> <source>ISO-8859-15</source> <translation>ISO-8859-15</translation> </message> <message>- <location filename="mainwindow.ui" line="1121"/>+ <location filename="mainwindow.ui" line="1297"/> <source>UTF-8</source> <translation>UTF-8</translation> </message> <message>- <location filename="mainwindow.ui" line="1145"/>+ <location filename="mainwindow.ui" line="1321"/> <source>Output specific</source> <translation>Sortie spécifique</translation> </message> <message>- <location filename="mainwindow.ui" line="1186"/>+ <location filename="mainwindow.ui" line="1362"/> <source>Stylesheets</source> <translation>Feuilles de style</translation> </message> <message>- <location filename="mainwindow.ui" line="1194"/>- <location filename="mainwindow.ui" line="1520"/>- <location filename="mainwindow.ui" line="1628"/>- <location filename="mainwindow.ui" line="1923"/>+ <location filename="mainwindow.ui" line="1370"/>+ <location filename="mainwindow.ui" line="1696"/>+ <location filename="mainwindow.ui" line="1804"/>+ <location filename="mainwindow.ui" line="2099"/> <source>Include the style information in each output file.</source> <translation>Inclure les informations de style dans chaque fichier en sortie.</translation> </message> <message>- <location filename="mainwindow.ui" line="1197"/>- <location filename="mainwindow.ui" line="1926"/>+ <location filename="mainwindow.ui" line="1373"/>+ <location filename="mainwindow.ui" line="2102"/> <source>Embed style (CSS)</source> <translation>Embarquer le style (CSS)</translation> </message> <message>- <location filename="mainwindow.ui" line="1210"/>+ <location filename="mainwindow.ui" line="1386"/> <source>Add CSS information to each tag (do not use CSS class definitions).</source> <translation>Ajouter les informations CSS à chaque étiquette (ne pas utiliser les définitions de classes CSS).</translation> </message> <message>- <location filename="mainwindow.ui" line="1213"/>+ <location filename="mainwindow.ui" line="1389"/> <source>Inline CSS</source> <translation>CSS en ligne</translation> </message> <message>- <location filename="mainwindow.ui" line="1227"/>+ <location filename="mainwindow.ui" line="1403"/> <source>CSS class prefix:</source> <translation>Préfixe de classe CSS :</translation> </message> <message>- <location filename="mainwindow.ui" line="1240"/>+ <location filename="mainwindow.ui" line="1416"/> <source>Add a CSS class name prefix to avoid namespace clashes.</source> <translation>Ajouter un préfixe de nom de classe CSS pour éviter les conflits d'espaces de noms.</translation> </message> <message>- <location filename="mainwindow.ui" line="1254"/>- <location filename="mainwindow.ui" line="1532"/>- <location filename="mainwindow.ui" line="1640"/>- <location filename="mainwindow.ui" line="1935"/>+ <location filename="mainwindow.ui" line="1430"/>+ <location filename="mainwindow.ui" line="1708"/>+ <location filename="mainwindow.ui" line="1816"/>+ <location filename="mainwindow.ui" line="2111"/> <source>Stylesheet file:</source> <translation>Feuille de style :</translation> </message> <message>- <location filename="mainwindow.ui" line="1273"/>- <location filename="mainwindow.ui" line="1656"/>- <location filename="mainwindow.ui" line="1951"/>+ <location filename="mainwindow.ui" line="1449"/>+ <location filename="mainwindow.ui" line="1832"/>+ <location filename="mainwindow.ui" line="2127"/> <source>Name of the referenced style file.</source> <translation>Nom de la feuille de style référencée.</translation> </message> <message>- <location filename="mainwindow.ui" line="1276"/>- <location filename="mainwindow.ui" line="1954"/>+ <location filename="mainwindow.ui" line="1452"/>+ <location filename="mainwindow.ui" line="2130"/> <source>highlight.css</source> <translation>highlight.css</translation> </message> <message>- <location filename="mainwindow.ui" line="1287"/>- <location filename="mainwindow.ui" line="1562"/>- <location filename="mainwindow.ui" line="1670"/>- <location filename="mainwindow.ui" line="1965"/>+ <location filename="mainwindow.ui" line="1463"/>+ <location filename="mainwindow.ui" line="1738"/>+ <location filename="mainwindow.ui" line="1846"/>+ <location filename="mainwindow.ui" line="2141"/> <source>Stylesheet include file:</source> <translation>Feuille de style à inclure :</translation> </message> <message>- <location filename="mainwindow.ui" line="1317"/>- <location filename="mainwindow.ui" line="1989"/>+ <location filename="mainwindow.ui" line="1493"/>+ <location filename="mainwindow.ui" line="2165"/> <source>Path of the CSS include file.</source> <translation>Chemin du fichier CSS à inclure.</translation> </message> <message>- <location filename="mainwindow.ui" line="1330"/>+ <location filename="mainwindow.ui" line="1506"/> <source>Select a CSS include file.</source> <translation>Sélectionner un fichier CSS à inclure.</translation> </message> <message>- <location filename="mainwindow.ui" line="1359"/>+ <location filename="mainwindow.ui" line="1535"/> <source>Misc</source> <translation>Divers</translation> </message> <message>- <location filename="mainwindow.ui" line="1371"/>+ <location filename="mainwindow.ui" line="1547"/> <source>Line numbering options:</source> <translation>Options de numérotation des lignes :</translation> </message>@@ -853,452 +891,557 @@ Le résultat doit correspondre à l'encodage du fichier d'entrée.</tr <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="874"/>+ <location filename="mainwindow.ui" line="757"/>+ <source>Configure the LSP Client</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="764"/>+ <source>LSP</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="772"/>+ <source>Language Server:</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="779"/>+ <source>Select a Language Server profile.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="796"/>+ <source>Executable:</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="803"/>+ <source>Path of the server executable.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="816"/>+ <source>Select the server executable.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="830"/>+ <source>Print LSP messages to standard error</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="833"/>+ <source>Output Logs</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="840"/>+ <source>Start an initialization request.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="843"/>+ <source>Check Capabilities</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="861"/>+ <source>Workspace:</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="868"/>+ <source>The workspace directory.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="881"/>+ <source>Select the workspace directory of your project.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="893"/>+ <source>Run hover requests to add tooltips to your output (HTML only).</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="896"/>+ <source>Hover</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="906"/>+ <source>Improve token recognition with semantic highlighting.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="909"/>+ <source>Semantic Highlighting</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="919"/>+ <source>Show syntax errors and messages (depends on output format).</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="922"/>+ <source>Show Syntax Errors</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="1050"/> <source>ANSI ESC</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="879"/>+ <location filename="mainwindow.ui" line="1055"/> <source>XTerm256 ESC</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="884"/>+ <location filename="mainwindow.ui" line="1060"/> <source>Truecolor ESC</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="1378"/>+ <location filename="mainwindow.ui" line="1554"/> <source>Add an anchor to each line.</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="1381"/>+ <location filename="mainwindow.ui" line="1557"/> <source>Add line anchors</source> <translation>Ajouter des ancres aux lignes</translation> </message> <message>- <location filename="mainwindow.ui" line="1388"/>+ <location filename="mainwindow.ui" line="1564"/> <source>Add the filename as prefix to the anchors.</source> <translation>Ajouter le nom du fichier comme préfixe aux ancres.</translation> </message> <message>- <location filename="mainwindow.ui" line="1391"/>+ <location filename="mainwindow.ui" line="1567"/> <source>Include file name in anchor</source> <translation>Inclure le nom du fichier dans l'ancre</translation> </message> <message>- <location filename="mainwindow.ui" line="1398"/>+ <location filename="mainwindow.ui" line="1574"/> <source>Output the lines within an ordered list.</source> <translation>Afficher les lignes dans une liste ordonnée.</translation> </message> <message>- <location filename="mainwindow.ui" line="1401"/>+ <location filename="mainwindow.ui" line="1577"/> <source>Output as ordered list</source> <translation>Traiter comme une liste ordonnée</translation> </message> <message>- <location filename="mainwindow.ui" line="1415"/>+ <location filename="mainwindow.ui" line="1591"/> <source>Generate an index file with hyperlinks to all outputted files.</source> <translation>Générer un fichier d'index avec des hyperliens vers tous les fichiers de sortie.</translation> </message> <message>- <location filename="mainwindow.ui" line="1418"/>+ <location filename="mainwindow.ui" line="1594"/> <source>Generate index file</source> <translation>Générer un fichier d'index</translation> </message> <message>- <location filename="mainwindow.ui" line="1425"/>+ <location filename="mainwindow.ui" line="1601"/> <source>Add &lt;pre&gt; tags to the output, if the flag "No document header and footer" is selected.</source> <translation>Ajouter des balises &lt;pre&gt; à la sortie, si le haut et le bas de pages sont omis.</translation> </message> <message>- <location filename="mainwindow.ui" line="1428"/>+ <location filename="mainwindow.ui" line="1604"/> <source>Enclose in pre tags</source> <translation>Entourer de balises pre</translation> </message> <message>- <location filename="mainwindow.ui" line="1442"/>+ <location filename="mainwindow.ui" line="1618"/> <source>Add HTML MIME Type when copying code to the clipboard</source> <translation>Ajouter le type MIME HTML lors de la copie du code dans le presse-papiers</translation> </message> <message>- <location filename="mainwindow.ui" line="1445"/>+ <location filename="mainwindow.ui" line="1621"/> <source>Copy with MIME type</source> <translation>Copier avec le type MIME</translation> </message> <message>- <location filename="mainwindow.ui" line="1473"/>+ <location filename="mainwindow.ui" line="1649"/> <source>Replace quotes by dq sequences.</source> <translation>Remplacer les guillements par des séquences dq.</translation> </message> <message>- <location filename="mainwindow.ui" line="1476"/>+ <location filename="mainwindow.ui" line="1652"/> <source>Escape quotes</source> <translation>Échapper les guillements</translation> </message> <message>- <location filename="mainwindow.ui" line="1483"/>+ <location filename="mainwindow.ui" line="1659"/> <source>Adapt output for the Babel package</source> <translation>Adapter la sortie au paquet Babel</translation> </message> <message>- <location filename="mainwindow.ui" line="1486"/>+ <location filename="mainwindow.ui" line="1662"/> <source>Add Babel compatibility</source> <translation>Ajouter la compatibilité Babel</translation> </message> <message>- <location filename="mainwindow.ui" line="1493"/>+ <location filename="mainwindow.ui" line="1669"/> <source>Adapt output for the Beamer package</source> <translation>Adapter la sortie au paquet Beamer</translation> </message> <message>- <location filename="mainwindow.ui" line="1496"/>+ <location filename="mainwindow.ui" line="1672"/> <source>Add Beamer compatibility</source> <translation>Ajouter la compatibilité Beamer</translation> </message> <message>- <location filename="mainwindow.ui" line="1503"/>+ <location filename="mainwindow.ui" line="1679"/> <source>Replace default symbols (brackets, tilde) by nice redefinitions.</source> <translation>Remplacer les symboles par défaut (accolades, tilde) par de belles redéfinitions.</translation> </message> <message>- <location filename="mainwindow.ui" line="1506"/>+ <location filename="mainwindow.ui" line="1682"/> <source>Add pretty symbols</source> <translation>Ajouter de jolis symboles</translation> </message> <message>- <location filename="mainwindow.ui" line="1523"/>+ <location filename="mainwindow.ui" line="1699"/> <source>Embed style (defs)</source> <translation>Embarquer le style (defs)</translation> </message> <message>- <location filename="mainwindow.ui" line="1548"/>+ <location filename="mainwindow.ui" line="1724"/> <source>Name of the referenced style file.</source> <translation>Nom de la feuille de style référencée.</translation> </message> <message>- <location filename="mainwindow.ui" line="1551"/>- <location filename="mainwindow.ui" line="1659"/>+ <location filename="mainwindow.ui" line="1727"/>+ <location filename="mainwindow.ui" line="1835"/> <source>highlight.sty</source> <translation>highlight.sty</translation> </message> <message>- <location filename="mainwindow.ui" line="1586"/>- <location filename="mainwindow.ui" line="1694"/>+ <location filename="mainwindow.ui" line="1762"/>+ <location filename="mainwindow.ui" line="1870"/> <source>Path of the style include file.</source> <translation>Chemin du fichier de style à inclure.</translation> </message> <message>- <location filename="mainwindow.ui" line="1599"/>- <location filename="mainwindow.ui" line="1707"/>- <location filename="mainwindow.ui" line="2002"/>+ <location filename="mainwindow.ui" line="1775"/>+ <location filename="mainwindow.ui" line="1883"/>+ <location filename="mainwindow.ui" line="2178"/> <source>Select a style include file.</source> <translation>Sélectionner un fichier de style à inclure.</translation> </message> <message>- <location filename="mainwindow.ui" line="1631"/>+ <location filename="mainwindow.ui" line="1807"/> <source>Embed style (macros)</source> <translation>Embarquer le style (macros)</translation> </message> <message>- <location filename="mainwindow.ui" line="1736"/>+ <location filename="mainwindow.ui" line="1912"/> <source>Add character stylesheets with formatting information. You can select the stylesheets in your word processor to reformat additional text.</source> <translation>Ajouter des feuilles de style pour les caractères, avec des informations de formatage. Vous pouvez sélectionner les feuilles de style dans votre logiciel de traitement de texte pour reformater du texte additionnel.</translation> </message> <message>- <location filename="mainwindow.ui" line="1740"/>+ <location filename="mainwindow.ui" line="1916"/> <source>Add character styles</source> <translation>Ajouter des styles de caractère</translation> </message> <message>- <location filename="mainwindow.ui" line="1747"/>+ <location filename="mainwindow.ui" line="1923"/> <source>Set page color attribute to background color.</source> <translation>Définir l'attribut de couleur de la page avec la couleur de fond.</translation> </message> <message>- <location filename="mainwindow.ui" line="1750"/>+ <location filename="mainwindow.ui" line="1926"/> <source>Set page color</source> <translation>Définir la couleur de la page</translation> </message> <message>- <location filename="mainwindow.ui" line="1759"/>+ <location filename="mainwindow.ui" line="1935"/> <source>Page size:</source> <translation>Taille de la page :</translation> </message> <message>- <location filename="mainwindow.ui" line="1772"/>+ <location filename="mainwindow.ui" line="1948"/> <source>Select a page size.</source> <translation>Sélectionner une taille de page.</translation> </message> <message>- <location filename="mainwindow.ui" line="1779"/>+ <location filename="mainwindow.ui" line="1955"/> <source>A3</source> <translation>A3</translation> </message> <message>- <location filename="mainwindow.ui" line="1784"/>+ <location filename="mainwindow.ui" line="1960"/> <source>A4</source> <translation>A4</translation> </message> <message>- <location filename="mainwindow.ui" line="1789"/>+ <location filename="mainwindow.ui" line="1965"/> <source>A5</source> <translation>A5</translation> </message> <message>- <location filename="mainwindow.ui" line="1794"/>+ <location filename="mainwindow.ui" line="1970"/> <source>B4</source> <translation>B4</translation> </message> <message>- <location filename="mainwindow.ui" line="1799"/>+ <location filename="mainwindow.ui" line="1975"/> <source>B5</source> <translation>B5</translation> </message> <message>- <location filename="mainwindow.ui" line="1804"/>+ <location filename="mainwindow.ui" line="1980"/> <source>B6</source> <translation>B6</translation> </message> <message>- <location filename="mainwindow.ui" line="1809"/>+ <location filename="mainwindow.ui" line="1985"/> <source>Letter</source> <translation>Lettre</translation> </message> <message>- <location filename="mainwindow.ui" line="1814"/>+ <location filename="mainwindow.ui" line="1990"/> <source>Legal</source> <translation>Légal</translation> </message> <message>- <location filename="mainwindow.ui" line="1843"/>+ <location filename="mainwindow.ui" line="2019"/> <source>I&mage width:</source> <translation>Largeur de l'i&mage :</translation> </message> <message>- <location filename="mainwindow.ui" line="1871"/>+ <location filename="mainwindow.ui" line="2047"/> <source>Enter the SVG width (may contain units).</source> <translation>Saisir la largeur du SVG (peut contenir des unités).</translation> </message> <message>- <location filename="mainwindow.ui" line="1891"/>+ <location filename="mainwindow.ui" line="2067"/> <source>Height:</source> <translation>Hauteur :</translation> </message> <message>- <location filename="mainwindow.ui" line="1907"/>+ <location filename="mainwindow.ui" line="2083"/> <source>Enter the SVG height (may contain units).</source> <translation>Saisir la taille du SVG (peut contenir des unités).</translation> </message> <message>- <location filename="mainwindow.ui" line="2031"/>+ <location filename="mainwindow.ui" line="2207"/> <source>No options defined.</source> <translation>Aucune option définie.</translation> </message> <message>- <location filename="mainwindow.ui" line="2056"/>+ <location filename="mainwindow.ui" line="2232"/> <source>Formatting</source> <translation>Formatage</translation> </message> <message>- <location filename="mainwindow.ui" line="2085"/>+ <location filename="mainwindow.ui" line="2261"/> <source>Color theme:</source> <translation>Thème de couleurs :</translation> </message> <message>- <location filename="mainwindow.ui" line="2132"/>+ <location filename="mainwindow.ui" line="2308"/> <source>Select a colour theme.</source> <translation>Sélectionner un thème de couleurs.</translation> </message> <message>- <location filename="mainwindow.ui" line="2149"/>+ <location filename="mainwindow.ui" line="2328"/> <source>Reformat and indent your code. This feature is enabled for C, C++, C# and Java code.</source> <translation>Reformater et indenter votre code. Cette fonctionnalité est activée pour le code C, C++, C# et Java.</translation> </message> <message>- <location filename="mainwindow.ui" line="2153"/>+ <location filename="mainwindow.ui" line="2332"/> <source>Reformat:</source> <translation>Reformatage :</translation> </message> <message>- <location filename="mainwindow.ui" line="2172"/>+ <location filename="mainwindow.ui" line="2351"/> <source>Choose a formatting scheme.</source> <translation>Choisir un schéma de formatage.</translation> </message> <message>- <location filename="mainwindow.ui" line="2186"/>+ <location filename="mainwindow.ui" line="2365"/> <source>Change the keyword case.</source> <translation>Changer la casse.</translation> </message> <message>- <location filename="mainwindow.ui" line="2189"/>+ <location filename="mainwindow.ui" line="2368"/> <source>Keyword case:</source> <translation>Casse des mots-clés :</translation> </message> <message>- <location filename="mainwindow.ui" line="2208"/>+ <location filename="mainwindow.ui" line="2387"/> <source>Select a keyword case.</source> <translation>Sélectionner une casse pour les mots-clés.</translation> </message> <message>- <location filename="mainwindow.ui" line="2215"/>+ <location filename="mainwindow.ui" line="2394"/> <source>UPPER</source> <translation>MAJUSCULE</translation> </message> <message>- <location filename="mainwindow.ui" line="2220"/>+ <location filename="mainwindow.ui" line="2399"/> <source>lower</source> <translation>minuscule</translation> </message> <message>- <location filename="mainwindow.ui" line="2225"/>+ <location filename="mainwindow.ui" line="2404"/> <source>Capitalize</source> <translation>Casse de phrase</translation> </message> <message>- <location filename="mainwindow.ui" line="2243"/>+ <location filename="mainwindow.ui" line="2422"/> <source>Tab width:</source> <translation>Largeur des tabulations :</translation> </message> <message>- <location filename="mainwindow.ui" line="2259"/>+ <location filename="mainwindow.ui" line="2438"/> <source>Enter the number of spaces which replace a tab. Set the width to 0 to keep tabs.</source> <translation>Saisir le nombre d'espaces qui remplacent une tabulation. Définir la largeur à 0 pour conserver les tabulations.</translation> </message> <message>- <location filename="mainwindow.ui" line="2274"/>+ <location filename="mainwindow.ui" line="2453"/> <source>Enable line wrapping.</source> <translation>Activer le retour à la ligne automatique.</translation> </message> <message>- <location filename="mainwindow.ui" line="2277"/>+ <location filename="mainwindow.ui" line="2456"/> <source>Line wrapping</source> <translation>Retour à la ligne</translation> </message> <message>- <location filename="mainwindow.ui" line="2290"/>+ <location filename="mainwindow.ui" line="2469"/> <source>Enter the maximum line length.</source> <translation>Saisir la taille maximale d'une ligne.</translation> </message> <message>- <location filename="mainwindow.ui" line="2309"/>+ <location filename="mainwindow.ui" line="2488"/> <source>Indent statements and function parameters after wrapping.</source> <translation>Indenter les déclarations et les paramètres de fonctions après le retour à ligne automatique.</translation> </message> <message>- <location filename="mainwindow.ui" line="2312"/>+ <location filename="mainwindow.ui" line="2491"/> <source>Intelligent wrapping</source> <translation>Retour à la ligne intelligent</translation> </message> <message>- <location filename="mainwindow.ui" line="2319"/>+ <location filename="mainwindow.ui" line="2498"/> <source>Do not add line numbering to lines which were automatically wrapped.</source> <translation>Ne pas ajouter des numéros aux retours à la ligne automatiques.</translation> </message> <message>- <location filename="mainwindow.ui" line="2322"/>+ <location filename="mainwindow.ui" line="2501"/> <source>Omit line numbers of wrapped lines</source> <translation>Omettre les numéros de ligne pour les retours à la ligne</translation> </message> <message>- <location filename="mainwindow.ui" line="2333"/>+ <location filename="mainwindow.ui" line="2512"/> <source>Font na&me:</source> <translation>No&m de la police :</translation> </message> <message>- <location filename="mainwindow.ui" line="2354"/>+ <location filename="mainwindow.ui" line="2533"/> <source>Select or enter the font name. HTML supports a list of fonts, separated with comma.</source> <translation>Sélectionner ou saisir le nom d'une police. L'HTML supporte une liste de polices, séparées par des virgules.</translation> </message> <message>- <location filename="mainwindow.ui" line="2369"/>+ <location filename="mainwindow.ui" line="2536"/>+ <source>DejaVu Sans Mono</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="2551"/> <source>Font si&ze:</source> <translation>&Taille de la police :</translation> </message> <message>- <location filename="mainwindow.ui" line="2391"/>+ <location filename="mainwindow.ui" line="2573"/> <source>Enter the font size.</source> <translation>Saisissez la taille de police.</translation> </message> <message>- <location filename="mainwindow.ui" line="2406"/>+ <location filename="mainwindow.ui" line="2588"/> <source>&Open files</source> <translation>&Ouvrir des fichiers</translation> </message> <message>- <location filename="mainwindow.ui" line="2411"/>+ <location filename="mainwindow.ui" line="2593"/> <source>&Exit</source> <translation>Quitt&er</translation> </message> <message>- <location filename="mainwindow.ui" line="2416"/>+ <location filename="mainwindow.ui" line="2598"/> <source>&Load</source> <translation>&Charger</translation> </message> <message>- <location filename="mainwindow.ui" line="2421"/>+ <location filename="mainwindow.ui" line="2603"/> <source>&Save</source> <translation>&Sauvegarder</translation> </message> <message>- <location filename="mainwindow.ui" line="2426"/>+ <location filename="mainwindow.ui" line="2608"/> <source>Load &default project</source> <translation>Charger le projet par &défaut</translation> </message> <message>- <location filename="mainwindow.ui" line="2431"/>+ <location filename="mainwindow.ui" line="2613"/> <source>&Readme</source> <translation>Lise&z-moi</translation> </message> <message>- <location filename="mainwindow.ui" line="2436"/>+ <location filename="mainwindow.ui" line="2618"/> <source>&Tips</source> <translation>As&tuces</translation> </message> <message>- <location filename="mainwindow.ui" line="2444"/>+ <location filename="mainwindow.ui" line="2626"/> <source>&Changelog</source> <translation>Journal des &changements</translation> </message> <message>- <location filename="mainwindow.ui" line="2449"/>+ <location filename="mainwindow.ui" line="2631"/> <source>&License</source> <translation>&Licence</translation> </message> <message>- <location filename="mainwindow.ui" line="2454"/>+ <location filename="mainwindow.ui" line="2636"/> <source>&About Highlight</source> <translation>&À propos de Highlight</translation> </message> <message>- <location filename="mainwindow.ui" line="2459"/>+ <location filename="mainwindow.ui" line="2641"/> <source>A&bout translations</source> <translation>À propos des tra&ductions</translation> </message> <message>- <location filename="mainwindow.ui" line="2464"/>+ <location filename="mainwindow.ui" line="2646"/> <source>&Visit andre-simon.de</source> <translation>&Visiter andre-simon.de</translation> </message> <message>- <location filename="mainwindow.ui" line="2475"/>+ <location filename="mainwindow.ui" line="2657"/> <source>&Dock floating panels</source> <translation>A&ccrocher les panneaux flottants</translation> </message> <message>- <location filename="mainwindow.ui" line="2480"/>+ <location filename="mainwindow.ui" line="2662"/> <source>&Plug-Ins</source> <translation>&Greffons</translation> </message> <message>- <location filename="mainwindow.ui" line="2485"/>+ <location filename="mainwindow.ui" line="2667"/> <source>&File access trace (W32)</source> <translation type="unfinished"></translation> </message>
@@ -4,193 +4,229 @@ <context> <name>MainWindow</name> <message>- <location filename="mainwindow.cpp" line="138"/>- <location filename="mainwindow.cpp" line="158"/>+ <location filename="mainwindow.cpp" line="140"/>+ <location filename="mainwindow.cpp" line="155"/>+ <location filename="mainwindow.cpp" line="171"/> <source>Initialization error</source> <translation>Errore di inizializzazione</translation> </message> <message>- <location filename="mainwindow.cpp" line="139"/>+ <location filename="mainwindow.cpp" line="141"/> <source>Could not read a colour theme: </source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="143"/>+ <location filename="mainwindow.cpp" line="145"/> <source>light</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="144"/>+ <location filename="mainwindow.cpp" line="146"/> <source>dark</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="145"/>+ <location filename="mainwindow.cpp" line="147"/> <source>B16 light</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="146"/>+ <location filename="mainwindow.cpp" line="148"/> <source>B16 dark</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="159"/>+ <location filename="mainwindow.cpp" line="151"/>+ <source>Please select a Server</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="156"/>+ <source>Could not find LSP profiles. Check installation.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="172"/> <source>Could not find syntax definitions. Check installation.</source> <translation>Non ho trovato definizioni sintattiche. Controlla l'installazione.</translation> </message> <message>- <location filename="mainwindow.cpp" line="275"/>+ <location filename="mainwindow.cpp" line="296"/> <source>NTFS Short Names</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="275"/>+ <location filename="mainwindow.cpp" line="296"/> <source>NTFS short names may be disabled on your volumes. Highlight can not read input with multibyte file names if no short name is available. This information will no longer bother you.</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.cpp" line="278"/>+ <location filename="mainwindow.cpp" line="299"/> <source>Always at your service</source> <translation>Sempre a tua disposizione</translation> </message> <message>- <location filename="mainwindow.cpp" line="325"/>+ <location filename="mainwindow.cpp" line="343"/> <source>Select one or more files to open</source> <translation>Seleziona uno o più file da aprire</translation> </message> <message>- <location filename="mainwindow.cpp" line="362"/>+ <location filename="mainwindow.cpp" line="380"/> <source>Select destination directory</source> <translation>Seleziona la cartella di destinazione</translation> </message> <message>- <location filename="mainwindow.cpp" line="1039"/>- <location filename="mainwindow.cpp" line="1070"/>+ <location filename="mainwindow.cpp" line="1130"/>+ <location filename="mainwindow.cpp" line="1161"/> <source>Output error</source> <translation>Errore di output</translation> </message> <message>- <location filename="mainwindow.cpp" line="1039"/>+ <location filename="mainwindow.cpp" line="1130"/> <source>Output directory does not exist!</source> <translation>Cartella di destinazione inesistente!</translation> </message> <message>- <location filename="mainwindow.cpp" line="1070"/>+ <location filename="mainwindow.cpp" line="1161"/> <source>You must define a style output file!</source> <translation>Devi definire un file di destinazione per lo stile!</translation> </message> <message>- <location filename="mainwindow.cpp" line="1119"/>+ <location filename="mainwindow.cpp" line="1213"/> <source>Processing %1 (%2/%3)</source> <translation>Sto processando %1 (%2/%3)</translation> </message> <message>- <location filename="mainwindow.cpp" line="1129"/>+ <location filename="mainwindow.cpp" line="1223"/> <source>Language definition error</source> <translation>Errore nella definizione del linguaggio</translation> </message> <message>- <location filename="mainwindow.cpp" line="1130"/>+ <location filename="mainwindow.cpp" line="1224"/> <source>Invalid regular expression in %1: %2</source> <translation>Espressione regolare non valida in %1: %2</translation> </message> <message>- <location filename="mainwindow.cpp" line="1134"/>+ <location filename="mainwindow.cpp" line="1228"/> <source>Unknown syntax</source> <translation>Sintassi sconosciuta</translation> </message> <message>- <location filename="mainwindow.cpp" line="1134"/>+ <location filename="mainwindow.cpp" line="1228"/> <source>Could not convert %1</source> <translation>Impossibile convertire %1</translation> </message> <message>- <location filename="mainwindow.cpp" line="1137"/>+ <location filename="mainwindow.cpp" line="1231"/> <source>Lua error</source> <translation>Errore Lua</translation> </message> <message>- <location filename="mainwindow.cpp" line="1137"/>+ <location filename="mainwindow.cpp" line="1231"/> <source>Could not convert %1: Lua Syntax error: %2</source> <translation>Impossibile convertire %1: Errore di sintassi Lua: %2</translation> </message> <message>- <location filename="mainwindow.cpp" line="1284"/>+ <location filename="mainwindow.cpp" line="1406"/> <source>Converted %1 files in %2 ms</source> <translation>Convertiti %1 file in %2 ms</translation> </message> <message>- <location filename="mainwindow.cpp" line="1473"/>+ <location filename="mainwindow.cpp" line="1610"/> <source>Conversion of "%1" not possible.</source> <translation>Impossibile convertire "%1".</translation> </message> <message>- <location filename="mainwindow.cpp" line="1473"/>- <location filename="mainwindow.cpp" line="1614"/>- <location filename="mainwindow.cpp" line="1660"/>+ <location filename="mainwindow.cpp" line="1610"/>+ <location filename="mainwindow.cpp" line="1758"/>+ <location filename="mainwindow.cpp" line="1813"/> <source>clipboard data</source> <translation>dati negli appunti</translation> </message> <message>- <location filename="mainwindow.cpp" line="1544"/>+ <location filename="mainwindow.cpp" line="1689"/> <source>%1 options</source> <translation>opzioni %1</translation> </message> <message>- <location filename="mainwindow.cpp" line="1587"/>- <location filename="mainwindow.cpp" line="1598"/>+ <location filename="mainwindow.cpp" line="1730"/>+ <location filename="mainwindow.cpp" line="1741"/> <source>(user script)</source> <translation>(script utente)</translation> </message> <message>- <location filename="mainwindow.cpp" line="1613"/>+ <location filename="mainwindow.cpp" line="1757"/> <source>Preview (%1):</source> <translation>Anteprima (%1):</translation> </message> <message>- <location filename="mainwindow.cpp" line="1616"/>+ <location filename="mainwindow.cpp" line="1760"/> <source>Current syntax: %1 %2</source> <translation>Sintassi in uso: %1 %2</translation> </message> <message>- <location filename="mainwindow.cpp" line="1617"/>+ <location filename="mainwindow.cpp" line="1761"/> <source>Current theme: %1 %2</source> <translation>Tema in uso: %1 %2</translation> </message> <message>- <location filename="mainwindow.cpp" line="1620"/>+ <location filename="mainwindow.cpp" line="1764"/> <source>Contrast: %1 %2</source> <translation type="unfinished"></translation> </message>+ <message>+ <location filename="mainwindow.cpp" line="2216"/>+ <source>Language server initialization successful</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="2221"/>+ <source>Language server connection failed</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="2223"/>+ <source>Language server initialization failed</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="2251"/>+ <source>Select workspace directory</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.cpp" line="2255"/>+ <source>Choose the Language Server executable</source>+ <translation type="unfinished"></translation>+ </message> <message> <source>Current syntax: %1</source> <translation type="vanished">Sintassi in uso: %1</translation> </message> <message>- <location filename="mainwindow.cpp" line="1660"/>+ <location filename="mainwindow.cpp" line="1813"/> <source>Preview of "%1" not possible.</source> <translation>Impossibile mostrare l'anteprima di "%1".</translation> </message> <message>- <location filename="mainwindow.cpp" line="1700"/>- <location filename="mainwindow.cpp" line="1704"/>- <location filename="mainwindow.cpp" line="1708"/>- <location filename="mainwindow.cpp" line="1713"/>+ <location filename="mainwindow.cpp" line="1857"/>+ <location filename="mainwindow.cpp" line="1861"/>+ <location filename="mainwindow.cpp" line="1865"/>+ <location filename="mainwindow.cpp" line="1870"/> <source>Choose a style include file</source> <translation>Scegli il file di stile da includere</translation> </message> <message>- <location filename="mainwindow.cpp" line="1718"/>+ <location filename="mainwindow.cpp" line="1875"/> <source>About providing translations</source> <translation>Come contribuire alla traduzione</translation> </message> <message>- <location filename="mainwindow.cpp" line="1719"/>+ <location filename="mainwindow.cpp" line="1876"/> <source>The GUI was developed using the Qt toolkit, and translations may be provided using the tools Qt Linguist and lrelease. The highlight.ts file for Linguist resides in the src/gui-qt subdirectory. The qm file generated by lrelease has to be saved in gui-files/l10n.@@ -203,23 +239,23 @@ Il file qm generato da lrelease dovrà essere salvato in "gui-files/l10n&qu In caso di difficoltà, o se hai completato o aggiornato una traduzione, contattami tramite posta elettronica: as (at) andre-simon (dot) de.</translation> </message> <message>- <location filename="mainwindow.cpp" line="1777"/>+ <location filename="mainwindow.cpp" line="1934"/> <source>Select one or more plug-ins</source> <translation>Seleziona uno o più plug-in</translation> </message> <message>- <location filename="mainwindow.cpp" line="1788"/>+ <location filename="mainwindow.cpp" line="1945"/> <source>Select one or more syntax or theme scripts</source> <translation>Scegli uno o più file di sintassi o tema</translation> </message> <message>- <location filename="mainwindow.cpp" line="1848"/>+ <location filename="mainwindow.cpp" line="2005"/> <source>Choose a plug-in input file</source> <translatorcomment>( TIP ) Plug-ins -> Plug-in parameter -> [...]</translatorcomment> <translation>Scegli il file di input per il plug-in</translation> </message> <message>- <location filename="mainwindow.cpp" line="1906"/>+ <location filename="mainwindow.cpp" line="2063"/> <source>Some plug-in effects may not be visible in the preview.</source> <translation>Alcuni effetti dei plug-in potrebbero non essere visualizzati nell'anteprima.</translation> </message>@@ -330,10 +366,12 @@ In caso di difficoltà, o se hai completato o aggiornato una traduzione, contatt <message> <location filename="mainwindow.ui" line="310"/> <location filename="mainwindow.ui" line="669"/>- <location filename="mainwindow.ui" line="1333"/>- <location filename="mainwindow.ui" line="1602"/>- <location filename="mainwindow.ui" line="1710"/>- <location filename="mainwindow.ui" line="2005"/>+ <location filename="mainwindow.ui" line="819"/>+ <location filename="mainwindow.ui" line="884"/>+ <location filename="mainwindow.ui" line="1509"/>+ <location filename="mainwindow.ui" line="1778"/>+ <location filename="mainwindow.ui" line="1886"/>+ <location filename="mainwindow.ui" line="2181"/> <source>...</source> <translation>...</translation> </message>@@ -544,69 +582,69 @@ Nota: La finestra di anteprima potrebbe non mostrare alcuni effetti dei plug-in. <translation>Descrizione dello script</translation> </message> <message>- <location filename="mainwindow.ui" line="788"/>+ <location filename="mainwindow.ui" line="964"/> <source>General</source> <translation>Generale</translation> </message> <message>- <location filename="mainwindow.ui" line="808"/>+ <location filename="mainwindow.ui" line="984"/> <source>Output for&mat:</source> <translation>For&mato output:</translation> </message> <message>- <location filename="mainwindow.ui" line="830"/>+ <location filename="mainwindow.ui" line="1006"/> <source>Choose an output format.</source> <translatorcomment>( TIP )</translatorcomment> <translation>Scegli il formato per l'output.</translation> </message> <message>- <location filename="mainwindow.ui" line="834"/>+ <location filename="mainwindow.ui" line="1010"/> <source>HTML</source> <translation>HTML</translation> </message> <message>- <location filename="mainwindow.ui" line="839"/>+ <location filename="mainwindow.ui" line="1015"/> <source>XHTML</source> <translation>XHTML</translation> </message> <message>- <location filename="mainwindow.ui" line="844"/>+ <location filename="mainwindow.ui" line="1020"/> <source>LaTeX</source> <translation>LaTeX</translation> </message> <message>- <location filename="mainwindow.ui" line="849"/>+ <location filename="mainwindow.ui" line="1025"/> <source>TeX</source> <translation>TeX</translation> </message> <message>- <location filename="mainwindow.ui" line="854"/>+ <location filename="mainwindow.ui" line="1030"/> <source>RTF</source> <translation>RTF</translation> </message> <message>- <location filename="mainwindow.ui" line="859"/>+ <location filename="mainwindow.ui" line="1035"/> <source>ODT</source> <translation>ODT</translation> </message> <message>- <location filename="mainwindow.ui" line="864"/>+ <location filename="mainwindow.ui" line="1040"/> <source>SVG</source> <translation>SVG</translation> </message> <message>- <location filename="mainwindow.ui" line="869"/>+ <location filename="mainwindow.ui" line="1045"/> <source>BBCode</source> <translation>BBCode</translation> </message> <message>- <location filename="mainwindow.ui" line="903"/>+ <location filename="mainwindow.ui" line="1079"/> <source>Add line numbers to the output.</source> <translatorcomment>( TIP )</translatorcomment> <translation>Aggiungi numeri di riga nell'output.</translation> </message> <message>- <location filename="mainwindow.ui" line="906"/>+ <location filename="mainwindow.ui" line="1082"/> <source>Add line numbers</source> <translation>Aggiungi numeri di riga</translation> </message>@@ -616,46 +654,46 @@ Nota: La finestra di anteprima potrebbe non mostrare alcuni effetti dei plug-in. <translation type="vanished">Imposta valore iniziale dei numeri di riga</translation> </message> <message>- <location filename="mainwindow.ui" line="945"/>+ <location filename="mainwindow.ui" line="1121"/> <source>Select the line number width.</source> <translatorcomment>( TIP )</translatorcomment> <translation>Imposta la larghezza (in caratteri) dei numeri di riga.</translation> </message> <message>- <location filename="mainwindow.ui" line="966"/>+ <location filename="mainwindow.ui" line="1142"/> <source>Fill leading space of line numbers with zeroes.</source> <translatorcomment>( TIP )</translatorcomment> <translation>Riempi con zeri lo spazio vuoto che precede i numeri di riga.</translation> </message> <message>- <location filename="mainwindow.ui" line="969"/>+ <location filename="mainwindow.ui" line="1145"/> <source>Pad with zeroes</source> <translation>Riempi con zeri</translation> </message> <message>- <location filename="mainwindow.ui" line="982"/>+ <location filename="mainwindow.ui" line="1158"/> <source>Generate output without document header and footer.</source> <translatorcomment>( TIP )</translatorcomment> <translation>Genera documenti senza intestazione e pié di pagina.</translation> </message> <message>- <location filename="mainwindow.ui" line="985"/>+ <location filename="mainwindow.ui" line="1161"/> <source>Omit header and footer</source> <translation>Ometti intestazione e pié di pagina</translation> </message> <message>- <location filename="mainwindow.ui" line="992"/>+ <location filename="mainwindow.ui" line="1168"/> <source>Output any plug-in text injections even if document header and footer is omitted.</source> <translatorcomment>( TIP )</translatorcomment> <translation>Preserva nell'output qualsiasi testo iniettato dai plug-in, anche quando intestazione e pié di pagina sono omessi.</translation> </message> <message>- <location filename="mainwindow.ui" line="995"/>+ <location filename="mainwindow.ui" line="1171"/> <source>Keep Plug-In injections</source> <translation>Preserva iniezioni dei plug-in</translation> </message> <message>- <location filename="mainwindow.ui" line="1002"/>+ <location filename="mainwindow.ui" line="1178"/> <source>Test if input data is not binary. Removes Unicode BOM mark.</source> <translatorcomment>( TIP )</translatorcomment>@@ -663,7 +701,7 @@ Removes Unicode BOM mark.</source> Rimuovi la sequenza BOM Unicode.</translation> </message> <message>- <location filename="mainwindow.ui" line="1006"/>+ <location filename="mainwindow.ui" line="1182"/> <source>Validate input data</source> <translation>Valida i dati di input</translation> </message>@@ -682,240 +720,345 @@ Rimuovi la sequenza BOM Unicode.</translation> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="874"/>+ <location filename="mainwindow.ui" line="757"/>+ <source>Configure the LSP Client</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="764"/>+ <source>LSP</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="772"/>+ <source>Language Server:</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="779"/>+ <source>Select a Language Server profile.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="796"/>+ <source>Executable:</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="803"/>+ <source>Path of the server executable.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="816"/>+ <source>Select the server executable.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="830"/>+ <source>Print LSP messages to standard error</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="833"/>+ <source>Output Logs</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="840"/>+ <source>Start an initialization request.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="843"/>+ <source>Check Capabilities</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="861"/>+ <source>Workspace:</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="868"/>+ <source>The workspace directory.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="881"/>+ <source>Select the workspace directory of your project.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="893"/>+ <source>Run hover requests to add tooltips to your output (HTML only).</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="896"/>+ <source>Hover</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="906"/>+ <source>Improve token recognition with semantic highlighting.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="909"/>+ <source>Semantic Highlighting</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="919"/>+ <source>Show syntax errors and messages (depends on output format).</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="922"/>+ <source>Show Syntax Errors</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="1050"/> <source>ANSI ESC</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="879"/>+ <location filename="mainwindow.ui" line="1055"/> <source>XTerm256 ESC</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="884"/>+ <location filename="mainwindow.ui" line="1060"/> <source>Truecolor ESC</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="926"/>+ <location filename="mainwindow.ui" line="1102"/> <source>Set line numbering start.</source> <translatorcomment>( TIP )</translatorcomment> <translation>Imposta valore iniziale dei numeri di riga.</translation> </message> <message>- <location filename="mainwindow.ui" line="1013"/>+ <location filename="mainwindow.ui" line="1189"/> <source>Generate output without version information comment.</source> <translation>Genera l'output senza i commenti informativi sulla versione.</translation> </message> <message>- <location filename="mainwindow.ui" line="1016"/>+ <location filename="mainwindow.ui" line="1192"/> <source>Omit version info comment</source> <translation>Ometti commenti di versione</translation> </message> <message>- <location filename="mainwindow.ui" line="1025"/>+ <location filename="mainwindow.ui" line="1201"/> <source>Set the output file encoding.</source> <translation>Imposta la codifica caratteri del file di output.</translation> </message> <message>- <location filename="mainwindow.ui" line="1028"/>+ <location filename="mainwindow.ui" line="1204"/> <source>Set encoding:</source> <translation>Codifica di caratteri:</translation> </message> <message>- <location filename="mainwindow.ui" line="1035"/>+ <location filename="mainwindow.ui" line="1211"/> <source>Select or define the encoding. The result has to match the input file encoding.</source> <translation>Seleziona o definisci la codifica di caratteri. Il risultato deve combaciare con la codifica di caratteri del file di input.</translation> </message> <message>- <location filename="mainwindow.ui" line="1046"/>+ <location filename="mainwindow.ui" line="1222"/> <source>ISO-8859-1</source> <translation>ISO-8859-1</translation> </message> <message>- <location filename="mainwindow.ui" line="1051"/>+ <location filename="mainwindow.ui" line="1227"/> <source>ISO-8859-2</source> <translation>ISO-8859-2</translation> </message> <message>- <location filename="mainwindow.ui" line="1056"/>+ <location filename="mainwindow.ui" line="1232"/> <source>ISO-8859-3</source> <translation>ISO-8859-3</translation> </message> <message>- <location filename="mainwindow.ui" line="1061"/>+ <location filename="mainwindow.ui" line="1237"/> <source>ISO-8859-4</source> <translation>ISO-8859-4</translation> </message> <message>- <location filename="mainwindow.ui" line="1066"/>+ <location filename="mainwindow.ui" line="1242"/> <source>ISO-8859-5</source> <translation>ISO-8859-5</translation> </message> <message>- <location filename="mainwindow.ui" line="1071"/>+ <location filename="mainwindow.ui" line="1247"/> <source>ISO-8859-6</source> <translation>ISO-8859-6</translation> </message> <message>- <location filename="mainwindow.ui" line="1076"/>+ <location filename="mainwindow.ui" line="1252"/> <source>ISO-8859-7</source> <translation>ISO-8859-7</translation> </message> <message>- <location filename="mainwindow.ui" line="1081"/>+ <location filename="mainwindow.ui" line="1257"/> <source>ISO-8859-8</source> <translation>ISO-8859-8</translation> </message> <message>- <location filename="mainwindow.ui" line="1086"/>+ <location filename="mainwindow.ui" line="1262"/> <source>ISO-8859-9</source> <translation>ISO-8859-9</translation> </message> <message>- <location filename="mainwindow.ui" line="1091"/>+ <location filename="mainwindow.ui" line="1267"/> <source>ISO-8859-10</source> <translation>ISO-8859-10</translation> </message> <message>- <location filename="mainwindow.ui" line="1096"/>+ <location filename="mainwindow.ui" line="1272"/> <source>ISO-8859-11</source> <translation>ISO-8859-11</translation> </message> <message>- <location filename="mainwindow.ui" line="1101"/>+ <location filename="mainwindow.ui" line="1277"/> <source>ISO-8859-12</source> <translation>ISO-8859-12</translation> </message> <message>- <location filename="mainwindow.ui" line="1106"/>+ <location filename="mainwindow.ui" line="1282"/> <source>ISO-8859-13</source> <translation>ISO-8859-13</translation> </message> <message>- <location filename="mainwindow.ui" line="1111"/>+ <location filename="mainwindow.ui" line="1287"/> <source>ISO-8859-14</source> <translation>ISO-8859-14</translation> </message> <message>- <location filename="mainwindow.ui" line="1116"/>+ <location filename="mainwindow.ui" line="1292"/> <source>ISO-8859-15</source> <translation>ISO-8859-15</translation> </message> <message>- <location filename="mainwindow.ui" line="1121"/>+ <location filename="mainwindow.ui" line="1297"/> <source>UTF-8</source> <translation>UTF-8</translation> </message> <message>- <location filename="mainwindow.ui" line="1145"/>+ <location filename="mainwindow.ui" line="1321"/> <source>Output specific</source> <translation>Specifiche output</translation> </message> <message>- <location filename="mainwindow.ui" line="1186"/>+ <location filename="mainwindow.ui" line="1362"/> <source>Stylesheets</source> <translation>Fogli di stile</translation> </message> <message>- <location filename="mainwindow.ui" line="1194"/>- <location filename="mainwindow.ui" line="1520"/>- <location filename="mainwindow.ui" line="1628"/>- <location filename="mainwindow.ui" line="1923"/>+ <location filename="mainwindow.ui" line="1370"/>+ <location filename="mainwindow.ui" line="1696"/>+ <location filename="mainwindow.ui" line="1804"/>+ <location filename="mainwindow.ui" line="2099"/> <source>Include the style information in each output file.</source> <translatorcomment>( TIP for HTML/XML )</translatorcomment> <translation>Includi le informazioni di stile in ciascun file di output.</translation> </message> <message>- <location filename="mainwindow.ui" line="1197"/>- <location filename="mainwindow.ui" line="1926"/>+ <location filename="mainwindow.ui" line="1373"/>+ <location filename="mainwindow.ui" line="2102"/> <source>Embed style (CSS)</source> <translation>Incorpora stile (CSS)</translation> </message> <message>- <location filename="mainwindow.ui" line="1210"/>+ <location filename="mainwindow.ui" line="1386"/> <source>Add CSS information to each tag (do not use CSS class definitions).</source> <translatorcomment>( TIP for HTML/XML )</translatorcomment> <translation>Aggiungi le informazioni di stile in ciascun tag (non usare classi CSS).</translation> </message> <message>- <location filename="mainwindow.ui" line="1213"/>+ <location filename="mainwindow.ui" line="1389"/> <source>Inline CSS</source> <translation>CSS in linea</translation> </message> <message>- <location filename="mainwindow.ui" line="1227"/>+ <location filename="mainwindow.ui" line="1403"/> <source>CSS class prefix:</source> <translation>Prefisso classi CSS:</translation> </message> <message>- <location filename="mainwindow.ui" line="1240"/>+ <location filename="mainwindow.ui" line="1416"/> <source>Add a CSS class name prefix to avoid namespace clashes.</source> <translatorcomment>( TIP for HTML/XML )</translatorcomment> <translation>Aggiungi un prefisso ai nomi delle classi CSS per evitare conflitti di namespace.</translation> </message> <message>- <location filename="mainwindow.ui" line="1254"/>- <location filename="mainwindow.ui" line="1532"/>- <location filename="mainwindow.ui" line="1640"/>- <location filename="mainwindow.ui" line="1935"/>+ <location filename="mainwindow.ui" line="1430"/>+ <location filename="mainwindow.ui" line="1708"/>+ <location filename="mainwindow.ui" line="1816"/>+ <location filename="mainwindow.ui" line="2111"/> <source>Stylesheet file:</source> <translation>File del foglio di stile:</translation> </message> <message>- <location filename="mainwindow.ui" line="1273"/>- <location filename="mainwindow.ui" line="1656"/>- <location filename="mainwindow.ui" line="1951"/>+ <location filename="mainwindow.ui" line="1449"/>+ <location filename="mainwindow.ui" line="1832"/>+ <location filename="mainwindow.ui" line="2127"/> <source>Name of the referenced style file.</source> <translatorcomment>( TIP for HTML/XML )</translatorcomment> <translation>Nome da dare al file del foglio di stile di riferimento.</translation> </message> <message>- <location filename="mainwindow.ui" line="1276"/>- <location filename="mainwindow.ui" line="1954"/>+ <location filename="mainwindow.ui" line="1452"/>+ <location filename="mainwindow.ui" line="2130"/> <source>highlight.css</source> <translation>highlight.css</translation> </message> <message>- <location filename="mainwindow.ui" line="1287"/>- <location filename="mainwindow.ui" line="1562"/>- <location filename="mainwindow.ui" line="1670"/>- <location filename="mainwindow.ui" line="1965"/>+ <location filename="mainwindow.ui" line="1463"/>+ <location filename="mainwindow.ui" line="1738"/>+ <location filename="mainwindow.ui" line="1846"/>+ <location filename="mainwindow.ui" line="2141"/> <source>Stylesheet include file:</source> <translation>Foglio di stile da includere:</translation> </message> <message>- <location filename="mainwindow.ui" line="1317"/>- <location filename="mainwindow.ui" line="1989"/>+ <location filename="mainwindow.ui" line="1493"/>+ <location filename="mainwindow.ui" line="2165"/> <source>Path of the CSS include file.</source> <translatorcomment>( TIP for HTML/XML )</translatorcomment> <translation>Percorso del file CSS da includere.</translation> </message> <message>- <location filename="mainwindow.ui" line="1330"/>+ <location filename="mainwindow.ui" line="1506"/> <source>Select a CSS include file.</source> <translatorcomment>( TIP for HTML/XML )</translatorcomment> <translation>Scegli un file CSS da includere.</translation> </message> <message>- <location filename="mainwindow.ui" line="1359"/>+ <location filename="mainwindow.ui" line="1535"/> <source>Misc</source> <translation>Varie</translation> </message> <message>- <location filename="mainwindow.ui" line="1371"/>+ <location filename="mainwindow.ui" line="1547"/> <source>Line numbering options:</source> <translation>Opzioni numeri di riga:</translation> </message> <message>- <location filename="mainwindow.ui" line="1378"/>+ <location filename="mainwindow.ui" line="1554"/> <source>Add an anchor to each line.</source> <translation type="unfinished"></translation> </message> <message>- <location filename="mainwindow.ui" line="2485"/>+ <location filename="mainwindow.ui" line="2536"/>+ <source>DejaVu Sans Mono</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location filename="mainwindow.ui" line="2667"/> <source>&File access trace (W32)</source> <translation type="unfinished"></translation> </message>@@ -925,77 +1068,77 @@ Il risultato deve combaciare con la codifica di caratteri del file di input.</tr <translation type="vanished">Aggiungi un ancora a ciascuna riga.</translation> </message> <message>- <location filename="mainwindow.ui" line="1381"/>+ <location filename="mainwindow.ui" line="1557"/> <source>Add line anchors</source> <translation>Ancora le righe</translation> </message> <message>- <location filename="mainwindow.ui" line="1388"/>+ <location filename="mainwindow.ui" line="1564"/> <source>Add the filename as prefix to the anchors.</source> <translatorcomment>( TIP for HTML/XML )</translatorcomment> <translation>Prefiggi il nome del file alle ancore.</translation> </message> <message>- <location filename="mainwindow.ui" line="1391"/>+ <location filename="mainwindow.ui" line="1567"/> <source>Include file name in anchor</source> <translation>Includi nome file nelle ancore</translation> </message> <message>- <location filename="mainwindow.ui" line="1398"/>+ <location filename="mainwindow.ui" line="1574"/> <source>Output the lines within an ordered list.</source> <translatorcomment>( TIP for HTML/XML )</translatorcomment> <translation>Genera i numeri di riga tramite un elenco numerato.</translation> </message> <message>- <location filename="mainwindow.ui" line="1401"/>+ <location filename="mainwindow.ui" line="1577"/> <source>Output as ordered list</source> <translation>Genera elenco numerato</translation> </message> <message>- <location filename="mainwindow.ui" line="1415"/>+ <location filename="mainwindow.ui" line="1591"/> <source>Generate an index file with hyperlinks to all outputted files.</source> <translatorcomment>( TIP for HTML/XML )</translatorcomment> <translation>Crea un file indice con link ipertestuali a tutti i file generati.</translation> </message> <message>- <location filename="mainwindow.ui" line="1418"/>+ <location filename="mainwindow.ui" line="1594"/> <source>Generate index file</source> <translation>Crea file indice</translation> </message> <message>- <location filename="mainwindow.ui" line="1425"/>+ <location filename="mainwindow.ui" line="1601"/> <source>Add &lt;pre&gt; tags to the output, if the flag "No document header and footer" is selected.</source> <translatorcomment>( TIP for HTML/XML )</translatorcomment> <translation>Aggiungi nel file di output i tag &lt;pre&gt; (se l'opzione "Ometti intestazione e pié di pagina" è attiva).</translation> </message> <message>- <location filename="mainwindow.ui" line="1428"/>+ <location filename="mainwindow.ui" line="1604"/> <source>Enclose in pre tags</source> <translation>Racchiudi in tag <pre></translation> </message> <message>- <location filename="mainwindow.ui" line="1442"/>+ <location filename="mainwindow.ui" line="1618"/> <source>Add HTML MIME Type when copying code to the clipboard</source> <translation>Aggiungi lo HTML MIME Type al codice copiato negli appunti</translation> </message> <message>- <location filename="mainwindow.ui" line="1445"/>+ <location filename="mainwindow.ui" line="1621"/> <source>Copy with MIME type</source> <translation>Copia con MIME Type</translation> </message> <message>- <location filename="mainwindow.ui" line="1473"/>+ <location filename="mainwindow.ui" line="1649"/> <source>Replace quotes by dq sequences.</source> <translatorcomment>( TIP for LaTeX ) --- Non sono sicuro della traduzione perché non mi è chiaro il contesto.</translatorcomment> <translation>Sostituisci le virgolette con sequenze dq.</translation> </message> <message>- <location filename="mainwindow.ui" line="1476"/>+ <location filename="mainwindow.ui" line="1652"/> <source>Escape quotes</source> <translation>Escaping delle virgolette</translation> </message> <message>- <location filename="mainwindow.ui" line="1483"/>+ <location filename="mainwindow.ui" line="1659"/> <source>Adapt output for the Babel package</source> <translation>Adatta l'output al pacchetto Babel</translation> </message>@@ -1008,7 +1151,7 @@ Il risultato deve combaciare con la codifica di caratteri del file di input.</tr <translation type="vanished">Base16</translation> </message> <message>- <location filename="mainwindow.ui" line="2369"/>+ <location filename="mainwindow.ui" line="2551"/> <source>Font si&ze:</source> <translation>&Dimensione carattere:</translation> </message>@@ -1018,71 +1161,71 @@ Il risultato deve combaciare con la codifica di caratteri del file di input.</tr <translation type="vanished">Rendi l'output compatibile con Babel.</translation> </message> <message>- <location filename="mainwindow.ui" line="1486"/>+ <location filename="mainwindow.ui" line="1662"/> <source>Add Babel compatibility</source> <translation>Compatibilità con Babel</translation> </message> <message>- <location filename="mainwindow.ui" line="1493"/>+ <location filename="mainwindow.ui" line="1669"/> <source>Adapt output for the Beamer package</source> <translation>Adatta l'output al pacchetto Beamer</translation> </message> <message>- <location filename="mainwindow.ui" line="1496"/>+ <location filename="mainwindow.ui" line="1672"/> <source>Add Beamer compatibility</source> <translation>Aggiungi compatibilità Beamer</translation> </message> <message>- <location filename="mainwindow.ui" line="1503"/>+ <location filename="mainwindow.ui" line="1679"/> <source>Replace default symbols (brackets, tilde) by nice redefinitions.</source> <translatorcomment>( TIP for LaTeX )</translatorcomment> <translation>Sostituisci i simboli predefiniti (parentesi, tilde) con ridefinizioni più attraenti.</translation> </message> <message>- <location filename="mainwindow.ui" line="1506"/>+ <location filename="mainwindow.ui" line="1682"/> <source>Add pretty symbols</source> <translation>Usa simboli eleganti</translation> </message> <message>- <location filename="mainwindow.ui" line="1523"/>+ <location filename="mainwindow.ui" line="1699"/> <source>Embed style (defs)</source> <translatorcomment>( LaTeX option ) NOTA: Non sono certo se"definizioni" vada bene.</translatorcomment> <translation>Incorpora stili (definizioni)</translation> </message> <message>- <location filename="mainwindow.ui" line="1548"/>+ <location filename="mainwindow.ui" line="1724"/> <source>Name of the referenced style file.</source> <translation>Nome da dare al file di stile di riferimento.</translation> </message> <message>- <location filename="mainwindow.ui" line="1551"/>- <location filename="mainwindow.ui" line="1659"/>+ <location filename="mainwindow.ui" line="1727"/>+ <location filename="mainwindow.ui" line="1835"/> <source>highlight.sty</source> <translation>highlight.sty</translation> </message> <message>- <location filename="mainwindow.ui" line="1586"/>- <location filename="mainwindow.ui" line="1694"/>+ <location filename="mainwindow.ui" line="1762"/>+ <location filename="mainwindow.ui" line="1870"/> <source>Path of the style include file.</source> <translatorcomment>( TIP for LaTeX )</translatorcomment> <translation>Percorso del file di stile da includere.</translation> </message> <message>- <location filename="mainwindow.ui" line="1599"/>- <location filename="mainwindow.ui" line="1707"/>- <location filename="mainwindow.ui" line="2002"/>+ <location filename="mainwindow.ui" line="1775"/>+ <location filename="mainwindow.ui" line="1883"/>+ <location filename="mainwindow.ui" line="2178"/> <source>Select a style include file.</source> <translatorcomment>( TIP for LaTeX )</translatorcomment> <translation>Scegli il file di stile da includere.</translation> </message> <message>- <location filename="mainwindow.ui" line="1631"/>+ <location filename="mainwindow.ui" line="1807"/> <source>Embed style (macros)</source> <translatorcomment>( LaTeX option )</translatorcomment> <translation>Incorpora stile (macro)</translation> </message> <message>- <location filename="mainwindow.ui" line="1736"/>+ <location filename="mainwindow.ui" line="1912"/> <source>Add character stylesheets with formatting information. You can select the stylesheets in your word processor to reformat additional text.</source> <translatorcomment>( TIP for RTF )</translatorcomment>@@ -1090,19 +1233,19 @@ You can select the stylesheets in your word processor to reformat additional tex Puoi selezionare i fogli di stile nel tuo word processor per riformattare testo aggiuntivo.</translation> </message> <message>- <location filename="mainwindow.ui" line="1740"/>+ <location filename="mainwindow.ui" line="1916"/> <source>Add character styles</source> <translatorcomment>( RTF options )</translatorcomment> <translation>Aggiungi stili dei caratteri</translation> </message> <message>- <location filename="mainwindow.ui" line="1747"/>+ <location filename="mainwindow.ui" line="1923"/> <source>Set page color attribute to background color.</source> <translatorcomment>Tip for RTF</translatorcomment> <translation>Imposta l'attributo colore della pagina al colore dello sfondo.</translation> </message> <message>- <location filename="mainwindow.ui" line="2149"/>+ <location filename="mainwindow.ui" line="2328"/> <source>Reformat and indent your code. This feature is enabled for C, C++, C# and Java code.</source> <translation>Riformatta e indenta il codice sorgente.@@ -1114,105 +1257,105 @@ Quest'opzione è disponibile per i linguaggi C, C++, C# e Java.</translatio <translation type="vanished">Imposta l'attributo colore della pagina al colore dello sfondo</translation> </message> <message>- <location filename="mainwindow.ui" line="1750"/>+ <location filename="mainwindow.ui" line="1926"/> <source>Set page color</source> <translatorcomment>( RTF options )</translatorcomment> <translation>Imposta colore pagina</translation> </message> <message>- <location filename="mainwindow.ui" line="1759"/>+ <location filename="mainwindow.ui" line="1935"/> <source>Page size:</source> <translatorcomment>( RTF options )</translatorcomment> <translation>Dimensioni pagina:</translation> </message> <message>- <location filename="mainwindow.ui" line="1772"/>+ <location filename="mainwindow.ui" line="1948"/> <source>Select a page size.</source> <translatorcomment>( TIP for RTF )</translatorcomment> <translation>Seleziona una formato per le dimensioni della pagina.</translation> </message> <message>- <location filename="mainwindow.ui" line="1779"/>+ <location filename="mainwindow.ui" line="1955"/> <source>A3</source> <translation>A3</translation> </message> <message>- <location filename="mainwindow.ui" line="1784"/>+ <location filename="mainwindow.ui" line="1960"/> <source>A4</source> <translation>A4</translation> </message> <message>- <location filename="mainwindow.ui" line="1789"/>+ <location filename="mainwindow.ui" line="1965"/> <source>A5</source> <translation>A5</translation> </message> <message>- <location filename="mainwindow.ui" line="1794"/>+ <location filename="mainwindow.ui" line="1970"/> <source>B4</source> <translation>B4</translation> </message> <message>- <location filename="mainwindow.ui" line="1799"/>+ <location filename="mainwindow.ui" line="1975"/> <source>B5</source> <translation>B5</translation> </message> <message>- <location filename="mainwindow.ui" line="1804"/>+ <location filename="mainwindow.ui" line="1980"/> <source>B6</source> <translation>B6</translation> </message> <message>- <location filename="mainwindow.ui" line="1809"/>+ <location filename="mainwindow.ui" line="1985"/> <source>Letter</source> <translation>Lettera</translation> </message> <message>- <location filename="mainwindow.ui" line="1814"/>+ <location filename="mainwindow.ui" line="1990"/> <source>Legal</source> <translation>Legale</translation> </message> <message>- <location filename="mainwindow.ui" line="1843"/>+ <location filename="mainwindow.ui" line="2019"/> <source>I&mage width:</source> <translatorcomment>( SVG option )</translatorcomment> <translation>Larghezza i&mmagine:</translation> </message> <message>- <location filename="mainwindow.ui" line="1871"/>+ <location filename="mainwindow.ui" line="2047"/> <source>Enter the SVG width (may contain units).</source> <translatorcomment>( TIP for SVG )</translatorcomment> <translation>Inserisci la larghezza SVG (può contenere unità).</translation> </message> <message>- <location filename="mainwindow.ui" line="1891"/>+ <location filename="mainwindow.ui" line="2067"/> <source>Height:</source> <translatorcomment>( SVG option )</translatorcomment> <translation>Altezza:</translation> </message> <message>- <location filename="mainwindow.ui" line="1907"/>+ <location filename="mainwindow.ui" line="2083"/> <source>Enter the SVG height (may contain units).</source> <translatorcomment>( TIP for SVG )</translatorcomment> <translation>Inserisci l'altezza SVG (può contenere unità).</translation> </message> <message>- <location filename="mainwindow.ui" line="2031"/>+ <location filename="mainwindow.ui" line="2207"/> <source>No options defined.</source> <translatorcomment>( ODT / BBcode options )</translatorcomment> <translation>Nessun'opzione disponibile.</translation> </message> <message>- <location filename="mainwindow.ui" line="2056"/>+ <location filename="mainwindow.ui" line="2232"/> <source>Formatting</source> <translation>Formattazione</translation> </message> <message>- <location filename="mainwindow.ui" line="2085"/>+ <location filename="mainwindow.ui" line="2261"/> <source>Color theme:</source> <translation>Tema:</translation> </message> <message>- <location filename="mainwindow.ui" line="2132"/>+ <location filename="mainwindow.ui" line="2308"/> <source>Select a colour theme.</source> <translatorcomment>( TIP )</translatorcomment> <translation>Seleziona un tema di colori.</translation>@@ -1225,56 +1368,56 @@ This feature is enabled tor C, C++, C# and Java code.</source> Quest'opzione è disponibile per i linguaggi C, C++, C# e Java.</translation> </message> <message>- <location filename="mainwindow.ui" line="2153"/>+ <location filename="mainwindow.ui" line="2332"/> <source>Reformat:</source> <translation>Riformatta:</translation> </message> <message>- <location filename="mainwindow.ui" line="2172"/>+ <location filename="mainwindow.ui" line="2351"/> <source>Choose a formatting scheme.</source> <translatorcomment>( TIP )</translatorcomment> <translation>Scegli uno schema di formattazione.</translation> </message> <message>- <location filename="mainwindow.ui" line="2186"/>+ <location filename="mainwindow.ui" line="2365"/> <source>Change the keyword case.</source> <translatorcomment>( TIP )</translatorcomment> <translation>Scegli il criterio di maiuscolo/minuscolo con cui riformattare le keyword.</translation> </message> <message>- <location filename="mainwindow.ui" line="2189"/>+ <location filename="mainwindow.ui" line="2368"/> <source>Keyword case:</source> <translatorcomment>NOTA: letter case è intraducibile, keyword ha più senso non tradurlo.</translatorcomment> <translation>Keyword:</translation> </message> <message>- <location filename="mainwindow.ui" line="2208"/>+ <location filename="mainwindow.ui" line="2387"/> <source>Select a keyword case.</source> <translatorcomment>( TIP )</translatorcomment> <translation>Scegli maiuscolo/minuscolo.</translation> </message> <message>- <location filename="mainwindow.ui" line="2215"/>+ <location filename="mainwindow.ui" line="2394"/> <source>UPPER</source> <translation>MAIUSCOLO</translation> </message> <message>- <location filename="mainwindow.ui" line="2220"/>+ <location filename="mainwindow.ui" line="2399"/> <source>lower</source> <translation>minuscolo</translation> </message> <message>- <location filename="mainwindow.ui" line="2225"/>+ <location filename="mainwindow.ui" line="2404"/> <source>Capitalize</source> <translation>Iniziali Maiuscole</translation> </message> <message>- <location filename="mainwindow.ui" line="2243"/>+ <location filename="mainwindow.ui" line="2422"/> <source>Tab width:</source> <translation>Tabulazione:</translation> </message> <message>- <location filename="mainwindow.ui" line="2259"/>+ <location filename="mainwindow.ui" line="2438"/> <source>Enter the number of spaces which replace a tab. Set the width to 0 to keep tabs.</source> <translatorcomment>( TIP )</translatorcomment>@@ -1282,51 +1425,51 @@ Set the width to 0 to keep tabs.</source> Mettere 0 per preservare le tabulazioni.</translation> </message> <message>- <location filename="mainwindow.ui" line="2274"/>+ <location filename="mainwindow.ui" line="2453"/> <source>Enable line wrapping.</source> <translatorcomment>( TIP )</translatorcomment> <translation>Abilita la funzione di a capo automatico.</translation> </message> <message>- <location filename="mainwindow.ui" line="2277"/>+ <location filename="mainwindow.ui" line="2456"/> <source>Line wrapping</source> <translation>A capo automatico</translation> </message> <message>- <location filename="mainwindow.ui" line="2290"/>+ <location filename="mainwindow.ui" line="2469"/> <source>Enter the maximum line length.</source> <translatorcomment>( TIP )</translatorcomment> <translation>Inserisci la lunghezza massima di riga (numero di caratteri).</translation> </message> <message>- <location filename="mainwindow.ui" line="2309"/>+ <location filename="mainwindow.ui" line="2488"/> <source>Indent statements and function parameters after wrapping.</source> <translatorcomment>( TIP )</translatorcomment> <translation>Dopo un a capo automatico, indenta istruzioni e parametri delle funzioni.</translation> </message> <message>- <location filename="mainwindow.ui" line="2312"/>+ <location filename="mainwindow.ui" line="2491"/> <source>Intelligent wrapping</source> <translation>A capo automatico intelligente</translation> </message> <message>- <location filename="mainwindow.ui" line="2319"/>+ <location filename="mainwindow.ui" line="2498"/> <source>Do not add line numbering to lines which were automatically wrapped.</source> <translatorcomment>( TIP )</translatorcomment> <translation>Non inserire il numero di riga nelle righe su cui si è andati a capo automaticamente.</translation> </message> <message>- <location filename="mainwindow.ui" line="2322"/>+ <location filename="mainwindow.ui" line="2501"/> <source>Omit line numbers of wrapped lines</source> <translation>Non numerare quando vai a capo</translation> </message> <message>- <location filename="mainwindow.ui" line="2333"/>+ <location filename="mainwindow.ui" line="2512"/> <source>Font na&me:</source> <translation>Tipo di ca&rattere:</translation> </message> <message>- <location filename="mainwindow.ui" line="2354"/>+ <location filename="mainwindow.ui" line="2533"/> <source>Select or enter the font name. HTML supports a list of fonts, separated with comma.</source> <translatorcomment>( TIP )</translatorcomment> <translation>Seleziona o digita il nome del font di carattere. HTML supporta un elenco di font, separati da virgole.</translation>@@ -1336,83 +1479,83 @@ Mettere 0 per preservare le tabulazioni.</translation> <translation type="vanished">Dimensione carattere:</translation> </message> <message>- <location filename="mainwindow.ui" line="2391"/>+ <location filename="mainwindow.ui" line="2573"/> <source>Enter the font size.</source> <translatorcomment>( TIP )</translatorcomment> <translation>Inserisci la dimensione del font di carattere.</translation> </message> <message>- <location filename="mainwindow.ui" line="2406"/>+ <location filename="mainwindow.ui" line="2588"/> <source>&Open files</source> <translation>Apri &File</translation> </message> <message>- <location filename="mainwindow.ui" line="2411"/>+ <location filename="mainwindow.ui" line="2593"/> <source>&Exit</source> <translation>&Esci</translation> </message> <message>- <location filename="mainwindow.ui" line="2416"/>+ <location filename="mainwindow.ui" line="2598"/> <source>&Load</source> <translatorcomment>NOTE: Can't find this entry in GUI for Windows!</translatorcomment> <translation>&Apri</translation> </message> <message>- <location filename="mainwindow.ui" line="2421"/>+ <location filename="mainwindow.ui" line="2603"/> <source>&Save</source> <translatorcomment>NOTE: Can't find this entry in GUI for Windows!</translatorcomment> <translation>&Salva</translation> </message> <message>- <location filename="mainwindow.ui" line="2426"/>+ <location filename="mainwindow.ui" line="2608"/> <source>Load &default project</source> <translatorcomment>NOTE: Can't find this entry in GUI for Windows!</translatorcomment> <translation>Apri progetto &predefinito</translation> </message> <message>- <location filename="mainwindow.ui" line="2431"/>+ <location filename="mainwindow.ui" line="2613"/> <source>&Readme</source> <translation>&Leggimi</translation> </message> <message>- <location filename="mainwindow.ui" line="2436"/>+ <location filename="mainwindow.ui" line="2618"/> <source>&Tips</source> <translatorcomment>NOTE: Can't find this entry in GUI for Windows!</translatorcomment> <translation>&Trucchi</translation> </message> <message>- <location filename="mainwindow.ui" line="2444"/>+ <location filename="mainwindow.ui" line="2626"/> <source>&Changelog</source> <translatorcomment>NOTA: Non ha senso tradurre questo termine, questo tipo di utenza lo conosce e lo usa.</translatorcomment> <translation>&Changelog</translation> </message> <message>- <location filename="mainwindow.ui" line="2449"/>+ <location filename="mainwindow.ui" line="2631"/> <source>&License</source> <translation>&Licenza</translation> </message> <message>- <location filename="mainwindow.ui" line="2454"/>+ <location filename="mainwindow.ui" line="2636"/> <source>&About Highlight</source> <translation>&Informazioni su Highlight</translation> </message> <message>- <location filename="mainwindow.ui" line="2459"/>+ <location filename="mainwindow.ui" line="2641"/> <source>A&bout translations</source> <translation>Tra&durre Highlight</translation> </message> <message>- <location filename="mainwindow.ui" line="2464"/>+ <location filename="mainwindow.ui" line="2646"/> <source>&Visit andre-simon.de</source> <translation>&Visita andre-simon.de</translation> </message> <message>- <location filename="mainwindow.ui" line="2475"/>+ <location filename="mainwindow.ui" line="2657"/> <source>&Dock floating panels</source> <translation>&Parcheggia le finestre fluttuanti</translation> </message> <message>- <location filename="mainwindow.ui" line="2480"/>+ <location filename="mainwindow.ui" line="2662"/> <source>&Plug-Ins</source> <translation>&Plug-in</translation> </message>
@@ -127,13 +127,14 @@ Check installation.</source> Revise su instalación.</translation> </message> <message>- <location filename="mainwindow.cpp" line="+138"/>- <location line="+20"/>+ <location filename="mainwindow.cpp" line="+140"/>+ <location line="+15"/>+ <location line="+16"/> <source>Initialization error</source> <translation type="unfinished">初始化错误</translation> </message> <message>- <location line="-19"/>+ <location line="-30"/> <source>Could not read a colour theme: </source> <translation type="unfinished"></translation> </message>@@ -158,12 +159,22 @@ Revise su instalación.</translation> <translation type="unfinished"></translation> </message> <message>- <location line="+13"/>+ <location line="+3"/>+ <source>Please select a Server</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location line="+5"/>+ <source>Could not find LSP profiles. Check installation.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location line="+16"/> <source>Could not find syntax definitions. Check installation.</source> <translation type="unfinished">找不到语法定义文件.请检查安装.</translation> </message> <message>- <location line="+116"/>+ <location line="+124"/> <source>NTFS Short Names</source> <translation type="unfinished"></translation> </message>@@ -178,7 +189,7 @@ Revise su instalación.</translation> <translation type="unfinished"></translation> </message> <message>- <location line="+47"/>+ <location line="+44"/> <source>Select one or more files to open</source> <translation type="unfinished">选择一个或多个文件打开</translation> </message>@@ -196,7 +207,7 @@ Revise su instalación.</translation> <translation type="obsolete">无法读取 "%1" 的Tag信息</translation> </message> <message>- <location line="+677"/>+ <location line="+750"/> <location line="+31"/> <source>Output error</source> <translation type="unfinished">输出错误</translation>@@ -212,7 +223,7 @@ Revise su instalación.</translation> <translation type="unfinished">你必须等译一个style输出文件!</translation> </message> <message>- <location line="+49"/>+ <location line="+52"/> <source>Processing %1 (%2/%3)</source> <translation type="unfinished"></translation> </message>@@ -250,35 +261,35 @@ Lua Syntax error: %2</source> <translation type="unfinished"></translation> </message> <message>- <location line="+147"/>+ <location line="+175"/> <source>Converted %1 files in %2 ms</source> <translation type="unfinished">文件%1 转换完毕,用时 %2 ms</translation> </message> <message>- <location line="+189"/>+ <location line="+204"/> <source>Conversion of "%1" not possible.</source> <translation type="unfinished">No es posible la conversión de "%1".</translation> </message> <message> <location line="+0"/>- <location line="+141"/>- <location line="+46"/>+ <location line="+148"/>+ <location line="+55"/> <source>clipboard data</source> <translation type="unfinished">剪贴板数据</translation> </message> <message>- <location line="-116"/>+ <location line="-124"/> <source>%1 options</source> <translation type="unfinished">%1 选项</translation> </message> <message>- <location line="+43"/>+ <location line="+41"/> <location line="+11"/> <source>(user script)</source> <translation type="unfinished"></translation> </message> <message>- <location line="+15"/>+ <location line="+16"/> <source>Preview (%1):</source> <translation type="unfinished">预览 (%1):</translation> </message>@@ -297,17 +308,42 @@ Lua Syntax error: %2</source> <source>Contrast: %1 %2</source> <translation type="unfinished"></translation> </message>+ <message>+ <location line="+452"/>+ <source>Language server initialization successful</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location line="+5"/>+ <source>Language server connection failed</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location line="+2"/>+ <source>Language server initialization failed</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location line="+28"/>+ <source>Select workspace directory</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location line="+4"/>+ <source>Choose the Language Server executable</source>+ <translation type="unfinished"></translation>+ </message> <message> <source>Current syntax: %1</source> <translation type="obsolete">当前语言: %1</translation> </message> <message>- <location line="+40"/>+ <location line="-442"/> <source>Preview of "%1" not possible.</source> <translation type="unfinished">"%1".的预览不可用.</translation> </message> <message>- <location line="+246"/>+ <location line="+250"/> <source>Some plug-in effects may not be visible in the preview.</source> <translation type="unfinished"></translation> </message>@@ -415,7 +451,9 @@ Please send a note to as (at) andre-simon (dot) de if you have issues during tra <message> <location line="+3"/> <location line="+359"/>- <location line="+664"/>+ <location line="+150"/>+ <location line="+65"/>+ <location line="+625"/> <location line="+269"/> <location line="+108"/> <location line="+295"/>@@ -423,7 +461,7 @@ Please send a note to as (at) andre-simon (dot) de if you have issues during tra <translation>...</translation> </message> <message>- <location line="-1660"/>+ <location line="-1836"/> <source>Save output in the input file directories.</source> <translation>将输出保存在输入路径中.</translation> </message>@@ -437,7 +475,7 @@ Please send a note to as (at) andre-simon (dot) de if you have issues during tra <translation type="obsolete">Opciones de salida</translation> </message> <message>- <location line="+440"/>+ <location line="+616"/> <source>General</source> <translation>通用</translation> </message>@@ -549,7 +587,7 @@ Removes Unicode BOM mark.</source> <translation type="vanished">设置输出文件的编码格式.</translation> </message> <message>- <location line="+1474"/>+ <location line="+1480"/> <source>&Plug-Ins</source> <translation type="unfinished"></translation> </message>@@ -558,7 +596,7 @@ Removes Unicode BOM mark.</source> <translation type="obsolete">Codificación:</translation> </message> <message>- <location line="-1445"/>+ <location line="-1451"/> <source>Select or define the encoding. The result has to match the input file encoding.</source> <translation>选择或者定义编码格式.@@ -861,12 +899,12 @@ See ctags.sf.net for details.</source> <translation>编码设置:</translation> </message> <message>- <location line="-755"/>+ <location line="-931"/> <source>Output destination:</source> <translation>输出路径:</translation> </message> <message>- <location line="+981"/>+ <location line="+1157"/> <location line="+278"/> <location line="+108"/> <location line="+295"/>@@ -886,7 +924,7 @@ See ctags.sf.net for details.</source> <translation type="obsolete">读取ctags文件:</translation> </message> <message>- <location line="-1948"/>+ <location line="-2124"/> <source>Highlight</source> <translation>Highlight</translation> </message>@@ -987,7 +1025,7 @@ See ctags.sf.net for details.</source> <translation type="unfinished"></translation> </message> <message>- <location line="+126"/>+ <location line="+302"/> <source>BBCode</source> <translation>BBCode</translation> </message>@@ -1186,7 +1224,7 @@ This feature is enabled tor C, C++, C# and Java code.</source> 这项功能仅支持 C, C++, C# 和 Java.</translation> </message> <message>- <location line="+21"/>+ <location line="+24"/> <source>Reformat:</source> <translation>格式化代码:</translation> </message>@@ -1281,7 +1319,7 @@ Set the width to 0 to keep tabs.</source> <translation type="vanished">字体大小:</translation> </message> <message>- <location line="+58"/>+ <location line="+61"/> <source>Enter the font size.</source> <translation>输入字体大小.</translation> </message>@@ -1297,7 +1335,7 @@ Set the width to 0 to keep tabs.</source> <translation>停靠浮动面板(&D)</translation> </message> <message>- <location line="-2445"/>+ <location line="-2627"/> <source>Preview</source> <translation>预览</translation> </message>@@ -1432,6 +1470,106 @@ Set the width to 0 to keep tabs.</source> <source>Script description</source> <translation type="unfinished"></translation> </message>+ <message>+ <location line="+11"/>+ <source>Configure the LSP Client</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location line="+7"/>+ <source>LSP</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location line="+8"/>+ <source>Language Server:</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location line="+7"/>+ <source>Select a Language Server profile.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location line="+17"/>+ <source>Executable:</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location line="+7"/>+ <source>Path of the server executable.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location line="+13"/>+ <source>Select the server executable.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location line="+14"/>+ <source>Print LSP messages to standard error</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location line="+3"/>+ <source>Output Logs</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location line="+7"/>+ <source>Start an initialization request.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location line="+3"/>+ <source>Check Capabilities</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location line="+18"/>+ <source>Workspace:</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location line="+7"/>+ <source>The workspace directory.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location line="+13"/>+ <source>Select the workspace directory of your project.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location line="+12"/>+ <source>Run hover requests to add tooltips to your output (HTML only).</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location line="+3"/>+ <source>Hover</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location line="+10"/>+ <source>Improve token recognition with semantic highlighting.</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location line="+3"/>+ <source>Semantic Highlighting</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location line="+10"/>+ <source>Show syntax errors and messages (depends on output format).</source>+ <translation type="unfinished"></translation>+ </message>+ <message>+ <location line="+3"/>+ <source>Show Syntax Errors</source>+ <translation type="unfinished"></translation>+ </message> <message> <location line="+128"/> <source>ANSI ESC</source>@@ -1503,7 +1641,7 @@ Set the width to 0 to keep tabs.</source> <translation type="unfinished"></translation> </message> <message>- <location line="+306"/>+ <location line="+309"/> <source>Reformat and indent your code. This feature is enabled for C, C++, C# and Java code.</source> <translation type="unfinished"></translation>@@ -1523,6 +1661,11 @@ This feature is enabled for C, C++, C# and Java code.</source> <source>Select or enter the font name. HTML supports a list of fonts, separated with comma.</source> <translation>选择或者输入字体名. HTML支持用逗号分隔的字体列表.</translation> </message>+ <message>+ <location line="+3"/>+ <source>DejaVu Sans Mono</source>+ <translation type="unfinished"></translation>+ </message> <message> <location line="+15"/> <source>Font si&ze:</source>
src/gui-qt/ls_not_supported.png
@@ -36,13 +36,15 @@ along with Highlight. If not, see <http://www.gnu.org/licenses/>. #include "io_report.h" #include "syntax_chooser.h" + #ifdef Q_OS_WIN #include <windows.h> #endif //#include <QDebug> MainWindow::MainWindow(QWidget *parent)- : QMainWindow(parent), ui(new Ui::MainWindowClass), oldThemeIndex(0), getDataFromCP(false), runFirstTime(true)+: QMainWindow(parent), ui(new Ui::MainWindowClass),+lsDelay(0), oldThemeIndex(0), getDataFromCP(false), runFirstTime(true) { ui->setupUi(this);@@ -146,7 +148,18 @@ MainWindow::MainWindow(QWidget *parent) ui->comboThemeFilter->addItem(tr("B16 dark"), "dark"); ui->comboThemeFilter->setCurrentIndex(0); - //does not work in GUI editor when adding > 10 items ?!?+ ui->comboLSProfiles->addItem(tr("Please select a Server"));++ // load LSP profiles+ if (!loadLSProfiles()) {+ QMessageBox::warning(this, tr("Initialization error"),+ tr("Could not find LSP profiles. Check installation."));+ }++ for (const auto& kv : lspProfiles) {+ ui->comboLSProfiles->addItem(QString::fromStdString( kv.first ));+ }+ QStringList fmts; fmts << "Allman" << "GNU" <<"Google"<< "Horstmann"<<"Lisp"<<"Java"<<"K&R"<<"Linux" <<"Mozilla"<<"OTBS"<<"Pico"<<"Ratliff"<<"Stroustrup"<<"VTK"<<"Webkit"<<"Whitesmith";@@ -221,6 +234,9 @@ MainWindow::MainWindow(QWidget *parent) QObject::connect(ui->cbTEXEmbedStyle, SIGNAL(clicked()), this, SLOT(plausibility())); QObject::connect(ui->cbSVGEmbedStyle, SIGNAL(clicked()), this, SLOT(plausibility())); QObject::connect(ui->cbFragment, SIGNAL(clicked()), this, SLOT(plausibility()));+ QObject::connect(ui->cbLSHover, SIGNAL(clicked()), this, SLOT(plausibility()));+ QObject::connect(ui->cbLSSemantic, SIGNAL(clicked()), this, SLOT(plausibility()));+ QObject::connect(ui->tabIOSelection, SIGNAL(currentChanged(int)), this, SLOT(plausibility())); QObject::connect(ui->lvInputFiles, SIGNAL(itemSelectionChanged()), this, SLOT(updatePreview()));@@ -228,6 +244,8 @@ MainWindow::MainWindow(QWidget *parent) QObject::connect(ui->lvUserScripts, SIGNAL(itemChanged(QListWidgetItem*)), this, SLOT(updatePreview())); QObject::connect(ui->lvUserScripts, SIGNAL(itemChanged(QListWidgetItem*)), this, SLOT(plausibility())); ++ QObject::connect(ui->cbIncLineNo, SIGNAL(clicked()), this, SLOT(updatePreview())); QObject::connect(ui->cbKwCase, SIGNAL(clicked()), this, SLOT(updatePreview())); QObject::connect(ui->cbPadZeroes, SIGNAL(clicked()), this, SLOT(updatePreview()));@@ -245,6 +263,9 @@ MainWindow::MainWindow(QWidget *parent) QObject::connect(ui->comboSelectSyntax, SIGNAL(currentIndexChanged(int)), this, SLOT(updatePreview())); QObject::connect(ui->comboThemeFilter, SIGNAL(currentIndexChanged(int)), this, SLOT(updatePreview())); + QObject::connect(ui->comboLSProfiles, SIGNAL(currentIndexChanged(int)), this, SLOT(loadLSProfile()));++ QObject::connect(ui->sbLineNoWidth, SIGNAL(valueChanged(int)), this, SLOT(updatePreview())); QObject::connect(ui->sbLineNoStart, SIGNAL(valueChanged(int)), this, SLOT(updatePreview())); QObject::connect(ui->leFontSize, SIGNAL(textChanged(QString)), this, SLOT(updatePreview()));@@ -469,6 +490,8 @@ void MainWindow::writeSettings() ui->comboReformat->currentIndex()); settings.setValue(ui->comboRTFPageSize->property(name).toString(), ui->comboRTFPageSize->currentIndex());+ settings.setValue(ui->comboLSProfiles->property(name).toString(),+ ui->comboLSProfiles->currentIndex()); settings.setValue(ui->comboTheme->property(name).toString(), ui->comboTheme->currentIndex());@@ -509,6 +532,12 @@ void MainWindow::writeSettings() ui->cbTEXEmbedStyle->isChecked()); settings.setValue(ui->cbHTMLPasteMIME->property(name).toString(), ui->cbHTMLPasteMIME->isChecked());+ settings.setValue(ui->cbLSHover->property(name).toString(),+ ui->cbLSHover->isChecked());+ settings.setValue(ui->cbLSSemantic->property(name).toString(),+ ui->cbLSSemantic->isChecked());+ settings.setValue(ui->cbLSSyntaxErrors->property(name).toString(),+ ui->cbLSSyntaxErrors->isChecked()); settings.setValue(ui->leSVGHeight->property(name).toString(), ui->leSVGHeight->text());@@ -516,6 +545,9 @@ void MainWindow::writeSettings() ui->leSVGWidth->text()); settings.setValue(ui->leFontSize->property(name).toString(), ui->leFontSize->text());+ settings.setValue(ui->leLSWorkspace->property(name).toString(),+ ui->leLSWorkspace->text());+ settings.setValue(ui->sbLineLength->property(name).toString(), ui->sbLineLength->value()); settings.setValue(ui->sbTabWidth->property(name).toString(),@@ -599,6 +631,9 @@ void MainWindow::readSettings() ui->cbRTFPageColor->setChecked(settings.value(ui->cbRTFPageColor->property(name).toString()).toBool()); ui->cbWrapping->setChecked(settings.value(ui->cbWrapping->property(name).toString()).toBool()); ui->cbValidateInput->setChecked(settings.value(ui->cbValidateInput->property(name).toString()).toBool());+ ui->cbLSHover->setChecked(settings.value(ui->cbLSHover->property(name).toString()).toBool());+ ui->cbLSSemantic->setChecked(settings.value(ui->cbLSSemantic->property(name).toString()).toBool());+ ui->cbLSSyntaxErrors->setChecked(settings.value(ui->cbLSSyntaxErrors->property(name).toString()).toBool()); ui->comboEncoding->insertItem(0, settings.value(ui->comboEncoding->property(name).toString()).toString()); ui->comboEncoding->setCurrentIndex(0);@@ -609,6 +644,7 @@ void MainWindow::readSettings() ui->comboReformat->setCurrentIndex(settings.value(ui->comboReformat->property(name).toString()).toInt()); ui->comboRTFPageSize->setCurrentIndex(settings.value(ui->comboRTFPageSize->property(name).toString()).toInt()); ui->comboSelectSyntax->setCurrentIndex(settings.value(ui->comboSelectSyntax->property(name).toString()).toInt());+ ui->comboLSProfiles->setCurrentIndex(settings.value(ui->comboLSProfiles->property(name).toString()).toInt()); oldThemeIndex=settings.value(ui->comboTheme->property(name).toString()).toInt(); ui->comboThemeFilter->setCurrentIndex(settings.value(ui->comboThemeFilter->property(name).toString()).toInt());@@ -624,6 +660,7 @@ void MainWindow::readSettings() ui->leFontSize->setText(settings.value(ui->leFontSize->property(name).toString()).toString()); ui->leHTMLCssPrefix->setText(settings.value(ui->leHTMLCssPrefix->property(name).toString()).toString()); ui->lePluginReadFilePath->setText(settings.value(ui->lePluginReadFilePath->property(name).toString()).toString());+ ui->leLSWorkspace->setText(settings.value(ui->leLSWorkspace->property(name).toString()).toString()); ui->sbLineLength->setValue(settings.value(ui->sbLineLength->property(name).toString()).toInt()); ui->sbTabWidth->setValue(settings.value(ui->sbTabWidth->property(name).toString()).toInt());@@ -654,9 +691,69 @@ void MainWindow::readLuaList(const string& paramName, const string& langName,Dil } } ++bool MainWindow::loadLSProfiles()+{+ QString confPath=getDistFileConfigPath(QString("lsp.conf"));+#ifdef Q_OS_WIN+ confPath = getWindowsShortPath(confPath);+#endif++ try {+ Diluculum::LuaState ls;+ Diluculum::LuaValueList ret= ls.doFile (confPath.toStdString());++ int idx=1;+ std::string serverName; ///< server name+ std::string executable; ///< server executable path+ std::string syntax; ///< language definition which can be enhanced using the LS+ int delay=0;+ std::vector<std::string> options; ///< server executable start options+ Diluculum::LuaValue mapEntry;++ //{ Server="clangd", Exec="clangd", Syntax="c", Options={"--log=error"} },+ while ((mapEntry = ls["Servers"][idx].value()) !=Diluculum::Nil) {+ options.clear();+ serverName = mapEntry["Server"].asString();+ executable = mapEntry["Exec"].asString();+ syntax = mapEntry["Syntax"].asString();++ if (mapEntry["Options"] !=Diluculum::Nil) {+ int extIdx=1;+ while (mapEntry["Options"][extIdx] !=Diluculum::Nil) {+ options.push_back(mapEntry["Options"][extIdx].asString());+ extIdx++;+ }+ }++ delay = 0;+ if (mapEntry["Delay"] !=Diluculum::Nil) {+ delay = mapEntry["Delay"].asNumber();+ }++ highlight::LSPProfile profile;+ profile.executable = executable;+ profile.serverName = serverName;+ profile.syntax = syntax;+ profile.options = options;+ profile.delay = delay;++ lspProfiles[serverName]=profile;++ idx++;+ }++ } catch (Diluculum::LuaError &err) {++ QMessageBox::warning(this, "Configuration error", QString::fromStdString( err.what()));+ return false;+ }+ return true;+}+ bool MainWindow::loadFileTypeConfig() {- QString filetypesPath=getDistFileConfigPath();+ QString filetypesPath=getDistFileConfigPath(QString("filetypes.conf")); #ifdef Q_OS_WIN filetypesPath = getWindowsShortPath(filetypesPath); #endif@@ -776,16 +873,21 @@ void MainWindow::on_action_About_Highlight_triggered() QMessageBox::about( this, "About Highlight", QString("Highlight is a code to formatted text converter.\n\n" "Highlight GUI %1\n"- "(C) 2002-2021 Andre Simon <a.simon at mailbox.org>\n\n"+ "Copyright (C) 2002-2021 Andre Simon <a.simon at mailbox.org>\n\n" "Artistic Style Classes\n(C) 1998-2002 Tal Davidson\n"- "(C) 2006-2018 Jim Pattee <jimp03 at email.com>\n\n"+ "Copyright (C) 2006-2018 Jim Pattee <jimp03 at email.com>\n\n" "Diluculum Lua wrapper\n"- "(C) 2005-2013 by Leandro Motta Barros\n\n"+ "Copyright (C) 2005-2013 by Leandro Motta Barros\n\n"+ "xterm 256 color matching functions\n"+ "Copyright (C) 2006 Wolfgang Frisch <wf at frexx.de>\n\n"+ "PicoJSON library\n"+ "Copyright (C) 2009-2010 Cybozu Labs, Inc.\n"+ "Copyright (C) 2011-2014 Kazuho Oku\n\n" "Built with Qt version %2\n\n" "Released under the terms of the GNU GPL license.\n\n" "The highlight logo is based on the image \"Alcedo Atthis\" by Lukasz Lukasik.\n" "The original was published under the terms of the GNU FDL in the Wikimedia Commons database.\n\n"- ).arg(HIGHLIGHT_VERSION).arg(QString(qVersion ())) );+ ).arg(QString::fromStdString(highlight::Info::getVersion())).arg(QString(qVersion ())) ); } highlight::OutputType MainWindow::getOutputType()@@ -940,7 +1042,7 @@ void MainWindow::applyCtrlValues(highlight::CodeGenerator* generator, bool previ } } - if (!generator->initTheme(themePath.toStdString())) {+ if (!generator->initTheme(themePath.toStdString(), ui->cbLSSemantic->isChecked() )) { QMessageBox::critical(this,"Theme init error", QString::fromStdString(generator->getThemeInitError())); } @@ -955,14 +1057,16 @@ void MainWindow::applyCtrlValues(highlight::CodeGenerator* generator, bool previ if(fntSize.size()) generator->setBaseFontSize(fntSize); } - int lineLength = 0;- if (ui->cbWrapping->isChecked()) {- lineLength = ( ui->cbIncLineNo->isChecked()- && ui->sbLineNoWidth->value() > ui->sbLineLength->value())?- ui->sbLineLength->value() - ui->sbLineNoWidth->value()- : ui->sbLineLength->value();+ if ( !ui->cbLSSemantic->isChecked() && !ui->cbLSHover->isChecked()) {+ int lineLength = 0;+ if (ui->cbWrapping->isChecked()) {+ lineLength = ( ui->cbIncLineNo->isChecked()+ && ui->sbLineNoWidth->value() > ui->sbLineLength->value())?+ ui->sbLineLength->value() - ui->sbLineNoWidth->value()+ : ui->sbLineLength->value();+ }+ generator->setPreformatting(getWrappingStyle(), lineLength, ui->sbTabWidth->value()); }- generator->setPreformatting(getWrappingStyle(), lineLength, ui->sbTabWidth->value()); if(ui->cbKwCase->isChecked()) { StringTools::KeywordCase kwCase=StringTools::CASE_UNCHANGED;@@ -980,7 +1084,7 @@ void MainWindow::applyCtrlValues(highlight::CodeGenerator* generator, bool previ generator->setKeyWordCase(kwCase); } - if (ui->cbReformat->isChecked()) {+ if (ui->cbReformat->isChecked() && !ui->cbLSSemantic->isChecked() && !ui->cbLSHover->isChecked()) { generator->initIndentationScheme(ui->comboReformat->currentText().toLower().toStdString()); } }@@ -1083,6 +1187,9 @@ void MainWindow::on_pbStartConversion_clicked() QStringList inputErrors, outputErrors, reformatErrors, syntaxTestErrors; + bool usesLSClient=false;+ bool useLSForInput=false;+ int i=-1; while ( ++i<ui->lvInputFiles->count()) { @@ -1117,7 +1224,7 @@ void MainWindow::on_pbStartConversion_clicked() tr("Invalid regular expression in %1:\n%2").arg(langDefPath).arg( QString::fromStdString( generator->getSyntaxRegexError()))); break;- } else if (loadRes==highlight::LOAD_FAILED) {+ } else if (loadRes==highlight::LOAD_FAILED) { QMessageBox::warning(this, tr("Unknown syntax"), tr("Could not convert %1").arg(origFilePath)); inputErrors.append(origFilePath); } else if (loadRes==highlight::LOAD_FAILED_LUA) {@@ -1183,6 +1290,28 @@ void MainWindow::on_pbStartConversion_clicked() applyEncoding(generator.get(), langDefPath); + string syntaxName = QFileInfo(langDefPath).baseName().toStdString();++ if ((ui->cbLSSemantic->isChecked() || ui->cbLSHover->isChecked()) && usesLSClient==false && lsSyntax==syntaxName) {+ if (initializeLS(generator.get(), false )) {+ usesLSClient=true;+ }+ }++ useLSForInput = usesLSClient && lsSyntax==syntaxName;++ if ( useLSForInput ) {++ generator->lsAddSyntaxErrorInfo( ui->cbLSSyntaxErrors->isChecked() );++ generator->lsAddHoverInfo( ui->cbLSHover->isChecked() );++ generator->lsOpenDocument(currentFile, syntaxName);++ if (ui->cbLSSemantic->isChecked())+ generator->lsAddSemanticInfo(currentFile, syntaxName);+ }+ error = generator->generateFile(currentFile, outfileName ); if (error != highlight::PARSE_OK) { if (error == highlight::BAD_INPUT) {@@ -1191,6 +1320,9 @@ void MainWindow::on_pbStartConversion_clicked() outputErrors.append(origFilePath); } }+ if (useLSForInput) {+ generator->lsCloseDocument(currentFile, generator->getSyntaxDescription());+ } ui->progressBar->setValue(100*i / ui->lvInputFiles->count()); } @@ -1214,6 +1346,10 @@ void MainWindow::on_pbStartConversion_clicked() generator->clearPersistentSnippets(); + if (usesLSClient) {+ generator->exitLanguageServer();+ }+ // write external Stylesheet if ( cbEmbed && leStyleFile && !cbEmbed->isChecked()) { @@ -1319,7 +1455,9 @@ void MainWindow::highlight2Clipboard(bool getDataFromCP) applyCtrlValues(generator.get(), false); + bool applyLS=false; string suffix;+ string currentFile; QString previewFilePath = (getDataFromCP) ? "": ui->lvInputFiles->currentItem()->data(Qt::UserRole).toString(); if (getDataFromCP) {@@ -1350,11 +1488,14 @@ void MainWindow::highlight2Clipboard(bool getDataFromCP) #endif - string currentFile = previewFilePath.toStdString();+ currentFile = previewFilePath.toStdString(); suffix = getFileType(getFileSuffix(currentFile), currentFile); QString inFileName = QFileInfo(previewFilePath).fileName(); generator->setTitle(inFileName.toStdString());++ applyLS = (ui->cbLSSemantic->isChecked() || ui->cbLSHover->isChecked())+ && !currentFile.empty() && lsSyntax==suffix; } QString langPath = getUserScriptPath("lang");@@ -1366,7 +1507,6 @@ void MainWindow::highlight2Clipboard(bool getDataFromCP) langPath = getWindowsShortPath(langPath); #endif - QString clipBoardData; for (int twoPass=0; twoPass<2; twoPass++) {@@ -1375,6 +1515,21 @@ void MainWindow::highlight2Clipboard(bool getDataFromCP) applyEncoding(generator.get(), langPath); + if ( applyLS ) {++ if (initializeLS(generator.get(), false )) {++ generator->lsAddSyntaxErrorInfo( ui->cbLSSyntaxErrors->isChecked() );++ generator->lsAddHoverInfo( ui->cbLSHover->isChecked() );++ generator->lsOpenDocument(currentFile, suffix);++ if (ui->cbLSSemantic->isChecked())+ generator->lsAddSemanticInfo(currentFile, suffix);+ }+ }+ if (getDataFromCP) { clipBoardData= QString::fromStdString( generator->generateString(savedClipboardContent.toStdString())); } else {@@ -1458,21 +1613,30 @@ void MainWindow::highlight2Clipboard(bool getDataFromCP) } generator->clearPersistentSnippets();+ if ( applyLS ) {++ generator->lsCloseDocument(currentFile, suffix);++ } this->setCursor(Qt::ArrowCursor); } void MainWindow::plausibility() {+ bool semanticOptionIsChecked = ui->cbLSSemantic->isChecked() || ui->cbLSHover->isChecked();+ ui->cbLSSyntaxErrors->setEnabled(semanticOptionIsChecked); ui->leOutputDest->setEnabled(!ui->cbWrite2Src->isChecked()); ui->pbOutputDest->setEnabled(!ui->cbWrite2Src->isChecked()); ui->pbBrowseOutDir->setEnabled(!ui->cbWrite2Src->isChecked()); ui->cbPadZeroes->setEnabled(ui->cbIncLineNo->isChecked());- ui->cbAdvWrapping->setEnabled(ui->cbWrapping->isChecked());- ui->sbLineLength->setEnabled(ui->cbWrapping->isChecked());- ui->cbOmitWrappedLineNumbers->setEnabled(ui->cbWrapping->isChecked());+ ui->cbWrapping->setEnabled( !semanticOptionIsChecked);+ ui->cbAdvWrapping->setEnabled(ui->cbWrapping->isChecked() && !semanticOptionIsChecked);+ ui->sbLineLength->setEnabled(ui->cbWrapping->isChecked() && !semanticOptionIsChecked);+ ui->cbOmitWrappedLineNumbers->setEnabled(ui->cbWrapping->isChecked() && !semanticOptionIsChecked); ui->comboEncoding->setEnabled(ui->cbEncoding->isChecked());- ui->comboReformat->setEnabled(ui->cbReformat->isChecked());+ ui->cbReformat->setEnabled( !semanticOptionIsChecked);+ ui->comboReformat->setEnabled(ui->cbReformat->isChecked() && !semanticOptionIsChecked); ui->comboKwCase->setEnabled(ui->cbKwCase->isChecked()); ui->comboTheme->setEnabled(getUserScriptPath("theme").isEmpty()); ui->comboSelectSyntax->setEnabled(getUserScriptPath("lang").isEmpty());@@ -1554,11 +1718,11 @@ void MainWindow::updatePreview() #ifdef Q_OS_WIN previewInputPath = getWindowsShortPath(previewInputPath); #endif-+ string currentFile; if (getDataFromCP) { suffix= getFileType((ui->comboSelectSyntax->itemData(ui->comboSelectSyntax->currentIndex())).toString().toStdString(),""); } else {- string currentFile = previewInputPath.toStdString();+ currentFile = previewInputPath.toStdString(); suffix = getFileType(getFileSuffix(currentFile), currentFile); } @@ -1576,6 +1740,7 @@ void MainWindow::updatePreview() QString themePath = getUserScriptPath("theme"); QString themeInfo=tr("(user script)"); QString previewData;+ bool applyLS=false; if (themePath.isEmpty()) { themeInfo="";@@ -1601,6 +1766,18 @@ void MainWindow::updatePreview() statusBar()->showMessage(QString("%1 | %2 | %3").arg(syntaxDesc, themeDesc, contrastDesc)); } + applyLS = (ui->cbLSSemantic->isChecked() || ui->cbLSHover->isChecked()) && !currentFile.empty() && lsSyntax==suffix && initializeLS(&pwgenerator, false );+ if ( applyLS ) {++ pwgenerator.lsAddSyntaxErrorInfo( ui->cbLSSyntaxErrors->isChecked() );++ pwgenerator.lsAddHoverInfo( ui->cbLSHover->isChecked() );+ pwgenerator.lsOpenDocument(currentFile, suffix);++ if (ui->cbLSSemantic->isChecked())+ pwgenerator.lsAddSemanticInfo(currentFile, suffix);+ }+ // fix utf-8 data preview - to be improved (other encodings??) if (ui->cbEncoding->isChecked() && ui->comboEncoding->currentText().toLower()=="utf-8") { if (getDataFromCP) {@@ -1640,6 +1817,10 @@ void MainWindow::updatePreview() pwgenerator.clearPersistentSnippets(); + if ( applyLS ) {+ pwgenerator.lsCloseDocument(currentFile, suffix);+ }+ ui->browserPreview->verticalScrollBar()->setValue(vScroll); ui->browserPreview->horizontalScrollBar()->setValue(hScroll); this->setCursor(Qt::ArrowCursor);@@ -1930,18 +2111,19 @@ QString MainWindow::getDistPluginPath(){ #endif } -QString MainWindow::getDistFileConfigPath(){+QString MainWindow::getDistFileConfigPath(QString name){ #ifdef Q_OS_OSX return QDir::toNativeSeparators(QString("%1/../Resources/filetypes.conf").arg(QCoreApplication::applicationDirPath())); #else #ifdef CONFIG_DIR- return QDir::toNativeSeparators(QString("%1/filetypes.conf").arg(CONFIG_DIR));+ return QDir::toNativeSeparators(QString("%1/%2").arg(CONFIG_DIR).arg(name)); #else- return QDir::toNativeSeparators(QString("%1/filetypes.conf").arg(QDir::currentPath()));+ return QDir::toNativeSeparators(QString("%1/%2").arg(QDir::currentPath()).arg(name)); #endif #endif } + QString MainWindow::getDistFileFilterPath(){ #ifdef Q_OS_OSX return QCoreApplication::applicationDirPath()+"/../Resources/gui_files/ext/fileopenfilter.conf";@@ -1975,3 +2157,100 @@ QString MainWindow::getWindowsShortPath(const QString & path){ return shortPath; } +void MainWindow::loadLSProfile() {++ if (ui->comboLSProfiles->currentIndex()==0)+ return;++ lsProfile=ui->comboLSProfiles->currentText().toStdString();++ if (lsProfile.size()) {+ if (lspProfiles.count(lsProfile)) {+ highlight::LSPProfile profile = lspProfiles[lsProfile];+ lsExecutable = profile.executable;+ lsSyntax = profile.syntax;+ lsOptions = profile.options;+ lsDelay = profile.delay;++ ui->leLSExec->setText(QString::fromStdString(lsExecutable));+ }+ }+}+++bool MainWindow::initializeLS(highlight::CodeGenerator* generator, bool tellMe)+{+ if (!generator) {+ return false;+ }++ std::string lsWorkSpace(ui->leLSWorkspace->text().toStdString());++ highlight::LSResult lsInitRes=generator->initLanguageServer ( lsExecutable, lsOptions,+ lsWorkSpace, lsSyntax,+ lsDelay,+ ui->cbLSDebug->isChecked() ? 2 : 0 );+ if ( lsInitRes==highlight::INIT_OK ) {+ if (tellMe) {++ if (generator->isHoverProvider()) {+ ui->cbLSHover->setIcon(QIcon(":/ls_supported.png"));+ ui->cbLSHover->setChecked(true);+ ui->cbLSHover->setEnabled(true);+ } else {+ ui->cbLSHover->setIcon(QIcon(":/ls_not_supported.png"));;+ ui->cbLSHover->setChecked(false);+ ui->cbLSHover->setEnabled(false);+ }++ if (generator->isSemanticTokensProvider()) {+ ui->cbLSSemantic->setIcon(QIcon(":/ls_supported.png"));+ ui->cbLSSemantic->setChecked(true);+ ui->cbLSSemantic->setEnabled(true);+ } else {+ ui->cbLSSemantic->setIcon(QIcon(":/ls_not_supported.png"));;+ ui->cbLSSemantic->setChecked(false);+ ui->cbLSSemantic->setEnabled(false);+ }+ generator->exitLanguageServer();+ QMessageBox::information(this, "LSP Init. OK", tr("Language server initialization successful"));+ }+ return true;+ }+ else if ( lsInitRes==highlight::INIT_BAD_PIPE ) {+ QMessageBox::critical(this, "LSP Error", tr("Language server connection failed"));+ } else if ( lsInitRes==highlight::INIT_BAD_REQUEST ) {+ QMessageBox::critical(this,"LSP Error", tr("Language server initialization failed"));+ }++ return false;+}++void MainWindow::on_pbLSInitialize_clicked(){++ if (ui->leLSWorkspace->text().isEmpty()) {+ ui->leLSWorkspace->setFocus();+ return;+ }++ if (lsExecutable.empty()) {+ ui->leLSExec->setFocus();+ return;+ }++ highlight::HtmlGenerator lspgenerator;++ initializeLS(&lspgenerator, true);+}++void MainWindow::on_leLSExec_textChanged(){+ lsExecutable = ui->leLSExec->text().toStdString();+}++void MainWindow::on_pbSelWorkspace_clicked(){+ ui->leLSWorkspace->setText(QFileDialog::getExistingDirectory(this, tr("Select workspace directory"), "/home", QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks));+}++void MainWindow::on_pbSelExecutable_clicked(){+ selectSingleFile(ui->leLSExec, tr("Choose the Language Server executable"), "*");+}
@@ -61,8 +61,11 @@ along with Highlight. If not, see <http://www.gnu.org/licenses/>. #include "version.h" #include "codegenerator.h" #include "htmlgenerator.h"+#include "lspprofile.h"+#include "lspclient.h" #include <map>+#include <vector> #include "enums.h" typedef multimap<string, string> MMap;@@ -86,10 +89,19 @@ private: Ui::MainWindowClass *ui; MMap assocByExtension, assocByFilename; SMap assocByShebang, rememberedAssoc, encodingHints;+ std::map<std::string, highlight::LSPProfile> lspProfiles;++ QString fileOpenFilter; QString savedClipboardContent; QString twoPassOutFile; + std::string lsProfile;+ std::string lsExecutable; ///< server executable path+ std::string lsSyntax; ///< language definition which can be enhanced using the LS+ int lsDelay;+ std::vector<std::string> lsOptions; ///< server executable start options+ QShortcut *copyShortcut; QShortcut *pasteShortcut; QFileSystemWatcher scriptWatcher;@@ -111,7 +123,7 @@ private: QString getDistThemePath(); QString getDistLangPath(const string & suffix); QString getDistPluginPath();- QString getDistFileConfigPath();+ QString getDistFileConfigPath(QString name); QString getDistFileFilterPath(); QString getWindowsShortPath(const QString & path);@@ -121,7 +133,12 @@ private: void selectSingleFile(QLineEdit*, const QString&, const QString&); bool loadFileTypeConfig();+ bool loadLSProfiles();++ bool initializeLS(highlight::CodeGenerator * generator, bool tellMe);+ bool shortNamesDisabled();+ void highlight2Clipboard(bool getDataFromCP); string analyzeFile(const string& file);@@ -167,6 +184,11 @@ private slots: void on_pbSVGChooseStyleIncFile_clicked(); void on_pbCopyAndPaste_clicked(); + void on_pbLSInitialize_clicked();+ void on_leLSExec_textChanged();+ void on_pbSelWorkspace_clicked();+ void on_pbSelExecutable_clicked();+ void on_action_License_triggered(); void on_action_Changelog_triggered(); void on_action_Plug_Ins_triggered();@@ -178,6 +200,7 @@ private slots: void plausibility(); void updatePreview(); void openFiles();+ void loadLSProfile(); void on_actionDock_floating_panels_toggled(bool arg1); void on_pbPluginReadFilePath_clicked();
@@ -148,7 +148,7 @@ </size> </property> <property name="currentIndex">- <number>3</number>+ <number>4</number> </property> <property name="elideMode"> <enum>Qt::ElideNone</enum>@@ -752,6 +752,182 @@ </item> </layout> </widget>+ <widget class="QWidget" name="tab_lsp">+ <property name="toolTip">+ <string>Configure the LSP Client</string>+ </property>+ <attribute name="icon">+ <iconset resource="highlight-gui.qrc">+ <normaloff>:/script_blue.png</normaloff>:/script_blue.png</iconset>+ </attribute>+ <attribute name="title">+ <string>LSP</string>+ </attribute>+ <layout class="QGridLayout" name="gridLayout_5">+ <item row="0" column="0">+ <layout class="QHBoxLayout" name="horizontalLayout_31">+ <item>+ <widget class="QLabel" name="label_10">+ <property name="text">+ <string>Language Server:</string>+ </property>+ </widget>+ </item>+ <item>+ <widget class="QComboBox" name="comboLSProfiles">+ <property name="toolTip">+ <string>Select a Language Server profile.</string>+ </property>+ <property name="editable">+ <bool>false</bool>+ </property>+ <property name="currentText">+ <string notr="true"/>+ </property>+ </widget>+ </item>+ </layout>+ </item>+ <item row="1" column="0">+ <layout class="QHBoxLayout" name="horizontalLayout_32">+ <item>+ <widget class="QLabel" name="label_17">+ <property name="text">+ <string>Executable:</string>+ </property>+ </widget>+ </item>+ <item>+ <widget class="QLineEdit" name="leLSExec">+ <property name="toolTip">+ <string>Path of the server executable.</string>+ </property>+ </widget>+ </item>+ <item>+ <widget class="QPushButton" name="pbSelExecutable">+ <property name="minimumSize">+ <size>+ <width>20</width>+ <height>0</height>+ </size>+ </property>+ <property name="toolTip">+ <string>Select the server executable.</string>+ </property>+ <property name="text">+ <string>...</string>+ </property>+ </widget>+ </item>+ </layout>+ </item>+ <item row="2" column="0">+ <layout class="QHBoxLayout" name="horizontalLayout_34">+ <item>+ <widget class="QCheckBox" name="cbLSDebug">+ <property name="toolTip">+ <string>Print LSP messages to standard error</string>+ </property>+ <property name="text">+ <string>Output Logs</string>+ </property>+ </widget>+ </item>+ <item>+ <widget class="QPushButton" name="pbLSInitialize">+ <property name="toolTip">+ <string>Start an initialization request.</string>+ </property>+ <property name="text">+ <string>Check Capabilities</string>+ </property>+ </widget>+ </item>+ </layout>+ </item>+ <item row="3" column="0">+ <widget class="Line" name="line_6">+ <property name="orientation">+ <enum>Qt::Horizontal</enum>+ </property>+ </widget>+ </item>+ <item row="4" column="0">+ <layout class="QHBoxLayout" name="horizontalLayout_33">+ <item>+ <widget class="QLabel" name="label_16">+ <property name="text">+ <string>Workspace:</string>+ </property>+ </widget>+ </item>+ <item>+ <widget class="QLineEdit" name="leLSWorkspace">+ <property name="toolTip">+ <string>The workspace directory.</string>+ </property>+ </widget>+ </item>+ <item>+ <widget class="QPushButton" name="pbSelWorkspace">+ <property name="minimumSize">+ <size>+ <width>20</width>+ <height>0</height>+ </size>+ </property>+ <property name="toolTip">+ <string>Select the workspace directory of your project.</string>+ </property>+ <property name="text">+ <string>...</string>+ </property>+ </widget>+ </item>+ </layout>+ </item>+ <item row="5" column="0">+ <widget class="QCheckBox" name="cbLSHover">+ <property name="toolTip">+ <string>Run hover requests to add tooltips to your output (HTML only).</string>+ </property>+ <property name="text">+ <string>Hover</string>+ </property>+ <property name="checkable">+ <bool>true</bool>+ </property>+ </widget>+ </item>+ <item row="6" column="0">+ <widget class="QCheckBox" name="cbLSSemantic">+ <property name="toolTip">+ <string>Improve token recognition with semantic highlighting.</string>+ </property>+ <property name="text">+ <string>Semantic Highlighting</string>+ </property>+ <property name="checkable">+ <bool>true</bool>+ </property>+ </widget>+ </item>+ <item row="7" column="0">+ <widget class="QCheckBox" name="cbLSSyntaxErrors">+ <property name="toolTip">+ <string>Show syntax errors and messages (depends on output format).</string>+ </property>+ <property name="text">+ <string>Show Syntax Errors</string>+ </property>+ <property name="checkable">+ <bool>true</bool>+ </property>+ </widget>+ </item>+ </layout>+ </widget> </widget> </item> <item>@@ -2357,7 +2533,7 @@ Set the width to 0 to keep tabs.</string> <string>Select or enter the font name. HTML supports a list of fonts, separated with comma.</string> </property> <property name="currentText">- <string>Monospace</string>+ <string>DejaVu Sans Mono</string> </property> <property name="fontFilters"> <set>QFontComboBox::MonospacedFonts</set>
@@ -34,6 +34,8 @@ along with Highlight. If not, see <http://www.gnu.org/licenses/>. #include <stack> #include <vector> +#include "regextoken.h"+ #include "syntaxreader.h" #include "themereader.h" @@ -41,62 +43,15 @@ along with Highlight. If not, see <http://www.gnu.org/licenses/>. #include "astyle/ASStreamIterator.h" #include "preformatter.h"-#include "enums.h"+ #include "stringtools.h" +#include "lspclient.h"+ /// The highlight namespace contains all classes and data structures needed for parsing input data. namespace highlight {-/** \brief Regular Expression Information-- This class associates a processing state with a keyword class and the length of the matched token.--* @author Andre Simon-*/-class ReGroup-{-public:-- /// Constructor- ReGroup() : length ( 0 ), state ( STANDARD ), kwClass ( 0 ), name()- {- }-- /// Constructor- ReGroup ( State s, unsigned int l , unsigned int c, const string&n ) :- length ( l ), state ( s ), kwClass ( c ), name(n)- {- }-- /// Copy Constructor- ReGroup ( const ReGroup& other )- {- length = other.length;- state = other.state;- kwClass = other.kwClass;- name=other.name;- }-- /// Operator overloading- ReGroup& operator= ( const ReGroup & other )- {- length = other.length;- state = other.state;- kwClass = other.kwClass;- name=other.name;- return *this;- }-- ~ReGroup()- {- }-- unsigned int length; ///< length of the token- State state; ///< state of the matched token (keyword, string, etc)- unsigned int kwClass; ///< keyword class if state is keyword- string name; ///< language name needed to handle embedded languages-}; /** \brief Base class for parsing. Works like a finite state machine.@@ -168,9 +123,16 @@ public: Define colour theme information; needs to be called before using a generate* method. Call this method before loadLanguage(). \param themePath Path of style description file+ \param loadSemanticStyles set true if semantic styles should be read \return true if successful */- bool initTheme ( const string& themePath );+ bool initTheme ( const string& themePath, bool loadSemanticStyles=false );++ LSResult initLanguageServer ( const string& executable, const vector<string> &options, const string& workspace,+ const string& syntax, int delay, int logLevel );++ void exitLanguageServer ();+ /** \return description of the theme init error@@ -189,8 +151,6 @@ public: */ bool initIndentationScheme ( const string& indentScheme ); - void setIndentationOptions (const vector<string>& options);- /** \param langDefPath Absolute path to language definition, may be used multiple times for a generator instance * \param embedded set True if method is called to load an embedded language \return LOAD_OK, LOAD_FAILED, LOAD_FAILED_REGEX, LOAD_FAILED_LUA@@ -400,12 +360,6 @@ public: */ void setEOLDelimiter(char delim); - /** Define the name of a nested language which is located at the beginning of input.- The opening embedded delimiter is missing, but the closing delimiter must exist.- \param langName name of nested language- */- void setStartingNestedLang(const string &langName);- /** \param param path of plugin input file */ void setPluginParameter ( const string& param );@@ -460,11 +414,35 @@ public: string readUserStyleDef(); /** \return Style definition of the chosen output format */- virtual string getStyleDefinition()+ virtual string getStyleDefinition()+ {+ return "";+ }++ virtual string getHoverTagOpen(const string & hoverText) { return ""; } + virtual string getHoverTagClose()+ {+ return "";+ }++ bool lsOpenDocument(const string& fileName, const string & suffix);++ bool lsCloseDocument(const string& fileName, const string & suffix);++ bool lsAddSemanticInfo(const string& fileName, const string & suffix);++ void lsAddHoverInfo(bool hover);++ void lsAddSyntaxErrorInfo(bool error);++ bool isHoverProvider();++ bool isSemanticTokensProvider();+ /** set HTML output anchor flag */ virtual void setHTMLAttachAnchors ( bool ) {};@@ -547,6 +525,10 @@ protected: static const string STY_NAME_SYM; static const string STY_NAME_IPL; + static const string STY_NAME_HVR;+ static const string STY_NAME_ERR;+ static const string STY_NAME_ERM;+ /** \param type Output type */ CodeGenerator ( highlight::OutputType type ); CodeGenerator() {};@@ -559,6 +541,8 @@ protected: \param s string */ void maskString ( ostream& ss, const string &s ) ; + void printSyntaxError ( ostream& ss ) ;+ /** Get current line number \return line number */ unsigned int getLineNumber();@@ -602,6 +586,9 @@ protected: string inFile, ///< input file name outFile; ///< output file name + /// LSP syntax error description+ string lsSyntaxErrorDesc;+ /** Test if maskWsBegin and maskWsEnd should be applied */ bool maskWs; @@ -775,9 +762,6 @@ private: /// path to plugin input file string pluginParameter; - /// name of nested language which starts the input (ie opening delim missing, but closing delim exists)- string embedLangStart;- /// contains current position in line unsigned int lineIndex; @@ -805,6 +789,8 @@ private: unsigned int inputFilesCnt; unsigned int processedFilesCnt; + int kwOffset;+ /** Flag to test if trailing newline should be printed */ int noTrailingNewLine; @@ -838,6 +824,12 @@ private: bool toggleDynRawString; + bool lsEnableHoverRequests;++ bool lsCheckSemanticTokens;++ bool lsCheckSyntaxErrors;+ /** flag which determines keyword output (unchangeed, uppercase, lowercase)*/ StringTools::KeywordCase keywordCase; @@ -849,6 +841,8 @@ private: string userScriptError; ///< Plug-In script error message + string lsDocumentPath; ///< Language Server input file name+ /** end-of-line delimiter*/ char eolDelimiter; @@ -882,6 +876,7 @@ private: bool processSymbolState(); ///< process symbols void processWsState(); ///< process whitespace bool processSyntaxChangeState(State myState ); ///< process syntax change of embedded languages+ bool processSyntaxErrorState(); ///< process syntax errors /* checks whether the given state was defined in the same column of the last parsed input line */ void runSyntaxTestcases(unsigned int column);@@ -896,8 +891,10 @@ private: void printMaskedToken ( bool flushWhiteSpace = true, StringTools::KeywordCase tcase = StringTools::CASE_UNCHANGED ); + void updateKeywordClasses();+ /** association of matched regexes and the corresponding keyword class ids*/- map <int, ReGroup> regexGroups;+ map <int, RegexToken> regexGroups; /** history of states per line position in the current line of input code (max 200 entries) */ @@ -938,13 +935,6 @@ private: unsigned int getCurrentKeywordClassId(); - string getParam(const string& arg, const char* op);- string getParam(const string& arg, const char* op1, const char* op2);- bool isOption(const string& arg, const char* op);- bool isOption(const string& arg, const char* op1, const char* op2);- bool isParamOption(const string& arg, const char* option);- bool isParamOption(const string& arg, const char* option1, const char* option2);- /** \param chunk Lua function to be added to the function list */@@ -960,6 +950,8 @@ private: void setOverrideParams(); static vector<Diluculum::LuaFunction*> pluginChunks;++ highlight::LSPClient LSPClient; }; }
@@ -2,7 +2,7 @@ datadir.h - description ------------------- begin : Sam March 1 2003- copyright : (C) 2003-2019 by Andre Simon+ copyright : (C) 2003-2021 by Andre Simon email : a.simon@mailbox.org ***************************************************************************/ @@ -33,10 +33,10 @@ along with Highlight. If not, see <http://www.gnu.org/licenses/>. #include <Diluculum/LuaState.hpp> #include "stringtools.h"+#include "lspprofile.h" -using namespace std; -typedef map<string, string> StringMap;+typedef std::map<std::string, std::string> StringMap; /** \brief Manages access to installation directories.@@ -48,102 +48,111 @@ typedef map<string, string> StringMap; class DataDir {- vector <string> possibleDirs;- + std::vector <std::string> possibleDirs;+ private: - const string searchFile(const string path);- - string getFileBaseName(const string& fileName);+ const std::string searchFile(const std::string path);++ std::string getFileBaseName(const std::string& fileName);++ std::string analyzeFile ( const std::string& file );++ void readLuaList(const std::string& paramName, const std::string& langName,Diluculum::LuaValue &luaVal, StringMap* extMap); - string analyzeFile ( const string& file );- - void readLuaList(const string& paramName, const string& langName,Diluculum::LuaValue &luaVal, StringMap* extMap);- // object needs to life until cin is no longer used- stringstream cin_bufcopy;- + std::stringstream cin_bufcopy;++ std::map<std::string, highlight::LSPProfile> lspProfiles;+ public: StringMap assocByExtension, assocByFilename, assocByShebang, encodingHint; - static string LSB_DATA_DIR;- static string LSB_CFG_DIR;- static string LSB_DOC_DIR;+ static std::string LSB_DATA_DIR;+ static std::string LSB_CFG_DIR;+ static std::string LSB_DOC_DIR; /** search for a valid installation directory \param userDefinedDir Directory defined by user \return True if directory was found */- void initSearchDirectories ( const string &userDefinedDir );-- // Deprecated- void searchDataDir( const string &userDefinedDir );+ void initSearchDirectories ( const std::string &userDefinedDir ); const void printConfigPaths(); /** \param file file \return Location of given syntax definition */- const string getLangPath ( const string & file) ;+ const std::string getLangPath ( const std::string & file) ; /** \return System themes location */- const string getThemePath ( ) ;+ const std::string getThemePath () ; /** \return System syntax location */- const string getLangPath ( ) ;+ const std::string getLangPath () ; /** \return System syntax location */- const string getSystemDataPath ( ) ;+ const std::string getSystemDataPath () ; /** \return Location of plugins */- const string getPluginPath ();+ const std::string getPluginPath (); /** \param file file * \param base16 set to true if the theme is located in the base16 sub dir \return Location of given theme */- const string getThemePath ( const string & file, bool base16=false ) ;+ const std::string getThemePath ( const std::string & file, bool base16=false ) ; /** \param file file \return Location of given configuration file */- const string getFiletypesConfPath (const string &path="filetypes.conf");- + const std::string getFiletypesConfPath (const std::string &path="filetypes.conf");+ /** \param file file \return Location of given plugin file */- const string getPluginPath (const string &);+ const std::string getPluginPath (const std::string &); /** \return Location of GUI menu translation files */- const string getI18nDir();+ const std::string getI18nDir(); /** \return Location of GUI file extension filter files */- const string getExtDir();+ const std::string getExtDir(); /** \return Location of documentation (README) files (GUI) */- const string getDocDir();+ const std::string getDocDir(); /** \param syntax name \return Encoding hint assigned to the syntax */- const string getEncodingHint (const string &);+ const std::string getEncodingHint (const std::string &); /**- * \param fileName input file name + * \param fileName input file name * \return file extension or the base filename if no file extension exists */- string getFileSuffix ( const string &fileName );+ std::string getFileSuffix ( const std::string &fileName ); /** * \param suffix file name suffix * \param inputFile name of the input file * \param useUserSuffix true if user has defined a syntax suffix- * \param forceShebangCheckStdin true if stdin should be peeked to look for shebang patterns + * \param forceShebangCheckStdin true if stdin should be peeked to look for shebang patterns * \return file type deferred from extension or file shebang comment */- string guessFileType ( const string &suffix, const string &inputFile, + std::string guessFileType ( const std::string &suffix, const std::string &inputFile, bool useUserSuffix=false, bool forceShebangCheckStdin=false );- + /**- * \param name absolute path of filetypes.conf+ * \param name name of filetypes.conf * \return true if successful */- bool loadFileTypeConfig ( const string& name);+ bool loadFileTypeConfig ( const std::string& name);++ /**+ * \param name name of lsp.conf+ * \return true if successful+ */+ bool loadLSPConfig ( const std::string& name);++ bool profileExists(const string &profile);++ highlight::LSPProfile &getProfile(const string &profile); }; #endif
@@ -2,7 +2,7 @@ elementstyle.h - description ------------------- begin : Son Nov 10 2002- copyright : (C) 2002-2007 by Andre Simon+ copyright : (C) 2002-2021 by Andre Simon email : a.simon@mailbox.org ***************************************************************************/ @@ -65,6 +65,7 @@ public: bold = other.isBold(); italic = other.isItalic(); underline = other.isUnderline();+ customStyle = other.getCustomStyle(); } /** operator overloading */@@ -74,6 +75,8 @@ public: bold = other.isBold(); italic = other.isItalic(); underline = other.isUnderline();+ customStyle = other.getCustomStyle();+ return *this; } @@ -123,9 +126,18 @@ public: colour = col; } + std::string getCustomStyle() const {+ return customStyle;+ }++ void setCustomStyle(const string & style) {+ customStyle = style;+ }+ private: Colour colour; bool bold, italic, underline;+ std::string customStyle; }; }
@@ -35,6 +35,8 @@ enum State { LINENUMBER, SYMBOL, STRING_INTERPOLATION,+ SYNTAX_ERROR,+ SYNTAX_ERROR_MSG, // don't use constants > KEYWORD as array indices! KEYWORD,@@ -84,6 +86,14 @@ enum LoadResult { LOAD_FAILED_LUA }; +/** language server initialization results*/+enum LSResult {+ INIT_OK,+ INIT_BAD_PIPE,+ INIT_BAD_REQUEST,+ CMD_ERROR+};+ /** output formats */ enum OutputType { HTML,@@ -93,12 +103,11 @@ enum OutputType { RTF, ESC_ANSI, ESC_XTERM256,- HTML32_UNUSED,+ ESC_TRUECOLOR, SVG, BBCODE, PANGO,- ODTFLAT,- ESC_TRUECOLOR+ ODTFLAT }; }
@@ -154,7 +154,7 @@ private: /** add Lua state variables specific to the output format */ // virtual void addSpecificVars();- + /** Print document header */ string getHeader();@@ -199,6 +199,10 @@ private: /** @return Newline string */ string getNewLine();++ virtual string getHoverTagOpen(const string & hoverText);++ virtual string getHoverTagClose(); }; }
@@ -0,0 +1,174 @@+/***************************************************************************+ lspclient.h - description+ -------------------+ begin : Wed Jan 20 2021+ copyright : (C) 2002-2021 by Andre Simon+ email : a.simon@mailbox.org+ ***************************************************************************/+++/*+This file is part of Highlight.++Highlight is free software: you can redistribute it and/or modify+it under the terms of the GNU General Public License as published by+the Free Software Foundation, either version 3 of the License, or+(at your option) any later version.++Highlight is distributed in the hope that it will be useful,+but WITHOUT ANY WARRANTY; without even the implied warranty of+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the+GNU General Public License for more details.++You should have received a copy of the GNU General Public License+along with Highlight. If not, see <http://www.gnu.org/licenses/>.+*/+++#ifndef LSPCLIENT_H+#define LSPCLIENT_H++#ifdef WIN32+#include <windows.h>+#include <stdio.h>+#include <tchar.h>+#else+#include <unistd.h>+#include <sys/wait.h>+#include <signal.h>++#if __linux__+#include <sys/prctl.h>+#endif++#endif++#include <vector>+#include <map>+#include <string>++#include "semantictoken.h"++#include "picojson/picojson.h"++namespace highlight+{++class LSPClient+{++private:++ bool initialized;+ bool hoverProvider;+ bool semanticTokensProvider;+ bool logRequests;++ std::string executable, workspace;+ std::string serverName, serverVersion;+ std::string triggerSyntax;++ std::vector<std::string> options;++ std::map<int, std::string> tokenTypes;+ std::map<int, std::string> tokenModifiers;++ std::map< std::tuple<int, int>, highlight::SemanticToken > tokenMap;++ std::map< std::tuple<int, int>, highlight::SemanticToken > errorMap;+++ int initDelay;++#ifdef WIN32+ HANDLE g_hChildStd_IN_Rd ;+ HANDLE g_hChildStd_IN_Wr ;+ HANDLE g_hChildStd_OUT_Rd ;+ HANDLE g_hChildStd_OUT_Wr ;++#else+ pid_t pid;+ int inpipefd[2];+ int outpipefd[2];+#endif++ float msgId;++ int lastErrorCode;+ std::string lastErrorMessage;++ bool pipe_write_jsonrpc(const std::string &message);++ std::string pipe_read_jsonrpc();++ void runSimpleAction(const std::string action, int delay = 0);++ bool checkErrorResponse(const picojson::value &json, const std::string& picoError);++ void readNotification(const picojson::value &json);++ void static signal_callback_handler(int signum);++public:+ /** Constructor */+ LSPClient();+ ~LSPClient();++ void setExecutable ( const std::string& exec );++ void setOptions (const std::vector<std::string>& o);++ void setWorkspace ( const std::string& ws );++ void setSyntax ( const std::string& syntax );++ bool connect();++ bool runInitialize();++ void runInitialized();++ bool runDidOpen(const std::string &document, const std::string &syntax);++ bool runDidClose(const std::string &document, const std::string &syntax);++ std::string runHover(const std::string &document, int character, int line);++ bool runSemanticTokensFull(const std::string &document);++ void runShutdown();++ void runExit();++ bool isInitialized() const;++ bool isHoverProvider() const;++ bool isSemanticTokensProvider() const;++ void setLogging(bool flag);++ void setInitializeDelay(int ms);++ std::string getServerName() const;++ std::string getServerVersion() const;++ std::string getErrorMessage() const;++ bool tokenExists(unsigned int line, unsigned int col);++ bool errorExists(unsigned int line, unsigned int col);++ int getSemanticTokenCount() const;++ highlight::SemanticToken getToken(unsigned int line, unsigned int col);++ highlight::SemanticToken getError(unsigned int line, unsigned int col);++ int getErrorCode() const;+};++}++#endif
@@ -0,0 +1,63 @@+/***************************************************************************+ * LSPProfile.h - description+ * -------------------+ * begin : Fr Jan 22 2021+ * copyright : (C) 2005-2021 by Andre Simon+ * email : a.simon@mailbox.org+ ***************************************************************************/+++/*+ This file is part of Highlight.++ Highlight is free software: you can redistribute it and/or modify+ it under the terms of the GNU General Public License as published by+ the Free Software Foundation, either version 3 of the License, or+ (at your option) any later version.++ Highlight is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the+ GNU General Public License for more details.++ You should have received a copy of the GNU General Public License+ along with Highlight. If not, see <http://www.gnu.org/licenses/>.+ */++#ifndef LSPPROFILE_H+#define LSPPROFILE_H++#include <vector>+#include <string>++/**\brief LSP Profile Information+ *+ * A LSPProfile contains information of several LSP servers+ *+ * Configuration is stored in lsp.conf like:+ * { Server="clangd", Exec="clangd", Syntax="c", Options={"--log=error"} },+ */++namespace highlight+{++class LSPProfile+{+public:+ LSPProfile()+ {+ }++ ~LSPProfile()+ {+ }++ std::string serverName; ///< server name+ std::string executable; ///< server executable path+ std::string syntax; ///< language definition which can be enhanced using the LS+ int delay; ///< server delay in milliseconds after initialization request+ std::vector<std::string> options; ///< server executable start options+};++}+#endif // REGEXELEMENT_H
src/include/picojson/picojson.h
@@ -0,0 +1,1200 @@+/*+ * Copyright 2009-2010 Cybozu Labs, Inc.+ * Copyright 2011-2014 Kazuho Oku+ * All rights reserved.+ *+ * Redistribution and use in source and binary forms, with or without+ * modification, are permitted provided that the following conditions are met:+ *+ * 1. Redistributions of source code must retain the above copyright notice,+ * this list of conditions and the following disclaimer.+ *+ * 2. Redistributions in binary form must reproduce the above copyright notice,+ * this list of conditions and the following disclaimer in the documentation+ * and/or other materials provided with the distribution.+ *+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE+ * POSSIBILITY OF SUCH DAMAGE.+ */+#ifndef picojson_h+#define picojson_h++#include <algorithm>+#include <cstdio>+#include <cstdlib>+#include <cstring>+#include <cstddef>+#include <iostream>+#include <iterator>+#include <limits>+#include <map>+#include <stdexcept>+#include <string>+#include <vector>+#include <utility>++// for isnan/isinf+#if __cplusplus >= 201103L+#include <cmath>+#else+extern "C" {+#ifdef _MSC_VER+#include <float.h>+#elif defined(__INTEL_COMPILER)+#include <mathimf.h>+#else+#include <math.h>+#endif+}+#endif++#ifndef PICOJSON_USE_RVALUE_REFERENCE+#if (defined(__cpp_rvalue_references) && __cpp_rvalue_references >= 200610) || (defined(_MSC_VER) && _MSC_VER >= 1600)+#define PICOJSON_USE_RVALUE_REFERENCE 1+#else+#define PICOJSON_USE_RVALUE_REFERENCE 0+#endif+#endif // PICOJSON_USE_RVALUE_REFERENCE++#ifndef PICOJSON_NOEXCEPT+#if PICOJSON_USE_RVALUE_REFERENCE+#define PICOJSON_NOEXCEPT noexcept+#else+#define PICOJSON_NOEXCEPT throw()+#endif+#endif++// experimental support for int64_t (see README.mkdn for detail)+#ifdef PICOJSON_USE_INT64+#define __STDC_FORMAT_MACROS+#include <cerrno>+#if __cplusplus >= 201103L+#include <cinttypes>+#else+extern "C" {+#include <inttypes.h>+}+#endif+#endif++// to disable the use of localeconv(3), set PICOJSON_USE_LOCALE to 0+#ifndef PICOJSON_USE_LOCALE+#define PICOJSON_USE_LOCALE 1+#endif+#if PICOJSON_USE_LOCALE+extern "C" {+#include <locale.h>+}+#endif++#ifndef PICOJSON_ASSERT+#define PICOJSON_ASSERT(e) \+ do { \+ if (!(e)) \+ throw std::runtime_error(#e); \+ } while (0)+#endif++#ifdef _MSC_VER+#define SNPRINTF _snprintf_s+#pragma warning(push)+#pragma warning(disable : 4244) // conversion from int to char+#pragma warning(disable : 4127) // conditional expression is constant+#pragma warning(disable : 4702) // unreachable code+#pragma warning(disable : 4706) // assignment within conditional expression+#else+#define SNPRINTF snprintf+#endif++namespace picojson {++enum {+ null_type,+ boolean_type,+ number_type,+ string_type,+ array_type,+ object_type+#ifdef PICOJSON_USE_INT64+ ,+ int64_type+#endif+};++enum { INDENT_WIDTH = 2, DEFAULT_MAX_DEPTHS = 100 };++struct null {};++class value {+public:+ typedef std::vector<value> array;+ typedef std::map<std::string, value> object;+ union _storage {+ bool boolean_;+ double number_;+#ifdef PICOJSON_USE_INT64+ int64_t int64_;+#endif+ std::string *string_;+ array *array_;+ object *object_;+ };++protected:+ int type_;+ _storage u_;++public:+ value();+ value(int type, bool);+ explicit value(bool b);+#ifdef PICOJSON_USE_INT64+ explicit value(int64_t i);+#endif+ explicit value(double n);+ explicit value(const std::string &s);+ explicit value(const array &a);+ explicit value(const object &o);+#if PICOJSON_USE_RVALUE_REFERENCE+ explicit value(std::string &&s);+ explicit value(array &&a);+ explicit value(object &&o);+#endif+ explicit value(const char *s);+ value(const char *s, size_t len);+ ~value();+ value(const value &x);+ value &operator=(const value &x);+#if PICOJSON_USE_RVALUE_REFERENCE+ value(value &&x) PICOJSON_NOEXCEPT;+ value &operator=(value &&x) PICOJSON_NOEXCEPT;+#endif+ void swap(value &x) PICOJSON_NOEXCEPT;+ template <typename T> bool is() const;+ template <typename T> const T &get() const;+ template <typename T> T &get();+ template <typename T> void set(const T &);+#if PICOJSON_USE_RVALUE_REFERENCE+ template <typename T> void set(T &&);+#endif+ bool evaluate_as_boolean() const;+ const value &get(const size_t idx) const;+ const value &get(const std::string &key) const;+ value &get(const size_t idx);+ value &get(const std::string &key);++ bool contains(const size_t idx) const;+ bool contains(const std::string &key) const;+ std::string to_str() const;+ template <typename Iter> void serialize(Iter os, bool prettify = false) const;+ std::string serialize(bool prettify = false) const;++private:+ template <typename T> value(const T *); // intentionally defined to block implicit conversion of pointer to bool+ template <typename Iter> static void _indent(Iter os, int indent);+ template <typename Iter> void _serialize(Iter os, int indent) const;+ std::string _serialize(int indent) const;+ void clear();+};++typedef value::array array;+typedef value::object object;++inline value::value() : type_(null_type), u_() {+}++inline value::value(int type, bool) : type_(type), u_() {+ switch (type) {+#define INIT(p, v) \+ case p##type: \+ u_.p = v; \+ break+ INIT(boolean_, false);+ INIT(number_, 0.0);+#ifdef PICOJSON_USE_INT64+ INIT(int64_, 0);+#endif+ INIT(string_, new std::string());+ INIT(array_, new array());+ INIT(object_, new object());+#undef INIT+ default:+ break;+ }+}++inline value::value(bool b) : type_(boolean_type), u_() {+ u_.boolean_ = b;+}++#ifdef PICOJSON_USE_INT64+inline value::value(int64_t i) : type_(int64_type), u_() {+ u_.int64_ = i;+}+#endif++inline value::value(double n) : type_(number_type), u_() {+ if (+#ifdef _MSC_VER+ !_finite(n)+#elif __cplusplus >= 201103L+ std::isnan(n) || std::isinf(n)+#else+ isnan(n) || isinf(n)+#endif+ ) {+ throw std::overflow_error("");+ }+ u_.number_ = n;+}++inline value::value(const std::string &s) : type_(string_type), u_() {+ u_.string_ = new std::string(s);+}++inline value::value(const array &a) : type_(array_type), u_() {+ u_.array_ = new array(a);+}++inline value::value(const object &o) : type_(object_type), u_() {+ u_.object_ = new object(o);+}++#if PICOJSON_USE_RVALUE_REFERENCE+inline value::value(std::string &&s) : type_(string_type), u_() {+ u_.string_ = new std::string(std::move(s));+}++inline value::value(array &&a) : type_(array_type), u_() {+ u_.array_ = new array(std::move(a));+}++inline value::value(object &&o) : type_(object_type), u_() {+ u_.object_ = new object(std::move(o));+}+#endif++inline value::value(const char *s) : type_(string_type), u_() {+ u_.string_ = new std::string(s);+}++inline value::value(const char *s, size_t len) : type_(string_type), u_() {+ u_.string_ = new std::string(s, len);+}++inline void value::clear() {+ switch (type_) {+#define DEINIT(p) \+ case p##type: \+ delete u_.p; \+ break+ DEINIT(string_);+ DEINIT(array_);+ DEINIT(object_);+#undef DEINIT+ default:+ break;+ }+}++inline value::~value() {+ clear();+}++inline value::value(const value &x) : type_(x.type_), u_() {+ switch (type_) {+#define INIT(p, v) \+ case p##type: \+ u_.p = v; \+ break+ INIT(string_, new std::string(*x.u_.string_));+ INIT(array_, new array(*x.u_.array_));+ INIT(object_, new object(*x.u_.object_));+#undef INIT+ default:+ u_ = x.u_;+ break;+ }+}++inline value &value::operator=(const value &x) {+ if (this != &x) {+ value t(x);+ swap(t);+ }+ return *this;+}++#if PICOJSON_USE_RVALUE_REFERENCE+inline value::value(value &&x) PICOJSON_NOEXCEPT : type_(null_type), u_() {+ swap(x);+}+inline value &value::operator=(value &&x) PICOJSON_NOEXCEPT {+ swap(x);+ return *this;+}+#endif+inline void value::swap(value &x) PICOJSON_NOEXCEPT {+ std::swap(type_, x.type_);+ std::swap(u_, x.u_);+}++#define IS(ctype, jtype) \+ template <> inline bool value::is<ctype>() const { \+ return type_ == jtype##_type; \+ }+IS(null, null)+IS(bool, boolean)+#ifdef PICOJSON_USE_INT64+IS(int64_t, int64)+#endif+IS(std::string, string)+IS(array, array)+IS(object, object)+#undef IS+template <> inline bool value::is<double>() const {+ return type_ == number_type+#ifdef PICOJSON_USE_INT64+ || type_ == int64_type+#endif+ ;+}++#define GET(ctype, var) \+ template <> inline const ctype &value::get<ctype>() const { \+ PICOJSON_ASSERT("type mismatch! call is<type>() before get<type>()" && is<ctype>()); \+ return var; \+ } \+ template <> inline ctype &value::get<ctype>() { \+ PICOJSON_ASSERT("type mismatch! call is<type>() before get<type>()" && is<ctype>()); \+ return var; \+ }+GET(bool, u_.boolean_)+GET(std::string, *u_.string_)+GET(array, *u_.array_)+GET(object, *u_.object_)+#ifdef PICOJSON_USE_INT64+GET(double,+ (type_ == int64_type && (const_cast<value *>(this)->type_ = number_type, const_cast<value *>(this)->u_.number_ = u_.int64_),+ u_.number_))+GET(int64_t, u_.int64_)+#else+GET(double, u_.number_)+#endif+#undef GET++#define SET(ctype, jtype, setter) \+ template <> inline void value::set<ctype>(const ctype &_val) { \+ clear(); \+ type_ = jtype##_type; \+ setter \+ }+SET(bool, boolean, u_.boolean_ = _val;)+SET(std::string, string, u_.string_ = new std::string(_val);)+SET(array, array, u_.array_ = new array(_val);)+SET(object, object, u_.object_ = new object(_val);)+SET(double, number, u_.number_ = _val;)+#ifdef PICOJSON_USE_INT64+SET(int64_t, int64, u_.int64_ = _val;)+#endif+#undef SET++#if PICOJSON_USE_RVALUE_REFERENCE+#define MOVESET(ctype, jtype, setter) \+ template <> inline void value::set<ctype>(ctype && _val) { \+ clear(); \+ type_ = jtype##_type; \+ setter \+ }+MOVESET(std::string, string, u_.string_ = new std::string(std::move(_val));)+MOVESET(array, array, u_.array_ = new array(std::move(_val));)+MOVESET(object, object, u_.object_ = new object(std::move(_val));)+#undef MOVESET+#endif++inline bool value::evaluate_as_boolean() const {+ switch (type_) {+ case null_type:+ return false;+ case boolean_type:+ return u_.boolean_;+ case number_type:+ return u_.number_ != 0;+#ifdef PICOJSON_USE_INT64+ case int64_type:+ return u_.int64_ != 0;+#endif+ case string_type:+ return !u_.string_->empty();+ default:+ return true;+ }+}++inline const value &value::get(const size_t idx) const {+ static value s_null;+ PICOJSON_ASSERT(is<array>());+ return idx < u_.array_->size() ? (*u_.array_)[idx] : s_null;+}++inline value &value::get(const size_t idx) {+ static value s_null;+ PICOJSON_ASSERT(is<array>());+ return idx < u_.array_->size() ? (*u_.array_)[idx] : s_null;+}++inline const value &value::get(const std::string &key) const {+ static value s_null;+ PICOJSON_ASSERT(is<object>());+ object::const_iterator i = u_.object_->find(key);+ return i != u_.object_->end() ? i->second : s_null;+}++inline value &value::get(const std::string &key) {+ static value s_null;+ PICOJSON_ASSERT(is<object>());+ object::iterator i = u_.object_->find(key);+ return i != u_.object_->end() ? i->second : s_null;+}++inline bool value::contains(const size_t idx) const {+ PICOJSON_ASSERT(is<array>());+ return idx < u_.array_->size();+}++inline bool value::contains(const std::string &key) const {+ PICOJSON_ASSERT(is<object>());+ object::const_iterator i = u_.object_->find(key);+ return i != u_.object_->end();+}++inline std::string value::to_str() const {+ switch (type_) {+ case null_type:+ return "null";+ case boolean_type:+ return u_.boolean_ ? "true" : "false";+#ifdef PICOJSON_USE_INT64+ case int64_type: {+ char buf[sizeof("-9223372036854775808")];+ SNPRINTF(buf, sizeof(buf), "%" PRId64, u_.int64_);+ return buf;+ }+#endif+ case number_type: {+ char buf[256];+ double tmp;+ SNPRINTF(buf, sizeof(buf), fabs(u_.number_) < (1ULL << 53) && modf(u_.number_, &tmp) == 0 ? "%.f" : "%.17g", u_.number_);+#if PICOJSON_USE_LOCALE+ char *decimal_point = localeconv()->decimal_point;+ if (strcmp(decimal_point, ".") != 0) {+ size_t decimal_point_len = strlen(decimal_point);+ for (char *p = buf; *p != '\0'; ++p) {+ if (strncmp(p, decimal_point, decimal_point_len) == 0) {+ return std::string(buf, p) + "." + (p + decimal_point_len);+ }+ }+ }+#endif+ return buf;+ }+ case string_type:+ return *u_.string_;+ case array_type:+ return "array";+ case object_type:+ return "object";+ default:+ PICOJSON_ASSERT(0);+#ifdef _MSC_VER+ __assume(0);+#endif+ }+ return std::string();+}++template <typename Iter> void copy(const std::string &s, Iter oi) {+ std::copy(s.begin(), s.end(), oi);+}++template <typename Iter> struct serialize_str_char {+ Iter oi;+ void operator()(char c) {+ switch (c) {+#define MAP(val, sym) \+ case val: \+ copy(sym, oi); \+ break+ MAP('"', "\\\"");+ MAP('\\', "\\\\");+ //MAP('/', "\\/");+ MAP('\b', "\\b");+ MAP('\f', "\\f");+ MAP('\n', "\\n");+ MAP('\r', "\\r");+ MAP('\t', "\\t");+#undef MAP+ default:+ if (static_cast<unsigned char>(c) < 0x20 || c == 0x7f) {+ char buf[7];+ SNPRINTF(buf, sizeof(buf), "\\u%04x", c & 0xff);+ copy(buf, buf + 6, oi);+ } else {+ *oi++ = c;+ }+ break;+ }+ }+};++template <typename Iter> void serialize_str(const std::string &s, Iter oi) {+ *oi++ = '"';+ serialize_str_char<Iter> process_char = {oi};+ std::for_each(s.begin(), s.end(), process_char);+ *oi++ = '"';+}++template <typename Iter> void value::serialize(Iter oi, bool prettify) const {+ return _serialize(oi, prettify ? 0 : -1);+}++inline std::string value::serialize(bool prettify) const {+ return _serialize(prettify ? 0 : -1);+}++template <typename Iter> void value::_indent(Iter oi, int indent) {+ *oi++ = '\n';+ for (int i = 0; i < indent * INDENT_WIDTH; ++i) {+ *oi++ = ' ';+ }+}++template <typename Iter> void value::_serialize(Iter oi, int indent) const {+ switch (type_) {+ case string_type:+ serialize_str(*u_.string_, oi);+ break;+ case array_type: {+ *oi++ = '[';+ if (indent != -1) {+ ++indent;+ }+ for (array::const_iterator i = u_.array_->begin(); i != u_.array_->end(); ++i) {+ if (i != u_.array_->begin()) {+ *oi++ = ',';+ }+ if (indent != -1) {+ _indent(oi, indent);+ }+ i->_serialize(oi, indent);+ }+ if (indent != -1) {+ --indent;+ if (!u_.array_->empty()) {+ _indent(oi, indent);+ }+ }+ *oi++ = ']';+ break;+ }+ case object_type: {+ *oi++ = '{';+ if (indent != -1) {+ ++indent;+ }+ for (object::const_iterator i = u_.object_->begin(); i != u_.object_->end(); ++i) {+ if (i != u_.object_->begin()) {+ *oi++ = ',';+ }+ if (indent != -1) {+ _indent(oi, indent);+ }+ serialize_str(i->first, oi);+ *oi++ = ':';+ if (indent != -1) {+ *oi++ = ' ';+ }+ i->second._serialize(oi, indent);+ }+ if (indent != -1) {+ --indent;+ if (!u_.object_->empty()) {+ _indent(oi, indent);+ }+ }+ *oi++ = '}';+ break;+ }+ default:+ copy(to_str(), oi);+ break;+ }+ if (indent == 0) {+ *oi++ = '\n';+ }+}++inline std::string value::_serialize(int indent) const {+ std::string s;+ _serialize(std::back_inserter(s), indent);+ return s;+}++template <typename Iter> class input {+protected:+ Iter cur_, end_;+ bool consumed_;+ int line_;++public:+ input(const Iter &first, const Iter &last) : cur_(first), end_(last), consumed_(false), line_(1) {+ }+ int getc() {+ if (consumed_) {+ if (*cur_ == '\n') {+ ++line_;+ }+ ++cur_;+ }+ if (cur_ == end_) {+ consumed_ = false;+ return -1;+ }+ consumed_ = true;+ return *cur_ & 0xff;+ }+ void ungetc() {+ consumed_ = false;+ }+ Iter cur() const {+ if (consumed_) {+ input<Iter> *self = const_cast<input<Iter> *>(this);+ self->consumed_ = false;+ ++self->cur_;+ }+ return cur_;+ }+ int line() const {+ return line_;+ }+ void skip_ws() {+ while (1) {+ int ch = getc();+ if (!(ch == ' ' || ch == '\t' || ch == '\n' || ch == '\r')) {+ ungetc();+ break;+ }+ }+ }+ bool expect(const int expected) {+ skip_ws();+ if (getc() != expected) {+ ungetc();+ return false;+ }+ return true;+ }+ bool match(const std::string &pattern) {+ for (std::string::const_iterator pi(pattern.begin()); pi != pattern.end(); ++pi) {+ if (getc() != *pi) {+ ungetc();+ return false;+ }+ }+ return true;+ }+};++template <typename Iter> inline int _parse_quadhex(input<Iter> &in) {+ int uni_ch = 0, hex;+ for (int i = 0; i < 4; i++) {+ if ((hex = in.getc()) == -1) {+ return -1;+ }+ if ('0' <= hex && hex <= '9') {+ hex -= '0';+ } else if ('A' <= hex && hex <= 'F') {+ hex -= 'A' - 0xa;+ } else if ('a' <= hex && hex <= 'f') {+ hex -= 'a' - 0xa;+ } else {+ in.ungetc();+ return -1;+ }+ uni_ch = uni_ch * 16 + hex;+ }+ return uni_ch;+}++template <typename String, typename Iter> inline bool _parse_codepoint(String &out, input<Iter> &in) {+ int uni_ch;+ if ((uni_ch = _parse_quadhex(in)) == -1) {+ return false;+ }+ if (0xd800 <= uni_ch && uni_ch <= 0xdfff) {+ if (0xdc00 <= uni_ch) {+ // a second 16-bit of a surrogate pair appeared+ return false;+ }+ // first 16-bit of surrogate pair, get the next one+ if (in.getc() != '\\' || in.getc() != 'u') {+ in.ungetc();+ return false;+ }+ int second = _parse_quadhex(in);+ if (!(0xdc00 <= second && second <= 0xdfff)) {+ return false;+ }+ uni_ch = ((uni_ch - 0xd800) << 10) | ((second - 0xdc00) & 0x3ff);+ uni_ch += 0x10000;+ }+ if (uni_ch < 0x80) {+ out.push_back(static_cast<char>(uni_ch));+ } else {+ if (uni_ch < 0x800) {+ out.push_back(static_cast<char>(0xc0 | (uni_ch >> 6)));+ } else {+ if (uni_ch < 0x10000) {+ out.push_back(static_cast<char>(0xe0 | (uni_ch >> 12)));+ } else {+ out.push_back(static_cast<char>(0xf0 | (uni_ch >> 18)));+ out.push_back(static_cast<char>(0x80 | ((uni_ch >> 12) & 0x3f)));+ }+ out.push_back(static_cast<char>(0x80 | ((uni_ch >> 6) & 0x3f)));+ }+ out.push_back(static_cast<char>(0x80 | (uni_ch & 0x3f)));+ }+ return true;+}++template <typename String, typename Iter> inline bool _parse_string(String &out, input<Iter> &in) {+ while (1) {+ int ch = in.getc();+ if (ch < ' ') {+ in.ungetc();+ return false;+ } else if (ch == '"') {+ return true;+ } else if (ch == '\\') {+ if ((ch = in.getc()) == -1) {+ return false;+ }+ switch (ch) {+#define MAP(sym, val) \+ case sym: \+ out.push_back(val); \+ break+ MAP('"', '\"');+ MAP('\\', '\\');+ MAP('/', '/');+ MAP('b', '\b');+ MAP('f', '\f');+ MAP('n', '\n');+ MAP('r', '\r');+ MAP('t', '\t');+#undef MAP+ case 'u':+ if (!_parse_codepoint(out, in)) {+ return false;+ }+ break;+ default:+ return false;+ }+ } else {+ out.push_back(static_cast<char>(ch));+ }+ }+ return false;+}++template <typename Context, typename Iter> inline bool _parse_array(Context &ctx, input<Iter> &in) {+ if (!ctx.parse_array_start()) {+ return false;+ }+ size_t idx = 0;+ if (in.expect(']')) {+ return ctx.parse_array_stop(idx);+ }+ do {+ if (!ctx.parse_array_item(in, idx)) {+ return false;+ }+ idx++;+ } while (in.expect(','));+ return in.expect(']') && ctx.parse_array_stop(idx);+}++template <typename Context, typename Iter> inline bool _parse_object(Context &ctx, input<Iter> &in) {+ if (!ctx.parse_object_start()) {+ return false;+ }+ if (in.expect('}')) {+ return ctx.parse_object_stop();+ }+ do {+ std::string key;+ if (!in.expect('"') || !_parse_string(key, in) || !in.expect(':')) {+ return false;+ }+ if (!ctx.parse_object_item(in, key)) {+ return false;+ }+ } while (in.expect(','));+ return in.expect('}') && ctx.parse_object_stop();+}++template <typename Iter> inline std::string _parse_number(input<Iter> &in) {+ std::string num_str;+ while (1) {+ int ch = in.getc();+ if (('0' <= ch && ch <= '9') || ch == '+' || ch == '-' || ch == 'e' || ch == 'E') {+ num_str.push_back(static_cast<char>(ch));+ } else if (ch == '.') {+#if PICOJSON_USE_LOCALE+ num_str += localeconv()->decimal_point;+#else+ num_str.push_back('.');+#endif+ } else {+ in.ungetc();+ break;+ }+ }+ return num_str;+}++template <typename Context, typename Iter> inline bool _parse(Context &ctx, input<Iter> &in) {+ in.skip_ws();+ int ch = in.getc();+ switch (ch) {+#define IS(ch, text, op) \+ case ch: \+ if (in.match(text) && op) { \+ return true; \+ } else { \+ return false; \+ }+ IS('n', "ull", ctx.set_null());+ IS('f', "alse", ctx.set_bool(false));+ IS('t', "rue", ctx.set_bool(true));+#undef IS+ case '"':+ return ctx.parse_string(in);+ case '[':+ return _parse_array(ctx, in);+ case '{':+ return _parse_object(ctx, in);+ default:+ if (('0' <= ch && ch <= '9') || ch == '-') {+ double f;+ char *endp;+ in.ungetc();+ std::string num_str(_parse_number(in));+ if (num_str.empty()) {+ return false;+ }+#ifdef PICOJSON_USE_INT64+ {+ errno = 0;+ intmax_t ival = strtoimax(num_str.c_str(), &endp, 10);+ if (errno == 0 && std::numeric_limits<int64_t>::min() <= ival && ival <= std::numeric_limits<int64_t>::max() &&+ endp == num_str.c_str() + num_str.size()) {+ ctx.set_int64(ival);+ return true;+ }+ }+#endif+ f = strtod(num_str.c_str(), &endp);+ if (endp == num_str.c_str() + num_str.size()) {+ ctx.set_number(f);+ return true;+ }+ return false;+ }+ break;+ }+ in.ungetc();+ return false;+}++class deny_parse_context {+public:+ bool set_null() {+ return false;+ }+ bool set_bool(bool) {+ return false;+ }+#ifdef PICOJSON_USE_INT64+ bool set_int64(int64_t) {+ return false;+ }+#endif+ bool set_number(double) {+ return false;+ }+ template <typename Iter> bool parse_string(input<Iter> &) {+ return false;+ }+ bool parse_array_start() {+ return false;+ }+ template <typename Iter> bool parse_array_item(input<Iter> &, size_t) {+ return false;+ }+ bool parse_array_stop(size_t) {+ return false;+ }+ bool parse_object_start() {+ return false;+ }+ template <typename Iter> bool parse_object_item(input<Iter> &, const std::string &) {+ return false;+ }+};++class default_parse_context {+protected:+ value *out_;+ size_t depths_;++public:+ default_parse_context(value *out, size_t depths = DEFAULT_MAX_DEPTHS) : out_(out), depths_(depths) {+ }+ bool set_null() {+ *out_ = value();+ return true;+ }+ bool set_bool(bool b) {+ *out_ = value(b);+ return true;+ }+#ifdef PICOJSON_USE_INT64+ bool set_int64(int64_t i) {+ *out_ = value(i);+ return true;+ }+#endif+ bool set_number(double f) {+ *out_ = value(f);+ return true;+ }+ template <typename Iter> bool parse_string(input<Iter> &in) {+ *out_ = value(string_type, false);+ return _parse_string(out_->get<std::string>(), in);+ }+ bool parse_array_start() {+ if (depths_ == 0)+ return false;+ --depths_;+ *out_ = value(array_type, false);+ return true;+ }+ template <typename Iter> bool parse_array_item(input<Iter> &in, size_t) {+ array &a = out_->get<array>();+ a.push_back(value());+ default_parse_context ctx(&a.back(), depths_);+ return _parse(ctx, in);+ }+ bool parse_array_stop(size_t) {+ ++depths_;+ return true;+ }+ bool parse_object_start() {+ if (depths_ == 0)+ return false;+ *out_ = value(object_type, false);+ return true;+ }+ template <typename Iter> bool parse_object_item(input<Iter> &in, const std::string &key) {+ object &o = out_->get<object>();+ default_parse_context ctx(&o[key], depths_);+ return _parse(ctx, in);+ }+ bool parse_object_stop() {+ ++depths_;+ return true;+ }++private:+ default_parse_context(const default_parse_context &);+ default_parse_context &operator=(const default_parse_context &);+};++class null_parse_context {+protected:+ size_t depths_;++public:+ struct dummy_str {+ void push_back(int) {+ }+ };++public:+ null_parse_context(size_t depths = DEFAULT_MAX_DEPTHS) : depths_(depths) {+ }+ bool set_null() {+ return true;+ }+ bool set_bool(bool) {+ return true;+ }+#ifdef PICOJSON_USE_INT64+ bool set_int64(int64_t) {+ return true;+ }+#endif+ bool set_number(double) {+ return true;+ }+ template <typename Iter> bool parse_string(input<Iter> &in) {+ dummy_str s;+ return _parse_string(s, in);+ }+ bool parse_array_start() {+ if (depths_ == 0)+ return false;+ --depths_;+ return true;+ }+ template <typename Iter> bool parse_array_item(input<Iter> &in, size_t) {+ return _parse(*this, in);+ }+ bool parse_array_stop(size_t) {+ ++depths_;+ return true;+ }+ bool parse_object_start() {+ if (depths_ == 0)+ return false;+ --depths_;+ return true;+ }+ template <typename Iter> bool parse_object_item(input<Iter> &in, const std::string &) {+ ++depths_;+ return _parse(*this, in);+ }+ bool parse_object_stop() {+ return true;+ }++private:+ null_parse_context(const null_parse_context &);+ null_parse_context &operator=(const null_parse_context &);+};++// obsolete, use the version below+template <typename Iter> inline std::string parse(value &out, Iter &pos, const Iter &last) {+ std::string err;+ pos = parse(out, pos, last, &err);+ return err;+}++template <typename Context, typename Iter> inline Iter _parse(Context &ctx, const Iter &first, const Iter &last, std::string *err) {+ input<Iter> in(first, last);+ if (!_parse(ctx, in) && err != NULL) {+ char buf[64];+ SNPRINTF(buf, sizeof(buf), "syntax error at line %d near: ", in.line());+ *err = buf;+ while (1) {+ int ch = in.getc();+ if (ch == -1 || ch == '\n') {+ break;+ } else if (ch >= ' ') {+ err->push_back(static_cast<char>(ch));+ }+ }+ }+ return in.cur();+}++template <typename Iter> inline Iter parse(value &out, const Iter &first, const Iter &last, std::string *err) {+ default_parse_context ctx(&out);+ return _parse(ctx, first, last, err);+}++inline std::string parse(value &out, const std::string &s) {+ std::string err;+ parse(out, s.begin(), s.end(), &err);+ return err;+}++inline std::string parse(value &out, std::istream &is) {+ std::string err;+ parse(out, std::istreambuf_iterator<char>(is.rdbuf()), std::istreambuf_iterator<char>(), &err);+ return err;+}++template <typename T> struct last_error_t { static std::string s; };+template <typename T> std::string last_error_t<T>::s;++inline void set_last_error(const std::string &s) {+ last_error_t<bool>::s = s;+}++inline const std::string &get_last_error() {+ return last_error_t<bool>::s;+}++inline bool operator==(const value &x, const value &y) {+ if (x.is<null>())+ return y.is<null>();+#define PICOJSON_CMP(type) \+ if (x.is<type>()) \+ return y.is<type>() && x.get<type>() == y.get<type>()+ PICOJSON_CMP(bool);+ PICOJSON_CMP(double);+ PICOJSON_CMP(std::string);+ PICOJSON_CMP(array);+ PICOJSON_CMP(object);+#undef PICOJSON_CMP+ PICOJSON_ASSERT(0);+#ifdef _MSC_VER+ __assume(0);+#endif+ return false;+}++inline bool operator!=(const value &x, const value &y) {+ return !(x == y);+}+}++#if !PICOJSON_USE_RVALUE_REFERENCE+namespace std {+template <> inline void swap(picojson::value &x, picojson::value &y) {+ x.swap(y);+}+}+#endif++inline std::istream &operator>>(std::istream &is, picojson::value &x) {+ picojson::set_last_error(std::string());+ const std::string err(picojson::parse(x, is));+ if (!err.empty()) {+ picojson::set_last_error(err);+ is.setstate(std::ios::failbit);+ }+ return is;+}++inline std::ostream &operator<<(std::ostream &os, const picojson::value &x) {+ x.serialize(std::ostream_iterator<char>(os));+ return os;+}+#ifdef _MSC_VER+#pragma warning(pop)+#endif++#endif
@@ -0,0 +1,86 @@+/***************************************************************************+ * RegexElement.h - description+ * -------------------+ * begin : Fr Jan 22 2021+ * copyright : (C) 2005-2021 by Andre Simon+ * email : a.simon@mailbox.org+ ***************************************************************************/+++/*+ This file is part of Highlight.++ Highlight is free software: you can redistribute it and/or modify+ it under the terms of the GNU General Public License as published by+ the Free Software Foundation, either version 3 of the License, or+ (at your option) any later version.++ Highlight is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the+ GNU General Public License for more details.++ You should have received a copy of the GNU General Public License+ along with Highlight. If not, see <http://www.gnu.org/licenses/>.+ */++#ifndef REGEXELEMENT_H+#define REGEXELEMENT_H++#include <boost/xpressive/xpressive_dynamic.hpp>++#include "enums.h"+++/**+ * @todo write docs+ */+/**\brief Association of a regex with a state description+ *+ * A RegexElement associates a regular expression with the state information+ * (opening and closing state, pattern, keyword class, keyword group id, language name)+ */++namespace highlight+{++class RegexElement+{+public:+ RegexElement()+ :open ( STANDARD ), end ( STANDARD ), kwClass ( 0 ), capturingGroup ( -1 ),+ langName(), instanceId(instanceCnt++),+ priority(0), constraintLineNum (0)+ {+ }++ RegexElement ( State oState, State eState, const std::string&rePattern, unsigned int cID=0, int group=-1, const std::string& name="",+ unsigned int prio=0, unsigned int cLineNum=0, const std::string &cFilename=""):+ open ( oState ), end ( eState ), kwClass ( cID ), capturingGroup ( group ), langName(name),instanceId(instanceCnt++),+ priority(prio), constraintLineNum (cLineNum), constraintFilename (cFilename)+ {+ pattern=rePattern;+ rex=boost::xpressive::sregex::compile(rePattern);+ }++ ~RegexElement()+ {+ instanceCnt--;+ }++ State open, ///< opening state+ end; ///< closing state+ boost::xpressive::sregex rex;+ unsigned int kwClass; ///< keyword class+ int capturingGroup; ///< capturing group ID+ std::string langName; ///< language name+ std::string pattern; ///< RE pattern+ static int instanceCnt;+ int instanceId;+ unsigned int priority; ///< if set and matched, no other other regular expression will be evaluated+ unsigned int constraintLineNum; ///< restrict this regex to this source line number+ std::string constraintFilename; ///< restrict this regex to this source filename+};++}+#endif // REGEXELEMENT_H
@@ -0,0 +1,89 @@+/***************************************************************************+ * regextoken.h - description+ * -------------------+ * begin : Wed Jan 20 2021+ * copyright : (C) 2002-2021 by Andre Simon+ * email : a.simon@mailbox.org+ ***************************************************************************/+++/*+ * This file is part of Highlight.+ *+ * Highlight is free software: you can redistribute it and/or modify+ * it under the terms of the GNU General Public License as published by+ * the Free Software Foundation, either version 3 of the License, or+ * (at your option) any later version.+ *+ * Highlight is distributed in the hope that it will be useful,+ * but WITHOUT ANY WARRANTY; without even the implied warranty of+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the+ * GNU General Public License for more details.+ *+ * You should have received a copy of the GNU General Public License+ * along with Highlight. If not, see <http://www.gnu.org/licenses/>.+ */+++#ifndef REGEX_TOKEN_H+#define REGEX_TOKEN_H++#include <string>++#include "enums.h"++namespace highlight+{+/** \brief Regular Expression Information++ This class associates a processing state with a keyword class and the length of the matched token.++* @author Andre Simon+*/+class RegexToken+{+public:++ /// Constructor+ RegexToken() : length ( 0 ), state ( STANDARD ), kwClass ( 0 ), name()+ {+ }++ /// Constructor+ RegexToken ( State s, unsigned int l , unsigned int c, const std::string&n ) :+ length ( l ), state ( s ), kwClass ( c ), name(n)+ {+ }++ /// Copy Constructor+ RegexToken ( const RegexToken& other )+ {+ length = other.length;+ state = other.state;+ kwClass = other.kwClass;+ name=other.name;+ }++ /// Operator overloading+ RegexToken& operator= ( const RegexToken & other )+ {+ length = other.length;+ state = other.state;+ kwClass = other.kwClass;+ name=other.name;+ return *this;+ }++ ~RegexToken()+ {+ }++ unsigned int length; ///< length of the token+ State state; ///< state of the matched token (keyword, string, etc)+ unsigned int kwClass; ///< keyword class if state is keyword+ std::string name; ///< language name needed to handle embedded languages+};++}++#endif
@@ -88,7 +88,7 @@ public: /** @param cs flag to enable character styles*/ void setRTFCharStyles ( bool cs );- + /** @param pc flag to enable page color output */ void setRTFPageColor ( bool pc ); @@ -118,14 +118,14 @@ private: /** flag to add page color */ bool addPageColor;- + /** flag to enable Unicode conversion */ bool isUtf8;- + /** utf-8 to utf-16 conversion variables */ unsigned long utf16Char; size_t utf8SeqLen;- + /** @return escaped character*/ virtual string maskCharacter ( unsigned char ); @@ -144,7 +144,7 @@ private: string getCharStyle ( int styleNumber,const ElementStyle &elem, const string&styleName ); /** @param elem associated element style- @return RTF formatting sequnce to close element formatting */+ @return RTF formatting sequence to close element formatting */ string getCloseTag ( const ElementStyle &elem ); /** @param styleID current style ID
@@ -0,0 +1,88 @@+/***************************************************************************+ * regextoken.h - description+ * -------------------+ * begin : Wed Jan 20 2021+ * copyright : (C) 2002-2021 by Andre Simon+ * email : a.simon@mailbox.org+ ***************************************************************************/+++/*+ * This file is part of Highlight.+ *+ * Highlight is free software: you can redistribute it and/or modify+ * it under the terms of the GNU General Public License as published by+ * the Free Software Foundation, either version 3 of the License, or+ * (at your option) any later version.+ *+ * Highlight is distributed in the hope that it will be useful,+ * but WITHOUT ANY WARRANTY; without even the implied warranty of+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the+ * GNU General Public License for more details.+ *+ * You should have received a copy of the GNU General Public License+ * along with Highlight. If not, see <http://www.gnu.org/licenses/>.+ */+++#ifndef SEMANTIC_TOKEN_H+#define SEMANTIC_TOKEN_H++#include <string>+++namespace highlight+{+/** \brief Semantic Token Information++ This class contains the name, id and length of a semantic token.++* @author Andre Simon+*/+class SemanticToken+{+public:++ /// Constructor+ SemanticToken() : length ( 0 ), idx ( 0 ), id()+ {+ }++ /// Constructor+ SemanticToken ( unsigned int l, unsigned int idx, const std::string&n ) :+ length ( l ), idx ( idx ), id(n)+ {+ }++ /// Copy Constructor+ SemanticToken ( const SemanticToken& other )+ {+ length = other.length;+ idx = other.idx;++ id=other.id;+ }++ /// Operator overloading+ SemanticToken& operator= ( const SemanticToken & other )+ {+ length = other.length;+ idx = other.idx;++ id=other.id;+ return *this;+ }++ ~SemanticToken()+ {+ }++ unsigned int length; ///< length of the token+ unsigned int idx; ///< token type index++ std::string id; ///< token type name+};++}++#endif
@@ -2,7 +2,7 @@ stringtools.h - description ------------------- begin : Mon Dec 10 2001- copyright : (C) 2001-2010 by Andre Simon+ copyright : (C) 2001-2021 by Andre Simon email : a.simon@mailbox.org ***************************************************************************/ @@ -67,7 +67,7 @@ string trim(const string& s); \param s string containing tokens \param delim Token delimiter \return vector containing found tokens */-vector <string> splitString ( const string& s, unsigned char delim );+vector<string> splitString ( const string& s, unsigned char delim ); /** Convert string to a numeric value of the given type \param val variable of specified type which will contain the numeric value
@@ -36,12 +36,11 @@ along with Highlight. If not, see <http://www.gnu.org/licenses/>. #include <iterator> #include <sstream> -#include <boost/xpressive/xpressive_dynamic.hpp>- #include <Diluculum/LuaState.hpp> #include <Diluculum/LuaVariable.hpp> #include <Diluculum/LuaFunction.hpp> +#include "regexelement.h" #include "platform_fs.h" #include "enums.h" @@ -75,8 +74,8 @@ public: SyntaxReader(); ~SyntaxReader();- - ++ /** Load new language definition Will only read a new language definition if the given file path is not equal to the path of the current language definition.@@ -92,7 +91,7 @@ public: { return currentPath!=langDefPath; }- + /** \return Failed regular expression */ string getFailedRegex() const {@@ -132,11 +131,11 @@ public: /** \param s String \return true if s is not a known keyword */ bool isKeyword ( const string &s ) ;- + /** \param s String \return keyword list group id */ int getKeywordListGroup ( const string &s );- + /** \return True if multi line comments may be nested */ bool allowNestedMLComments() const {@@ -155,7 +154,7 @@ public: { return reformatCode; }- + bool assertDelimEqualLength() const { return assertEqualLength;@@ -190,19 +189,19 @@ public: { return persistentSnippets.size(); }- + /** \return list of format override flags defined in syntax definitions */ vector<int>& getOverrideStyleAttributes() { return overrideStyles; }- + /** \return description of the programming language */ const string & getDescription () const { return langDesc; }- + const string & getCategoryDescription() const { return categories;@@ -256,18 +255,18 @@ public: \param langPath path of embedded language definition */ void restoreLangEndDelim(const string&langPath);- + bool allowsInnerSection(const string& langPath); bool requiresTwoPassRun(); bool requiresParamUpdate(); - + string getPersistentHookConditions(); void clearPersistentSnippets();- + /** \param lang language definition name (no path, no ".lang" extension) \return absolute path based on the previously loaded definition@@ -297,7 +296,7 @@ public: { return pluginConfigOverride.count(name) ? pluginConfigOverride[name] : ""; }- + /** \return pointer to state validation function */@@ -320,7 +319,7 @@ public: { return decorateLineBeginFct; }- + /** \return pointer to line end decorate function */@@ -328,7 +327,7 @@ public: { return decorateLineEndFct; }- + /** \return pointer to Lua state */@@ -349,20 +348,20 @@ public: \param fn name of the processed input file */ void setInputFileName(const string& fn) { currentInputFile=fn; }- + /** \return name of the processed input file */- + string getInputFileName() const { return currentInputFile; }- + /** \param groupID keyword group to be stored on disk \param kw keyword token to be stored on disk */- + void addPersistentKeyword(unsigned int groupID, const string& kw);- + /** \param groupID keyword group to be stored on disk \param column start of range within line@@ -371,14 +370,19 @@ public: \param fileName file name of processed file containing the line */ void addPersistentStateRange(unsigned int groupID, unsigned int column,unsigned int length, unsigned int lineNumber, const string& fileName);- + /** \param ls Lua state to be initialized with constants \param langDefPath absolute path of language definition \param pluginReadFilePath absolute path of plugin input file */ static void initLuaState(Diluculum::LuaState& ls, const string& langDefPath, const string& pluginReadFilePath, OutputType outputType=HTML );- ++ // generate a keyword class+ unsigned int generateNewKWClass ( int classID, const char *prefix="kw" );++ int getKeywordCount() const;+ private: static const string REGEX_IDENTIFIER;@@ -390,7 +394,7 @@ private: // name of file being processed string currentInputFile;- + // Language description string langDesc, categories, encodingHint; @@ -405,16 +409,16 @@ private: static set <string> persistentSyntaxDescriptions; vector <RegexElement*> regex;- + vector <int>overrideStyles; // collect delimiters or get current delimiter in CodeGenerator::loadEmbeddedLang static DelimiterMap nestedStateEndDelimiters;- + static DelimiterMap pluginConfigOverride; static AllowInnerSectionsMap allowInnerSections;- + // saves if delimiter pair consists of the same delimiter symbol map <int, bool> delimiterDistinct; @@ -433,18 +437,20 @@ private: // code formatting is enabled if set reformatCode,- + // string open and close delimiters must have the same length assertEqualLength,- + paramsNeedUpdate; // character which is prefix of raw string (c#) unsigned char rawStringPrefix; - //character which continues curreent style on next line+ //character which continues current style on next line unsigned char continuationChar; + int keywordCount;+ bool readFlag(const Diluculum::LuaVariable& var) ; // interface for plug-ins: add keywords dynamically@@ -452,18 +458,17 @@ private: // interface for plug-ins: remove keywords dynamically static int luaRemoveKeyword (lua_State *L);- + static int luaAddPersistentState (lua_State *L);- + static int luaOverrideParam (lua_State *L);- - // generate a keyword class - unsigned int generateNewKWClass ( int classID );- +++ void addKeyword(unsigned int groupID, const string& kw); void removeKeyword(const string& kw);- + void overrideParam(const string& name, const string& val); @@ -476,51 +481,5 @@ private: static vector<Diluculum::LuaFunction*> pluginChunks; }; --/**\brief Association of a regex with a state description-- A RegexElement associates a regular expression with the state information- (opening and closing state, pattern, keyword class, keyword group id, language name)-*/-class RegexElement-{-public:- RegexElement()- :open ( STANDARD ), end ( STANDARD ), kwClass ( 0 ), capturingGroup ( -1 ), - langName(), instanceId(instanceCnt++),- priority(0), constraintLineNum (0) - {- }-- RegexElement ( State oState, State eState, const string&rePattern, unsigned int cID=0, int group=-1, const string& name="", - unsigned int prio=0, unsigned int cLineNum=0, const string &cFilename="" /*, const string &sDesc=""*/) :- open ( oState ), end ( eState ), kwClass ( cID ), capturingGroup ( group ), langName(name),instanceId(instanceCnt++),- priority(prio), constraintLineNum (cLineNum), constraintFilename (cFilename) //, semantics(sDesc)- {- pattern=rePattern;- rex=boost::xpressive::sregex::compile(rePattern);- }-- ~RegexElement()- {- instanceCnt--;- }-- State open, ///< opening state- end; ///< closing state- boost::xpressive::sregex rex;- unsigned int kwClass; ///< keyword class- int capturingGroup; ///< capturing group ID- string langName; ///< language name- string pattern; ///< RE pattern- static int instanceCnt;- int instanceId;- unsigned int priority; ///< if set and matched, no other other regular expression will be evaluated - unsigned int constraintLineNum; ///< restrict this regex to this source line number- //int constraintColumn; ///< restrict this regex to this source column- string constraintFilename; ///< restrict this regex to this source filename- //string semantics;-};- } #endif
@@ -2,7 +2,7 @@ themereader.h - description ------------------- begin : Son Nov 10 2002- copyright : (C) 2002-2020 by Andre Simon+ copyright : (C) 2002-2021 by Andre Simon email : a.simon@mailbox.org ***************************************************************************/ @@ -28,6 +28,7 @@ along with Highlight. If not, see <http://www.gnu.org/licenses/>. #ifndef THEMEREADER_H #define THEMEREADER_H +#include <map> #include <string> #include <Diluculum/LuaState.hpp>@@ -56,25 +57,34 @@ class ThemeReader { private: ElementStyle comment, slcomment, str, dstr,- escapeChar, number, directive, line, operators, interpolation;+ escapeChar, number, directive, line, operators,+ interpolation, hover, errorMessages, errors; ElementStyle defaultElem; ElementStyle canvas; string errorMsg; string desc, categories; string themeInjections;- + vector<Diluculum::LuaFunction*> pluginChunks; + map<string, int> semanticStyleMap;+ bool fileOK, restoreStyles, dirtyAttributes; + int keywordStyleCnt;++ OutputType outputType;+ KeywordStyles keywordStyles, originalStyles; void initStyle(ElementStyle& style, const Diluculum::LuaVariable& var);- - float getsRGB(int rgbValue); - float getBrightness(const Colour& colour);+ float getsRGB(int rgbValue) const;++ float getBrightness(const Colour& colour) const;++ OutputType getOutputType(const string &typeDesc); public: /** Constructor */@@ -83,8 +93,10 @@ public: /** load style definition \param styleDefinitionFile Style definition path+ \param outputType+ \param loadSemanticStyles \return True if successful */- bool load ( const string & styleDefinitionFile, OutputType outputType=HTML );+ bool load ( const string & styleDefinitionFile, OutputType outputType=HTML, bool loadSemanticStyles = false ); void addUserChunk(const Diluculum::LuaFunction& chunk) {@@ -151,6 +163,12 @@ public: /** \return Operator style*/ ElementStyle getOperatorStyle() const; + ElementStyle getHoverStyle() const;++ ElementStyle getErrorStyle() const;++ ElementStyle getErrorMessageStyle() const;+ /** \param className Name of keyword class (eg kwa, kwb, .., kwd) \return keyword style of the given className */@@ -159,9 +177,15 @@ public: /** \return True if language definition was found */ bool found() const ; + int getSemanticStyle(const string &type);++ int getSemanticTokenStyleCount() const;++ int getKeywordStyleCount() const;+ void overrideAttributes( vector<int>& attributes); - float getContrast();+ float getContrast() const; }; }
@@ -30,8 +30,8 @@ along with Highlight. If not, see <http://www.gnu.org/licenses/>. #include <string> -#define HIGHLIGHT_MAJOR "3"-#define HIGHLIGHT_MINOR "61"+#define HIGHLIGHT_MAJOR "4"+#define HIGHLIGHT_MINOR "0-beta6" #define HIGHLIGHT_VERSION HIGHLIGHT_MAJOR "." HIGHLIGHT_MINOR
@@ -17,15 +17,15 @@ CXX ?= g++ QMAKE ?= qmake -CFLAGS:=-Wall -O2 ${CFLAGS} -DNDEBUG -std=c++11 -D_FILE_OFFSET_BITS=64+#CFLAGS:=-Wall -O2 ${CFLAGS} -DNDEBUG -std=c++11 -D_FILE_OFFSET_BITS=64 #CFLAGS:= -fPIC -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -fasynchronous-unwind-tables -fstack-clash-protection -#CFLAGS:=-ggdb -O0 ${CFLAGS} -std=c++11+CFLAGS:=-ggdb -O0 ${CFLAGS} -std=c++11 CFLAGS_DILU=-fno-strict-aliasing -SO_VERSION=3.61+SO_VERSION=4.0 # Source paths CORE_DIR=./core/@@ -88,7 +88,7 @@ CORE_OBJECTS:=stylecolour.o stringtools.o \ xhtmlgenerator.o latexgenerator.o texgenerator.o rtfgenerator.o \ htmlgenerator.o ansigenerator.o svggenerator.o codegenerator.o \ xterm256generator.o pangogenerator.o bbcodegenerator.o odtgenerator.o\- syntaxreader.o elementstyle.o themereader.o keystore.o\+ syntaxreader.o elementstyle.o themereader.o keystore.o lspclient.o\ datadir.o preformatter.o platform_fs.o\ ASStreamIterator.o ASResource.o ASFormatter.o ASBeautifier.o ASEnhancer.o @@ -141,7 +141,7 @@ syntaxreader.o: ${CORE_DIR}syntaxreader.cpp ${INCLUDE_DIR}syntaxreader.h ${INCLU codegenerator.o: ${CORE_DIR}codegenerator.cpp ${INCLUDE_DIR}codegenerator.h ${INCLUDE_DIR}syntaxreader.h \ ${INCLUDE_DIR}stringtools.h ${INCLUDE_DIR}enums.h ${INCLUDE_DIR}themereader.h ${INCLUDE_DIR}keystore.h \- ${INCLUDE_DIR}elementstyle.h ${INCLUDE_DIR}stylecolour.h ${INCLUDE_DIR}preformatter.h \+ ${INCLUDE_DIR}elementstyle.h ${INCLUDE_DIR}stylecolour.h ${INCLUDE_DIR}preformatter.h ${INCLUDE_DIR}lspclient.h \ ${INCLUDE_DIR}htmlgenerator.h ${INCLUDE_DIR}version.h ${INCLUDE_DIR}charcodes.h ${INCLUDE_DIR}xhtmlgenerator.h ${INCLUDE_DIR}rtfgenerator.h \ ${INCLUDE_DIR}latexgenerator.h ${INCLUDE_DIR}texgenerator.h ${INCLUDE_DIR}ansigenerator.h ${CXX_COMPILE} ${CORE_DIR}codegenerator.cpp@@ -192,6 +192,9 @@ stylecolour.o: ${CORE_DIR}stylecolour.cpp ${INCLUDE_DIR}stylecolour.h ${INCLUDE_ keystore.o: ${CORE_DIR}keystore.cpp ${INCLUDE_DIR}keystore.h ${CXX_COMPILE} ${CORE_DIR}keystore.cpp +lspclient.o: ${CORE_DIR}lspclient.cpp ${INCLUDE_DIR}lspclient.h+ ${CXX_COMPILE} ${CORE_DIR}lspclient.cpp+ # cli stuff arg_parser.o: ${CLI_DIR}arg_parser.cc ${CXX_COMPILE} ${CLI_DIR}arg_parser.cc
@@ -23,4 +23,24 @@ Keywords = { { Colour= "#8080c0", Bold=true }, { Colour= "#0080c0" }, { Colour= "#004466" },+ { Colour= "#0dc375" },+ { Colour= "#0db6c3" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -21,4 +21,24 @@ Keywords = { { Colour="#88ffaa" }, { Colour="#aa99ff" }, { Colour="#f0b77f" },+ { Colour="#ff731f" },+ { Colour="#96c30d" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -22,4 +22,24 @@ Keywords = { { Colour="#66ff99" }, { Colour="#cc9966" }, { Colour="#ff99aa" },+ { Colour="#687fc4" },+ { Colour="#bdbdbd" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -21,5 +21,24 @@ Keywords = { { Colour="#bdb66b" }, { Colour="#8b95f0" }, { Colour="#f25252" },+ { Colour="#aaa045;" },+ { Colour="#85adff" },+}++-- new LSP based elements: +SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -21,5 +21,24 @@ Keywords = { { Colour="#b06c58" }, { Colour="#30a188" }, { Colour="#990000" },+ { Colour="#9a85ff" },+ { Colour="#85adff" },+}++-- new LSP based elements: +SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -65,6 +65,29 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++Error = { Colour = "#ff19a5", Bold = true, Custom = { { Format = "html", Style = "color: #ff0000; font-weight: bold;padding: 2px; background-color: rgba(220,0,0,0.3);" } } }++Hover = { Custom = { { Format = "html", Style = "cursor:help" } } }++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Apathy"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#031A16" --> Default Background@@ -64,6 +64,26 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}++ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Ashes"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#1C2023" --> Default Background@@ -64,6 +64,27 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+++ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/atelier-cave-light.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Atelier Cave Light"-Categories = {"light", "base16"}+Categories = {"light", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#efecf4" --> Default Background@@ -64,6 +64,26 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}++ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/atelier-cave.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Atelier Cave"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#19171c" --> Default Background@@ -64,6 +64,26 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}++ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/atelier-dune-light.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Atelier Dune Light"-Categories = {"light", "base16"}+Categories = {"light", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#fefbec" --> Default Background@@ -64,6 +64,27 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+++ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/atelier-dune.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Atelier Dune"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#20201d" --> Default Background@@ -64,6 +64,26 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}++ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/atelier-estuary-light.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Atelier Estuary Light"-Categories = {"light", "base16"}+Categories = {"light", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#f4f3ec" --> Default Background@@ -64,6 +64,27 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+++ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/atelier-estuary.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Atelier Estuary"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#22221b" --> Default Background base01 = "#302f27" --> Lighter Background (Used for status bars)@@ -63,6 +63,27 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+++ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/atelier-forest-light.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Atelier Forest Light"-Categories = {"light", "base16"}+Categories = {"light", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#f1efee" --> Default Background@@ -64,6 +64,27 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+++ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/atelier-forest.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Atelier Forest"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#1b1918" --> Default Background@@ -64,6 +64,26 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}++ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/atelier-heath-light.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Atelier Heath Light"-Categories = {"light", "base16"}+Categories = {"light", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#f7f3f7" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/atelier-heath.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Atelier Heath"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#1b181b" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/atelier-lakeside-light.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Atelier Lakeside Light"-Categories = {"light", "base16"}+Categories = {"light", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#ebf8ff" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/atelier-lakeside.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Atelier Lakeside"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#161b1d" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/atelier-plateau-light.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Atelier Plateau Light"-Categories = {"light", "base16"}+Categories = {"light", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#f4ecec" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/atelier-plateau.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Atelier Plateau"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#1b1818" --> Default Background@@ -64,6 +64,24 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+} --[[---------------------------------------------------------------------------- The MIT License
themes/base16/atelier-savanna-light.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Atelier Savanna Light"-Categories = {"light", "base16"}+Categories = {"light", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#ecf4ee" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/atelier-savanna.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Atelier Savanna"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#171c19" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/atelier-seaside-light.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Atelier Seaside Light"-Categories = {"light", "base16"}+Categories = {"light", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#f4fbf4" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/atelier-seaside.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Atelier Seaside"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#131513" --> Default Background@@ -64,6 +64,24 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+} --[[---------------------------------------------------------------------------- The MIT License
themes/base16/atelier-sulphurpool-light.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Atelier Sulphurpool Light"-Categories = {"light", "base16"}+Categories = {"light", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#f5f7ff" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/atelier-sulphurpool.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Atelier Sulphurpool"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#202746" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Bespin"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#28211c" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Brewer"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#0c0d0e" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Bright"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#000000" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/brushtrees-dark.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Brush Trees Dark"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#485867" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/brushtrees.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Brush Trees"-Categories = {"light", "base16"}+Categories = {"light", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#E3EFEF" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Chalk"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#151515" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Circus"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#191919" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/classic-dark.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Classic Dark"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#151515" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/classic-light.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Classic Light"-Categories = {"light", "base16"}+Categories = {"light", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#F5F5F5" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/codeschool.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Codeschool"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#232c31" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Cupcake"-Categories = {"light", "base16"}+Categories = {"light", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#fbf1f2" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Cupertino"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#5e5e5e" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Darktooth"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#1D2021" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/default-dark.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Default Dark"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#181818" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/default-light.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Default Light"-Categories = {"light", "base16"}+Categories = {"light", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#f8f8f8" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Dracula"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#282936" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Eighties"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#2d2d2d" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Embers"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#16130F" --> Default Background@@ -64,6 +64,24 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+} --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Flat"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#2C3E50" --> Default Background@@ -64,6 +64,24 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+} --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Github"-Categories = {"light", "base16"}+Categories = {"light", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#ffffff" --> Default Background@@ -64,6 +64,24 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+} --[[---------------------------------------------------------------------------- The MIT License
themes/base16/google-dark.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Google Dark"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#1d1f21" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/google-light.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Google Light"-Categories = {"light", "base16"}+Categories = {"light", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#ffffff" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/grayscale-dark.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Grayscale Dark"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#101010" --> Default Background@@ -64,6 +64,24 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+} --[[---------------------------------------------------------------------------- The MIT License
themes/base16/grayscale-light.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Grayscale Light"-Categories = {"light", "base16"}+Categories = {"light", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#f7f7f7" --> Default Background@@ -64,6 +64,24 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+} --[[---------------------------------------------------------------------------- The MIT License
themes/base16/greenscreen.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Green Screen"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#001100" --> Default Background@@ -64,6 +64,28 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:+++Error = { Colour = "#d359ff" }++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/gruvbox-dark-hard.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Gruvbox dark, hard"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#1d2021" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/gruvbox-dark-medium.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Gruvbox dark, medium"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#282828" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/gruvbox-dark-pale.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Gruvbox dark, pale"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#262626" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/gruvbox-dark-soft.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Gruvbox dark, soft"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#32302f" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/gruvbox-light-hard.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Gruvbox light, hard"-Categories = {"light", "base16"}+Categories = {"light", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#f9f5d7" --> Default Background@@ -64,6 +64,24 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+} --[[---------------------------------------------------------------------------- The MIT License
themes/base16/gruvbox-light-medium.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Gruvbox light, medium"-Categories = {"light", "base16"}+Categories = {"light", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#fbf1c7" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/gruvbox-light-soft.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Gruvbox light, soft"-Categories = {"light", "base16"}+Categories = {"light", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#f2e5bc" --> Default Background@@ -64,6 +64,24 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+} --[[---------------------------------------------------------------------------- The MIT License
themes/base16/harmonic-dark.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Harmonic16 Dark"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#0b1c2c" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/harmonic-light.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Harmonic16 Light"-Categories = {"light", "base16"}+Categories = {"light", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#f7f9fb" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Hopscotch"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#322931" --> Default Background@@ -64,6 +64,24 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+} --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 iA Dark"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#1a1a1a" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 iA Light"-Categories = {"light", "base16"}+Categories = {"light", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#f6f6f6" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Icy"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#021012" --> Default Background@@ -64,6 +64,27 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++Error = { Colour = "#d359ff" }++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 IR Black"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#000000" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Isotope"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#000000" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Macintosh"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#000000" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Marrakesh"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#201602" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Materia"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#263238" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/material-darker.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Material Darker"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#212121" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/material-lighter.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Material Lighter"-Categories = {"light", "base16"}+Categories = {"light", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#FAFAFA" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/material-palenight.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Material Palenight"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#292D3E" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/material-vivid.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Material Vivid"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#263238" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Material"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#263238" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/mellow-purple.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Mellow Purple"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#1e0528" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/mexico-light.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Mexico Light"-Categories = {"light", "base16"}+Categories = {"light", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#f8f8f8" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Mocha"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#3B3228" --> Default Background@@ -64,6 +64,24 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+} --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Monokai"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#272822" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Nord"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#2E3440" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Ocean"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#2b303b" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/oceanicnext.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 OceanicNext"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#1B2B34" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 One Light"-Categories = {"light", "base16"}+Categories = {"light", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#fafafa" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 OneDark"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#282c34" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/outrun-dark.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Outrun Dark"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#00002A" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Paraiso"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#2f1e2e" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 PhD"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#061229" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Pico"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#000000" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Pop"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#000000" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Porple"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#292c36" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/railscasts.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Railscasts"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#2b2b2b" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Rebecca"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#292a44" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Seti UI"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#151718" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/shapeshifter.theme
@@ -1,90 +0,0 @@---[[ 2018/06/17 | Highlight v3.43 | Lua 5.3-================================================================================-Scheme: Base16 "Shapeshifter"-Author: Tyler Benziger (http://tybenz.com)-License: MIT License-Source: https://github.com/chriskempson/base16-unclaimed-schemes-================================================================================-Converted from YAML by Tristano Ajmone:- <tajmone@gmail.com>- https://github.com/tajmone- https://gitlab.com/tajmone----------------------------------------------------------------------------------For more info on Chris Kempson's Base16, see:- http://chriskempson.com/projects/base16-------------------------------------------------------------------------------]]-Description = "Base16 Shapeshifter"-Categories = {"light", "base16"}-----------------------------------------------------------------------------------base00 = "#f9f9f9" --> Default Background-base01 = "#e0e0e0" --> Lighter Background (Used for status bars)-base02 = "#ababab" --> Selection Background-base03 = "#555555" --> Comments, Invisibles, Line Highlighting-base04 = "#343434" --> Dark Foreground (Used for status bars)-base05 = "#102015" --> Default Foreground, Caret, Delimiters, Operators-base06 = "#040404" --> Light Foreground (Not often used)-base07 = "#000000" --> Light Background (Not often used)-base08 = "#e92f2f" --> Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted-base09 = "#e09448" --> Integers, Boolean, Constants, XML Attributes, Markup Link Url-base0A = "#dddd13" --> Classes, Markup Bold, Search Text Background-base0B = "#0ed839" --> Strings, Inherited Class, Markup Code, Diff Inserted-base0C = "#23edda" --> Support, Regular Expressions, Escape Characters, Markup Quotes-base0D = "#3b48e3" --> Functions, Methods, Attribute IDs, Headings-base0E = "#f996e2" --> Keywords, Storage, Selector, Markup Italic, Diff Changed-base0F = "#69542d" --> Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?>----------------------------------------------------------------------------------Canvas = { Colour = base00, Italic = false, Bold = false }--Default = { Colour = base05, Italic = false, Bold = false }--Number = { Colour = base09, Italic = false, Bold = false }--Operator = { Colour = base05, Italic = false, Bold = false }--String = { Colour = base0B, Italic = false, Bold = false }--Escape = { Colour = base0C, Italic = false, Bold = false }-StringPreProc = Escape--Interpolation = { Colour = base09, Italic = false, Bold = false }--LineComment = { Colour = base03, Italic = true, Bold = false } --> Italic-BlockComment = LineComment--LineNum = { Colour = base04, Italic = false, Bold = false }--PreProcessor = { Colour = base0F, Italic = false, Bold = false }--Keywords = {- { Colour = base0E, Italic = false, Bold = true }, --> kwd 1- { Colour = base0D, Italic = false, Bold = true }, --> kwd 2- { Colour = base08, Italic = false, Bold = true }, --> kwd 3- { Colour = base0A, Italic = false, Bold = true }, --> kwd 4- { Colour = base0F, Italic = false, Bold = true }, --> kwd 5- { Colour = base09, Italic = false, Bold = true }, --> kwd 6-}---[[-----------------------------------------------------------------------------The MIT License--Copyright (c) 2018 Tristano Ajmone-Copyright (c) Tyler Benziger (http://tybenz.com)--Permission is hereby granted, free of charge, to any person obtaining a copy-of this software and associated documentation files (the "Software"), to deal-in the Software without restriction, including without limitation the rights-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell-copies of the Software, and to permit persons to whom the Software is-furnished to do so, subject to the following conditions:--The above copyright notice and this permission notice shall be included in all-copies or substantial portions of the Software.--THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE-SOFTWARE.-------------------------------------------------------------------------------]]
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Snazzy"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#1e1f29" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/solarflare.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Solar Flare"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#18262F" --> Default Background@@ -64,6 +64,24 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+} --[[---------------------------------------------------------------------------- The MIT License
themes/base16/solarized-dark.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Solarized Dark"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#002b36" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/solarized-light.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Solarized Light"-Categories = {"light", "base16"}+Categories = {"light", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#fdf6e3" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Spacemacs"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#1f2022" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/summerfruit-dark.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Summerfruit Dark"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#151515" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/summerfruit-light.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Summerfruit Light"-Categories = {"light", "base16"}+Categories = {"light", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#FFFFFF" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/tomorrow-night.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Tomorrow Night"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#1d1f21" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Tomorrow"-Categories = {"light", "base16"}+Categories = {"light", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#ffffff" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 London Tube"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#231f20" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Twilight"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#1e1e1e" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/unikitty-dark.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Unikitty Dark"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#2e2a31" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/unikitty-light.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Unikitty Light"-Categories = {"light", "base16"}+Categories = {"light", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#ffffff" --> Default Background@@ -64,6 +64,24 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+} --[[---------------------------------------------------------------------------- The MIT License
themes/base16/unikitty-reversible.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Unikitty Reversible"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#2e2a31" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 Woodland"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#231e18" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/xcode-dusk.theme
@@ -14,7 +14,7 @@ For more info on Chris Kempson's Base16, see: http://chriskempson.com/projects/base16 ------------------------------------------------------------------------------]] Description = "Base16 XCode Dusk"-Categories = {"dark", "base16"}+Categories = {"dark", "base16", "lsp"} -------------------------------------------------------------------------------- base00 = "#282B35" --> Default Background@@ -64,6 +64,25 @@ Keywords = { { Colour = base0F, Italic = false, Bold = true }, --> kwd 5 { Colour = base09, Italic = false, Bold = true }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = { Colour = base0A } },+ { Type = 'struct', Style = { Colour = base0A } },+ { Type = 'interface', Style = { Colour = base06 } },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/base16/zenburn.theme
@@ -1,90 +0,0 @@---[[ 2018/06/17 | Highlight v3.43 | Lua 5.3-================================================================================-Scheme: Base16 "Zenburn"-Author: elnawe-License: MIT License-Source: https://github.com/elnawe/base16-zenburn-scheme-================================================================================-Converted from YAML by Tristano Ajmone:- <tajmone@gmail.com>- https://github.com/tajmone- https://gitlab.com/tajmone----------------------------------------------------------------------------------For more info on Chris Kempson's Base16, see:- http://chriskempson.com/projects/base16-------------------------------------------------------------------------------]]-Description = "Base16 Zenburn"-Categories = {"dark", "base16"}-----------------------------------------------------------------------------------base00 = "#3f3f3f" --> Default Background-base01 = "#404040" --> Lighter Background (Used for status bars)-base02 = "#606060" --> Selection Background-base03 = "#4f4f4f" --> Comments, Invisibles, Line Highlighting-base04 = "#808080" --> Dark Foreground (Used for status bars)-base05 = "#dcdccc" --> Default Foreground, Caret, Delimiters, Operators-base06 = "#c0c0c0" --> Light Foreground (Not often used)-base07 = "#ffffff" --> Light Background (Not often used)-base08 = "#dca3a3" --> Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted-base09 = "#dfaf8f" --> Integers, Boolean, Constants, XML Attributes, Markup Link Url-base0A = "#e0cf9f" --> Classes, Markup Bold, Search Text Background-base0B = "#5f7f5f" --> Strings, Inherited Class, Markup Code, Diff Inserted-base0C = "#93e0e3" --> Support, Regular Expressions, Escape Characters, Markup Quotes-base0D = "#7cb8bb" --> Functions, Methods, Attribute IDs, Headings-base0E = "#dc8cc3" --> Keywords, Storage, Selector, Markup Italic, Diff Changed-base0F = "#000000" --> Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?>----------------------------------------------------------------------------------Canvas = { Colour = base00, Italic = false, Bold = false }--Default = { Colour = base05, Italic = false, Bold = false }--Number = { Colour = base09, Italic = false, Bold = false }--Operator = { Colour = base05, Italic = false, Bold = false }--String = { Colour = base0B, Italic = false, Bold = false }--Escape = { Colour = base0C, Italic = false, Bold = false }-StringPreProc = Escape--Interpolation = { Colour = base09, Italic = false, Bold = false }--LineComment = { Colour = base03, Italic = true, Bold = false } --> Italic-BlockComment = LineComment--LineNum = { Colour = base04, Italic = false, Bold = false }--PreProcessor = { Colour = base0F, Italic = false, Bold = false }--Keywords = {- { Colour = base0E, Italic = false, Bold = true }, --> kwd 1- { Colour = base0D, Italic = false, Bold = true }, --> kwd 2- { Colour = base08, Italic = false, Bold = true }, --> kwd 3- { Colour = base0A, Italic = false, Bold = true }, --> kwd 4- { Colour = base0F, Italic = false, Bold = true }, --> kwd 5- { Colour = base09, Italic = false, Bold = true }, --> kwd 6-}---[[-----------------------------------------------------------------------------The MIT License--Copyright (c) 2018 Tristano Ajmone-Copyright (c) elnawe--Permission is hereby granted, free of charge, to any person obtaining a copy-of this software and associated documentation files (the "Software"), to deal-in the Software without restriction, including without limitation the rights-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell-copies of the Software, and to permit persons to whom the Software is-furnished to do so, subject to the following conditions:--The above copyright notice and this permission notice shall be included in all-copies or substantial portions of the Software.--THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE-SOFTWARE.-------------------------------------------------------------------------------]]
@@ -21,5 +21,24 @@ Keywords = { { Colour="#0490e8" , Bold=true}, { Colour="#a9fcf7" }, { Colour="#b4e09f" },+ { Colour="#db6169" },+ { Colour="#ffb2ab" },+}++-- new LSP based elements: +SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -21,5 +21,24 @@ Keywords = { { Colour="#a00050" }, { Colour="#00a150" }, { Colour="#c73a69" },+ { Colour="#6545ff" },+ { Colour="#ff98f6" },+}++-- new LSP based elements: +SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -21,5 +21,24 @@ Keywords = { { Colour="#540054" , Bold=true}, { Colour="#005400" }, { Colour="#002a54" },+ { Colour="#920bbb" },+ { Colour="#920bbb" },+}++-- new LSP based elements: +SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -21,5 +21,24 @@ Keywords = { { Colour= "#1d9617", Bold=true }, { Colour= "#72d42c", Bold=true }, { Colour= "#81e535", Bold=true },+ { Colour= "#6aa0b8" },+ { Colour= "#b734bc" },+}++-- new LSP based elements: +SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -21,5 +21,24 @@ Keywords = { { Colour= "#c06cf8", Bold=true }, { Colour= "#00ff99" }, { Colour= "#1ceddc" },+ { Colour="#6a79b8" },+ { Colour="#6a79b8" },+}++-- new LSP based elements: +SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -21,4 +21,24 @@ Keywords = { { Colour="#A9EE8A" }, { Colour="#b5768d" }, { Colour="#76b57e" },+ { Colour="#6aabb8" },+ { Colour="#6aabb8" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -21,4 +21,24 @@ Keywords = { { Colour="#80ffa0" }, { Colour="#7f7fff" }, { Colour="#ff7fff" },+ { Colour="#ffafba" },+ { Colour="#ffffff" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -21,4 +21,24 @@ Keywords = { { Colour= "#F48C23" }, { Colour= "#0000ff" }, { Colour= "#d11ced" },+ { Colour= "#dd820d" },+ { Colour= "#776ab8" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -21,4 +21,24 @@ Keywords = { { Colour="#cdc673" }, { Colour="#c7f08b" }, { Colour="#ffc7c4" },+ { Colour="#7cc5f0" },+ { Colour="#9097c9" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -21,4 +21,24 @@ Keywords = { { Colour="#ffc864" }, { Colour="#ffffa1" }, { Colour="#ff5c33" },+ { Colour="#6d98fd" },+ { Colour="#57d2c3" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -21,4 +21,24 @@ Keywords = { { Colour="#ff4400" }, { Colour="#9ecc91" }, { Colour="#edc1b2" },+ { Colour="#9ad257" },+ { Colour="#ffddff" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -21,4 +21,24 @@ Keywords = { { Colour="#66cd00" }, { Colour="#cc0085" }, { Colour="#cccccc" },+ { Colour="#c8f277" },+ { Colour="#77f2df" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -21,4 +21,24 @@ Keywords = { { Colour= "#60ff60" }, { Colour= "#e88d25" }, { Colour= "#e825e2", Bold=true },+ { Colour= "#7ae171" },+ { Colour= "#f28177" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -21,4 +21,24 @@ Keywords = { { Colour="#e0e0ff" }, { Colour="#7ff0a6" }, { Colour="#9fbfaf" },+ { Colour="#fdb3d8" },+ { Colour="#fdd8b3" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -20,4 +20,24 @@ Keywords = { { Colour= "#00ff00" }, { Colour= "#26e0e7" }, { Colour= "#f34627" },+ { Colour= "#ffcb00" },+ { Colour= "#8083e6" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -20,4 +20,24 @@ Keywords = { { Colour="#569cd6"}, { Colour="#569cd6" }, { Colour="#dcdcaa" },+ { Colour="#b9a66f" },+ { Colour="#aaaaaa" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -4,7 +4,7 @@ Description = "vim darkslategray" Categories = {"dark", "vim"} Default = { Colour="#f5deb3" }-Canvas = { Colour="#2f4f4f" }+Canvas = { Colour="#1d3e3e" } Number = { Colour="#ff6347" } Escape = { Colour="#ff6347" } String = { Colour="#7fffd4" }@@ -17,8 +17,28 @@ PreProcessor = { Colour="#f5b3eb" } Interpolation = { Colour="#ffffff" } Keywords = {- { Colour="#4682b4" , Bold=true},+ { Colour="#a28ffb" , Bold=true}, { Colour="#98fb98" , Bold=true}, { Colour="#b57847" }, { Colour="#b3caf5" },+ { Colour="#93ebff" },+ { Colour="#ffffff" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -2,7 +2,7 @@ Description = "vim darkspectrum" Categories = {"dark", "vim"} -Default = { Colour="#efefef" }+Default = { Colour="#99f0dc" } Canvas = { Colour="#2A2A2A" } Number = { Colour="#fce94f" } Escape = { Colour="#e9b96e" }@@ -16,8 +16,28 @@ PreProcessor = Default Interpolation = { Colour="#69C8DB" } Keywords = {- { Colour="#ffffff" , Bold=true},+ { Colour="#bfbcbc" , Bold=true}, { Colour="#8ae234" , Bold=true}, { Colour="#34e3e3" }, { Colour="#efefef" },+ { Colour="#868585" },+ { Colour="#b3b3b3" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -20,4 +20,24 @@ Keywords = { { Colour="#33FF99" }, { Colour="#54ffeb" }, { Colour="#b276ee" },+ { Colour="#edf2a6" },+ { Colour="#f2d3a6" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
themes/duotone-dark-earth.theme
@@ -1,4 +1,4 @@---[[ 2019/05/26 | Highlight v3.51 | Lua 5.3+--[[ 2021/02/12 | Highlight v4.0 | Lua 5.3 ================================================================================ Scheme: "DuoTone Dark Earth" Author: simurai@@ -40,6 +40,25 @@ Keywords = { { Colour = "#98755d" }, --> kwd 5 { Colour = "#726546" }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[3] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[2] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/duotone-dark-forest.theme
@@ -1,4 +1,4 @@---[[ 2019/05/26 | Highlight v3.51 | Lua 5.3+--[[ 2021/02/12 | Highlight v4.0 | Lua 5.3 ================================================================================ Scheme: "DuoTone Dark Forest" Author: simurai@@ -40,6 +40,25 @@ Keywords = { { Colour = "#869886" }, --> kwd 5 { Colour = "#747a52" }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[3] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[2] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -1,4 +1,4 @@---[[ 2019/05/26 | Highlight v3.51 | Lua 5.3+--[[ 2021/02/12 | Highlight v4.0 | Lua 5.3 ================================================================================ Scheme: "DuoTone Dark Sea" Author: simurai@@ -14,7 +14,7 @@ Based on the DuoTone Themes project by simurai: ------------------------------------------------------------------------------]] Description = "DuoTone Dark Sea" Categories = {"dark", "duotone"}---------------------------------------------------------------------------------+ Canvas = { Colour = "#1d262f" } Default = { Colour = "#88b4e7" } LineNum = { Colour = "#444c55" }@@ -40,6 +40,25 @@ Keywords = { { Colour = "#5d8cc0" }, --> kwd 5 { Colour = "#42675a" }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[3] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[2] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -1,4 +1,4 @@---[[ 2019/05/26 | Highlight v3.51 | Lua 5.3+--[[ 2021/02/12 | Highlight v4.0 | Lua 5.3 ================================================================================ Scheme: "DuoTone Dark Sky" Author: simurai@@ -14,7 +14,7 @@ Based on the DuoTone Themes project by simurai: ------------------------------------------------------------------------------]] Description = "DuoTone Dark Sky" Categories = {"dark", "duotone"}---------------------------------------------------------------------------------+ Canvas = { Colour = "#2c2734" } Default = { Colour = "#cab2fa" } LineNum = { Colour = "#544d60" }@@ -40,6 +40,25 @@ Keywords = { { Colour = "#ae91e8" }, --> kwd 5 { Colour = "#765f4c" }, --> kwd 6 }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[3] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[3] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
themes/duotone-dark-space.theme
@@ -1,4 +1,4 @@---[[ 2019/05/26 | Highlight v3.51 | Lua 5.3+--[[ 2021/02/12 | Highlight v4.0 | Lua 5.3 ================================================================================ Scheme: "DuoTone Dark Space" Author: simurai@@ -14,7 +14,7 @@ Based on the DuoTone Themes project by simurai: ------------------------------------------------------------------------------]] Description = "DuoTone Dark Space" Categories = {"dark", "duotone"}---------------------------------------------------------------------------------+ Canvas = { Colour = "#24242e" } Default = { Colour = "#8686cb" } LineNum = { Colour = "#49495a" }@@ -35,11 +35,29 @@ BlockComment = LineComment Keywords = { { Colour = "#bebeef" }, --> kwd 1 { Colour = "#fe7734" }, --> kwd 2- { Colour = "#8686cb" }, --> kwd 3+ { Colour = "#ae7241" }, --> kwd 3 { Colour = "#b06845" }, --> kwd 4 { Colour = "#7272a1" }, --> kwd 5 { Colour = "#644c40" }, --> kwd 6 }+-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[3] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[3] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}+ --[[---------------------------------------------------------------------------- The MIT License
@@ -20,4 +20,24 @@ Keywords = { { Colour="#ffdead" }, { Colour="#8bf0b3" }, { Colour="#8bf0e6" },+ { Colour="#f297e0" },+ { Colour="#b3b3b3" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -22,4 +22,24 @@ Keywords = { { Colour="#8c1d69" , Bold=true}, { Colour="#a89222" , Bold=true}, { Colour="#a8227b" },+ { Colour="#d91919" },+ { Colour="#b86134" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -22,4 +22,24 @@ Keywords = { { Colour= "#ed0f55", Bold=true }, { Colour= "#26aae7", Bold=true }, { Colour= "#1d45d6" },+ { Colour= "#0e4f3e" },+ { Colour= "#3499b8" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -22,4 +22,24 @@ Keywords = { { Colour= "#000080" }, { Colour= "#0000ff" }, { Colour= "#000000" },+ { Colour= "#077c9f" },+ { Colour= "#000000" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -21,4 +21,24 @@ Keywords = { { Colour= "#d45999" }, { Colour= "#da392e" }, --sgml tags { Colour= "#407caa" }, --sgml ent+ { Colour= "#449516", Bold=true },+ { Colour= "#7e7e7e", Bold=true },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -22,4 +22,24 @@ Keywords = { { Colour= "#7f0055", Bold=true }, { Colour= "#7f0055", Bold=true }, { Colour= "#000000" },+ { Colour= "#7f0055" },+ { Colour= "#7e7e7e", Bold=true },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -21,4 +21,24 @@ Keywords = { { Colour= "#208920" }, { Colour= "#0000ff" }, { Colour= "#000000" },+ { Colour= "#9c20ee" },+ { Colour= "#7e7e7e" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -49,7 +49,27 @@ Keywords = { Default, -- INSTRUCTIONS Default, -- LABELS Default, -- DIRECTIVES- }+ Default,+ Default,+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+} --[[ ============================================================================== CHANGELOG
themes/edit-flashdevelop.theme
@@ -22,5 +22,24 @@ Keywords = { { Colour= "#0000ff" }, { Colour= "#2b91af" }, { Colour= "#2b91af" },- { Colour= "#000000" },+ { Colour= "#0000ff" },+ { Colour="#fc0000" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -21,6 +21,25 @@ Keywords = { { Colour= "#2E8B57" }, { Colour= "#572e8c" }, { Colour= "#3A3935", Bold=true },+ { Colour= "#A52A35", Bold=true },+ { Colour= "#265aa8", Bold=true }, } +-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}
@@ -46,6 +46,26 @@ Keywords = { { Colour="#A3FFD4" }, -- ("Aquamarine" Green) { Colour="#66A1CD" }, -- ("Danube" Blue) { Colour="#E64D59" }, -- ("Mandy" Red)+ { Colour= "#FFFFB3" },+ { Colour= "#4dc2e6" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, } --[[============================================================================ CHANGELOG
@@ -22,4 +22,24 @@ Keywords = { { Colour= "#009966", Bold=true }, { Colour= "#0099ff" }, { Colour= "#9966ff" },+ { Colour= "#009966" },+ { Colour= "#7e7e7e" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -19,6 +19,50 @@ LineComment = BlockComment Keywords = { { Colour= "#000000", Bold=true }, { Colour= "#0057AE" },- { Colour= "#000000", Bold=true },+ { Colour= "#000000" }, { Colour= "#010181" },+ { Colour= "#0d5bc3" },+ { Colour= "#750dc3" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'keyword', Style = Keywords[1] },+ { Type = 'type', Style = Keywords[2] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'interface', Style = { Colour= "750dc3" } },+ { Type = 'struct', Style = { Colour= "#3d40ff" } },+ { Type = 'namespace', Style = { Colour= "#750dc3" } },+ { Type = 'typeParameter', Style = { Colour= "#ff3db3" } },+ { Type = 'parameter', Style = { Colour= "#2591f0" } },+ { Type = 'variable', Style = { Colour= "#ff3d3d" } },+ { Type = 'property', Style = { Colour= "#ff3db3" } },+ { Type = 'enumMember', Style = { Colour= "#ff0000" } },+ { Type = 'event', Style = { Colour= "#0d5bc3" } },+ { Type = 'modifier', Style = { Colour= "#0d5bc3" } },+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}++-- Error = { Custom = { { Format = "html", Style = "color: red" } } }++Hover = { Custom = { { Format = "html", Style = "cursor:help" } } }++-- not used yet:++SemanticTokenModifiers = {+ { Type = 'declaration', Style = { Colour= "#ff9421" } },+ { Type = 'definition', Style = { Colour= "#ff9421" } },+ { Type = 'readonly', Style = { Colour= "#ff9421" } },+ { Type = 'static', Style = { Colour= "#ff9421" } },+ { Type = 'deprecated', Style = { Colour= "#ff9421" } },+ { Type = 'abstract', Style = { Colour= "#ff9421" } },+ { Type = 'async', Style = { Colour= "#ff9421" } },+ { Type = 'modification', Style = { Colour= "#ff9421" } },+ { Type = 'documentation', Style = { Colour= "#ff9421" } },+ { Type = 'defaultLibrary', Style = { Colour= "#ff9421" } } }
@@ -8,8 +8,8 @@ Categories = {"light"} Default = { Colour="#000000" } Canvas = { Colour="#ffffff" } Number = { Colour="#000000" }-Escape = { Colour="#000000" }-String = { Colour="#800000" }+Escape = { Colour="#a31593" }+String = { Colour="#a31593" } StringPreProc = { Colour="#800000" } Operator = { Colour="#000000" } BlockComment = { Colour="#228B22" }@@ -23,4 +23,24 @@ Keywords = { { Colour= "#000000" }, { Colour= "#0000ff" }, { Colour= "#000000" },+ { Colour= "#0000ff" },+ { Colour= "#6f2452" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -22,4 +22,24 @@ Keywords = { { Colour= "#0000ff" }, { Colour= "#2b91af" }, { Colour= "#000000" },+ { Colour= "#0000ff" },+ { Colour= "#008000" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -22,4 +22,24 @@ Keywords = { { Colour= "#a52a2a", Bold=true }, { Colour= "#dda0dd", Bold=true }, { Colour= "#000000" },+ { Colour= "#000000" },+ { Colour= "#000000" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -38,5 +38,25 @@ Keywords = { { Colour="#006666" , Bold=true }, -- "Blue Stone" (PB Keywords) { Colour="#924B72" }, -- "Cannon Pink" (constants) { Colour="#006666" }, -- "Blue Stone" (Procedure calls)- String -- (Escaped-Strings Prefix "~")+ String, -- (Escaped-Strings Prefix "~")+ { Colour= "#006666" },+ { Colour= "#176629" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -9,8 +9,8 @@ Number = { Colour="#e64ce6" } Escape = { Colour="#f8d1d1" } String = { Colour="#c641c6" } StringPreProc = { Colour="#c641c6" }-BlockComment = { Colour="#53fcfc" }-PreProcessor = { Colour="#53fcfc" }+BlockComment = { Colour="#53bdfc" }+PreProcessor = { Colour="#53bdfc" } LineNum = { Colour="#ffff54" } Operator = { Colour="#ffffff" } LineComment = BlockComment@@ -21,4 +21,24 @@ Keywords = { { Colour= "#69c789" }, { Colour= "#d0d045" }, { Colour= "#ffffff" },+ { Colour="#ffffff" },+ { Colour="#7d6dcf" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -19,7 +19,27 @@ Interpolation = Escape Keywords = { { Colour= "#B26818" },- { Colour= "#00ff00" },+ { Colour= "#00dd00" }, { Colour= "#B26818" }, { Colour= "#000000" },+ { Colour= "#000000" },+ { Colour= "#000000" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -22,4 +22,24 @@ Keywords = { { Colour= "#8f0055" }, { Colour= "#8f0055" }, { Colour= "#000000" },+ { Colour="#dd69ae" },+ { Colour="#dd9869" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -21,4 +21,24 @@ Keywords = { { Colour="#90bfd0" }, { Colour="#9fd190" }, { Colour="#d1909e" },+ { Colour="#efafd5" },+ { Colour="#b5efaf" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
themes/fine_blue.theme
@@ -1,25 +0,0 @@--- Theme generated by vim2theme--Description = "vim fine_blue"--Categories = {"light", "vim"}--Default = { Colour="#404048" }-Canvas = { Colour="#f8f8f8" }-Number = { Colour="#2020ff" }-Escape = { Colour="#005858" }-String = { Colour="#2020ff" }-BlockComment = { Colour="#ff00c0" , Italic=true}-StringPreProc = String-LineComment = BlockComment-Operator = Default-LineNum = { Colour="#aaaaaa" }-PreProcessor = { Colour="#007387" }-Interpolation = { Colour="#8A5588" }--Keywords = {- { Colour="#008858", Bold=true; },- { Colour="#7040ff", Bold=true; },- { Colour="#87002f", Bold=true; },- { Colour="#404048", Bold=true;},-}
@@ -0,0 +1,45 @@+-- Theme generated by vim2theme++Description = "vim fine_blue"++Categories = {"light", "vim"}++Default = { Colour="#404048" }+Canvas = { Colour="#f8f8f8" }+Number = { Colour="#2020ff" }+Escape = { Colour="#005858" }+String = { Colour="#2020ff" }+BlockComment = { Colour="#ff00c0" , Italic=true}+StringPreProc = String+LineComment = BlockComment+Operator = Default+LineNum = { Colour="#aaaaaa" }+PreProcessor = { Colour="#007387" }+Interpolation = { Colour="#8A5588" }++Keywords = {+ { Colour="#008858", Bold=true; },+ { Colour="#7040ff", Bold=true; },+ { Colour="#87002f", Bold=true; },+ { Colour="#404048", Bold=true;},+ { Colour="#5b5b5b" },+ { Colour="#878787" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator },+}
@@ -22,4 +22,24 @@ Keywords = { { Colour="#dabfa5" , Bold=true}, { Colour="#d792e0" }, { Colour="#a6e1ff" },+ { Colour="#e0af91" },+ { Colour="#878787" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -22,4 +22,24 @@ Keywords = { { Colour="#0070e6" }, { Colour="#30f050" }, { Colour="#b030f0" },+ { Colour="#60c666" },+ { Colour="#51acde" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -21,4 +21,24 @@ Keywords = { { Colour= "#0086b3" }, { Colour= "#0086b3" }, { Colour= "#0086b3" },+ { Colour="#a71d5d" },+ { Colour="#38ae50" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -22,4 +22,24 @@ Keywords = { { Colour= "#ffed8a" }, { Colour= "#dedede", Bold=true }, { Colour= "#ddbb00", Bold=true },+ { Colour= "#ffed8a" },+ { Colour= "#ae8038" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'type', Style = Keywords[2] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[4] },+ { Type = 'interface', Style = Keywords[1] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'enumMember', Style = Keywords[5] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'keyword', Style = Keywords[1]},+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -1,4 +1,4 @@--- Theme generated by theme2to3+ Description="Green LCD" Categories = {"dark"}@@ -21,4 +21,25 @@ Keywords = { { Colour= "#00ed00" }, { Colour= "#beef13" }, { Colour= "#c0ff73" },+ { Colour= "#73ffde" },+ { Colour= "#c6ff73" },+}+++Error = { Colour = "#f200cc" }++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'keyword', Style = Keywords[1] },+ { Type = 'type', Style = Keywords[2] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[2] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -22,4 +22,22 @@ Keywords = { { Colour="#e6ac32" }, { Colour="#cf8563" }, { Colour="#bb63cf" },+ { Colour= "#62acce" },+ { Colour= "#656cc3" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'keyword', Style = Keywords[1] },+ { Type = 'type', Style = Keywords[2] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[2] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -22,4 +22,23 @@ Keywords = { { Colour="#5fafff" }, { Colour="#006bd6" }, { Colour="#d600d6" },+ { Colour= "#73ffff" },+ { Colour= "#c6ff73" },+}+++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'keyword', Style = Keywords[1] },+ { Type = 'type', Style = Keywords[2] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[2] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -21,4 +21,23 @@ Keywords = { { Colour= "#29a655" }, { Colour= "#427142" }, { Colour= "#A59A39" },+ { Colour= "#bcc365" },+ { Colour= "#8dc365" },+}+++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'keyword', Style = Keywords[1] },+ { Type = 'type', Style = Keywords[2] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[2] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -22,4 +22,23 @@ Keywords = { { Colour="#f70000" }, { Colour="#5500ab" }, { Colour="#00aaaa" },+ { Colour= "#96ffff" },+ { Colour= "#ffffff" },+}+++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'keyword', Style = Keywords[1] },+ { Type = 'type', Style = Keywords[2] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[2] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -22,4 +22,23 @@ Keywords = { { Colour="#ffcc00" }, { Colour="#cc6666" }, { Colour="#99cc66" },+ { Colour= "#88c1d3" },+ { Colour= "#889cd3" },+}+++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'keyword', Style = Keywords[1] },+ { Type = 'type', Style = Keywords[2] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[2] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -22,4 +22,22 @@ Keywords = { { Colour="#aaff54" , Bold=true}, { Colour="#48d990" }, { Colour="#54ffaa" },+ { Colour= "#88d3ba" },+ { Colour= "#54ffaa" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'keyword', Style = Keywords[1] },+ { Type = 'type', Style = Keywords[2] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[2] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -22,4 +22,23 @@ Keywords = { { Colour= "#000066", Bold=true }, { Colour= "#000066" }, { Colour= "#004466" },+ { Colour= "#000066" },+ { Colour= "#000066" },+}+++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'keyword', Style = Keywords[1] },+ { Type = 'type', Style = Keywords[2] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[2] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -22,4 +22,23 @@ Keywords = { { Colour="#66D9EF" }, { Colour="#95f067" }, { Colour="#25faac" },+ { Colour= "#d388c6" },+ { Colour= "#25faac" },+}+++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'keyword', Style = Keywords[1] },+ { Type = 'type', Style = Keywords[2] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[2] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -22,4 +22,23 @@ Keywords = { { Colour="#f09479" , Bold=true}, { Colour="#87ed7e" }, { Colour="#e47eed" },+ { Colour= "#d6eb7e" },+ { Colour= "#88d396" },+}+++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'keyword', Style = Keywords[1] },+ { Type = 'type', Style = Keywords[2] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[2] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -12,7 +12,7 @@ String = { Colour="#3fffa7" } BlockComment = { Colour="#e7e77f" } StringPreProc = String LineComment = BlockComment-Operator = Default+Operator = {Colour = "#9a9a9a"} LineNum = BlockComment PreProcessor = { Colour="#a3743b" } Interpolation = Escape@@ -22,4 +22,22 @@ Keywords = { { Colour="#d174a8" , Bold=true}, { Colour="#98d65a" , Bold=true}, { Colour="#ffffff" , Bold=true},+ { Colour= "#5ad5d5" },+ { Colour= "#7ea0eb" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'keyword', Style = Keywords[1] },+ { Type = 'type', Style = Keywords[2] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[2] },+ { Type = 'parameter', Style = Keywords[6] },+ { Type = 'variable', Style = Keywords[5] },+ { Type = 'number', Style = Number },+ { Type = 'regexp', Style = String },+ { Type = 'operator', Style = Operator }, }
@@ -21,4 +21,22 @@ Keywords = { { Colour= "#e1e72f" }, { Colour= "#13d8ef" }, { Colour= "#ffffff" },+ { Colour= "#f8c50b" },+ { Colour= "#6a9eb8" },+}++-- new LSP based elements:++SemanticTokenTypes = {+ { Type = 'keyword', Style = Keywords[1] },+ { Type = 'type', Style = Keywords[2] },+ { Type = 'function', Style = Keywords[4] },+ { Type = 'method', Style = Keywords[4] },+ { Type = 'class', Style = Keywords[1] },+ { Type = 'struct', Style = Keywords[2] },+ { Type = 'parameter', Style = Keywords[6] },
The diff stops at 1024 KiB. git show 75285f8 shows the rest.