changeset 29498:5384bb4efc51

rearrange default lexer settings and add second color mode to gui editor * default-qt-settings.in: remove all lexer related default settings * gui-preferences-ed.h: add constants related to the number of lexer styles, remove obsolete preference ed_highlight_current_line_color * gui-settings.cc (get_color_value): move detecting the color from the QVaraiant drom color_value into this separate function (required for reading the default lexer settings); (color_value); see get_color_value; (set_color_value): shorter access to QStringList elements * gui-settings.h: new method get_color_value, new constant for the magenta color indicating same color as the default value in the editor styles * file-editor-tab.cc (file_edito_tab): read lexer settings depending on the current color mode, determine color of current line depending on background color (no more user pref) * octave-qscintilla.cc (set_selection_marker_color): increase alpha value for highlighted occurrences of double clicked word * resource-manager.cc (get_valid_lexer_styles): moved this method from settings_dialog (static) to normal method here; (copy_font_attributes): private method for copying attributes from one font to another font (read_lexer_settings): take color mode into consideration, if lexer settings not found in settings file, take defaults from the lexer, not from octaves default settings file, and write them to the settings file related to the selected color mode * resource-manager.h: new methods get_valid_lexer_styles, copy_font_attributes and new arguments for read_lexer_settings * settings-dialog.cc (get_valid_lexer_styles) moved static method into non-static in resource_manager; (settings_dialog): remove settings for current editor line color; move lexer definition and reading related settings into separate new slot update_editor_lexers, add color mode checkbox and connect state change to update_editor_lexers; (update_editor_lexers): definition of lexers for each language and call update_lexer for the specific actions; (update_lexer): call rmgr.read_lexer_settings, i.e., read settings or get default values from lexer check whether the language tabs in the settings dialog have to be created or updated (due to color mode change), call get_lexer_settings in the first and update the color picker in the second case; (get_lexer_settings, renamed from read_lexer_settings): create the language tab and fill in the lexer values (write_lexer_settings): new argument color mode, write settings into the related section into the settings file; (write_changed_settings): write the editor color mode into the settings, remove editor current line color * settings-dialog.h: new methods update_editor_lexers, update_lexer, renamed read_lexer_settings into get_lexer_settings, new arguments for write_lexer_settings, removed class variable for editor current line color * settings-dialog.ui: added checkbox for editor color mode, removed color picker for editor current line color
author Torsten Lilge <ttl-octave@mailbox.org>
date Tue, 06 Apr 2021 21:26:52 +0200
parents 8f1cf32ada13
children f152b41862d9
files libgui/default-qt-settings.in libgui/src/gui-preferences-ed.h libgui/src/gui-settings.cc libgui/src/gui-settings.h libgui/src/m-editor/file-editor-tab.cc libgui/src/m-editor/octave-qscintilla.cc libgui/src/resource-manager.cc libgui/src/resource-manager.h libgui/src/settings-dialog.cc libgui/src/settings-dialog.h libgui/src/settings-dialog.ui
diffstat 11 files changed, 340 insertions(+), 1101 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/default-qt-settings.in	Tue Apr 06 14:25:27 2021 -0400
+++ b/libgui/default-qt-settings.in	Tue Apr 06 21:26:52 2021 +0200
@@ -20,836 +20,3 @@
 global_collapsed=false
 persistent_collapsed=false
 column_state=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x2\x12\0\0\0\x5\x1\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x2\0\0\x1\x90\0\0\0\x4\0\0\0\0\0\0\0\x82\0\0\0\x1\0\0\0\0)
-
-[Scintilla]
-Octave\style0\color=0
-Octave\style0\eolfill=false
-Octave\style0\font=__default_font__, __default_font_size__, 0, 0, 0
-Octave\style0\paper=16777215
-Octave\style1\color=43520
-Octave\style1\eolfill=false
-Octave\style1\font=__default_font__, __default_font_size__, 0, 0, 0
-Octave\style1\paper=16777215
-Octave\style2\color=8355584
-Octave\style2\eolfill=false
-Octave\style2\font=__default_font__, __default_font_size__, 0, 0, 0
-Octave\style2\paper=16777215
-Octave\style3\color=11184640
-Octave\style3\eolfill=false
-Octave\style3\font=__default_font__, __default_font_size__, 0, 0, 0
-Octave\style3\paper=16777215
-Octave\style4\color=255
-Octave\style4\eolfill=false
-Octave\style4\font=__default_font__, __default_font_size__, 1, 0, 0
-Octave\style4\paper=16777215
-Octave\style5\color=16755200
-Octave\style5\eolfill=false
-Octave\style5\font=__default_font__, __default_font_size__, 0, 0, 0
-Octave\style5\paper=16777215
-Octave\style6\color=14483456
-Octave\style6\eolfill=false
-Octave\style6\font=__default_font__, __default_font_size__, 0, 0, 0
-Octave\style6\paper=16777215
-Octave\style7\color=0
-Octave\style7\eolfill=false
-Octave\style7\font=__default_font__, __default_font_size__, 0, 0, 0
-Octave\style7\paper=16777215
-Octave\style8\color=16755200
-Octave\style8\eolfill=false
-Octave\style8\font=__default_font__, __default_font_size__, 0, 0, 0
-Octave\style8\paper=16777215
-Octave\defaultcolor=0
-Octave\defaultpaper=16777215
-Octave\defaultfont=__default_font__, __default_font_size__, 0, 0, 0
-Octave\autoindentstyle=-1
-C%2B%2B\style0\color=0
-C%2B%2B\style0\eolfill=false
-C%2B%2B\style0\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style0\paper=16777215
-C%2B%2B\style1\color=43520
-C%2B%2B\style1\eolfill=false
-C%2B%2B\style1\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style1\paper=16777215
-C%2B%2B\style2\color=43520
-C%2B%2B\style2\eolfill=false
-C%2B%2B\style2\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style2\paper=16777215
-C%2B%2B\style3\color=4157503
-C%2B%2B\style3\eolfill=false
-C%2B%2B\style3\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style3\paper=16777215
-C%2B%2B\style4\color=11184640
-C%2B%2B\style4\eolfill=false
-C%2B%2B\style4\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style4\paper=16777215
-C%2B%2B\style5\color=255
-C%2B%2B\style5\eolfill=false
-C%2B%2B\style5\font=__default_font__, __default_font_size__, 1, 0, 0
-C%2B%2B\style5\paper=16777215
-C%2B%2B\style6\color=16733440
-C%2B%2B\style6\eolfill=false
-C%2B%2B\style6\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style6\paper=16777215
-C%2B%2B\style7\color=16733440
-C%2B%2B\style7\eolfill=false
-C%2B%2B\style7\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style7\paper=16777215
-C%2B%2B\style8\color=0
-C%2B%2B\style8\eolfill=false
-C%2B%2B\style8\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style8\paper=16777215
-C%2B%2B\style9\color=8355584
-C%2B%2B\style9\eolfill=false
-C%2B%2B\style9\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style9\paper=16777215
-C%2B%2B\style10\color=16711680
-C%2B%2B\style10\eolfill=false
-C%2B%2B\style10\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style10\paper=16777215
-C%2B%2B\style11\color=0
-C%2B%2B\style11\eolfill=false
-C%2B%2B\style11\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style11\paper=16777215
-C%2B%2B\style12\color=0
-C%2B%2B\style12\eolfill=true
-C%2B%2B\style12\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style12\paper=14729440
-C%2B%2B\style13\color=32512
-C%2B%2B\style13\eolfill=true
-C%2B%2B\style13\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style13\paper=14745568
-C%2B%2B\style14\color=4161343
-C%2B%2B\style14\eolfill=true
-C%2B%2B\style14\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style14\paper=14741728
-C%2B%2B\style15\color=4157503
-C%2B%2B\style15\eolfill=false
-C%2B%2B\style15\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style15\paper=16777215
-C%2B%2B\style16\color=0
-C%2B%2B\style16\eolfill=false
-C%2B%2B\style16\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style16\paper=16777215
-C%2B%2B\style17\color=3170464
-C%2B%2B\style17\eolfill=false
-C%2B%2B\style17\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style17\paper=16777215
-C%2B%2B\style18\color=8405024
-C%2B%2B\style18\eolfill=false
-C%2B%2B\style18\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style18\paper=16777215
-C%2B%2B\style19\color=0
-C%2B%2B\style19\eolfill=false
-C%2B%2B\style19\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style19\paper=16777215
-C%2B%2B\style20\color=8323199
-C%2B%2B\style20\eolfill=false
-C%2B%2B\style20\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style20\paper=16774143
-C%2B%2B\style40\color=11571376
-C%2B%2B\style40\eolfill=false
-C%2B%2B\style40\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style40\paper=16774143
-C%2B%2B\style64\color=12632256
-C%2B%2B\style64\eolfill=false
-C%2B%2B\style64\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style64\paper=16777215
-C%2B%2B\style65\color=9482384
-C%2B%2B\style65\eolfill=false
-C%2B%2B\style65\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style65\paper=16777215
-C%2B%2B\style66\color=9482384
-C%2B%2B\style66\eolfill=false
-C%2B%2B\style66\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style66\paper=16777215
-C%2B%2B\style67\color=13684944
-C%2B%2B\style67\eolfill=false
-C%2B%2B\style67\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style67\paper=16777215
-C%2B%2B\style68\color=9482384
-C%2B%2B\style68\eolfill=false
-C%2B%2B\style68\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style68\paper=16777215
-C%2B%2B\style69\color=9474224
-C%2B%2B\style69\eolfill=false
-C%2B%2B\style69\font=__default_font__, __default_font_size__, 1, 0, 0
-C%2B%2B\style69\paper=16777215
-C%2B%2B\style70\color=11571376
-C%2B%2B\style70\eolfill=false
-C%2B%2B\style70\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style70\paper=16777215
-C%2B%2B\style71\color=11571376
-C%2B%2B\style71\eolfill=false
-C%2B%2B\style71\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style71\paper=16777215
-C%2B%2B\style72\color=12632256
-C%2B%2B\style72\eolfill=false
-C%2B%2B\style72\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style72\paper=16777215
-C%2B%2B\style73\color=11579536
-C%2B%2B\style73\eolfill=false
-C%2B%2B\style73\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style73\paper=16777215
-C%2B%2B\style74\color=11579568
-C%2B%2B\style74\eolfill=false
-C%2B%2B\style74\font=__default_font__, __default_font_size__, 1, 0, 0
-C%2B%2B\style74\paper=16777215
-C%2B%2B\style75\color=11579568
-C%2B%2B\style75\eolfill=false
-C%2B%2B\style75\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style75\paper=16777215
-C%2B%2B\style76\color=0
-C%2B%2B\style76\eolfill=true
-C%2B%2B\style76\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style76\paper=14729440
-C%2B%2B\style77\color=9482384
-C%2B%2B\style77\eolfill=true
-C%2B%2B\style77\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style77\paper=14745568
-C%2B%2B\style78\color=8367999
-C%2B%2B\style78\eolfill=true
-C%2B%2B\style78\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style78\paper=14741728
-C%2B%2B\style79\color=12632256
-C%2B%2B\style79\eolfill=false
-C%2B%2B\style79\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style79\paper=16777215
-C%2B%2B\style80\color=12632256
-C%2B%2B\style80\eolfill=false
-C%2B%2B\style80\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style80\paper=16777215
-C%2B%2B\style81\color=12632256
-C%2B%2B\style81\eolfill=false
-C%2B%2B\style81\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style81\paper=16777215
-C%2B%2B\style82\color=12632256
-C%2B%2B\style82\eolfill=false
-C%2B%2B\style82\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style82\paper=16777215
-C%2B%2B\style83\color=11579568
-C%2B%2B\style83\eolfill=false
-C%2B%2B\style83\font=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\style83\paper=16777215
-C%2B%2B\properties\foldatelse=false
-C%2B%2B\properties\foldcomments=false
-C%2B%2B\properties\foldcompact=true
-C%2B%2B\properties\foldpreprocessor=true
-C%2B%2B\properties\stylepreprocessor=false
-C%2B%2B\properties\dollars=true
-C%2B%2B\properties\highlighthash=false
-C%2B%2B\properties\highlighttriple=false
-C%2B%2B\defaultcolor=0
-C%2B%2B\defaultpaper=16777215
-C%2B%2B\defaultfont=__default_font__, __default_font_size__, 0, 0, 0
-C%2B%2B\autoindentstyle=-1
-Java\autoindentstyle=-1
-Java\defaultcolor=0
-Java\defaultfont=__default_font__, __default_font_size__, 0, 0, 0
-Java\defaultfont2=__default_font__, __default_font_size__, 0, 0, 0
-Java\defaultpaper=16777215
-Java\properties\dollars=true
-Java\properties\foldatelse=false
-Java\properties\foldcomments=false
-Java\properties\foldcompact=true
-Java\properties\foldpreprocessor=true
-Java\properties\highlightback=false
-Java\properties\highlightescape=false
-Java\properties\highlighthash=false
-Java\properties\highlighttriple=false
-Java\properties\stylepreprocessor=false
-Java\properties\verbatimstringescape=false
-Java\style0\color=8421504
-Java\style0\eolfill=false
-Java\style0\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style0\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style0\paper=16777215
-Java\style1\color=32512
-Java\style1\eolfill=false
-Java\style1\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style1\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style1\paper=16777215
-Java\style10\color=13523968
-Java\style10\eolfill=false
-Java\style10\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style10\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style10\paper=16777215
-Java\style11\color=0
-Java\style11\eolfill=false
-Java\style11\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style11\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style11\paper=16777215
-Java\style12\color=0
-Java\style12\eolfill=true
-Java\style12\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style12\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style12\paper=14729440
-Java\style13\color=32512
-Java\style13\eolfill=true
-Java\style13\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style13\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style13\paper=14745568
-Java\style14\color=4161343
-Java\style14\eolfill=true
-Java\style14\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style14\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style14\paper=14741728
-Java\style15\color=4157503
-Java\style15\eolfill=false
-Java\style15\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style15\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style15\paper=16777215
-Java\style16\color=0
-Java\style16\eolfill=false
-Java\style16\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style16\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style16\paper=16777215
-Java\style17\color=21439
-Java\style17\eolfill=false
-Java\style17\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style17\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style17\paper=16777215
-Java\style18\color=8405024
-Java\style18\eolfill=false
-Java\style18\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style18\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style18\paper=16777215
-Java\style19\color=127
-Java\style19\eolfill=false
-Java\style19\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style19\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style19\paper=16777215
-Java\style2\color=32512
-Java\style2\eolfill=false
-Java\style2\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style2\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style2\paper=16777215
-Java\style20\color=8323199
-Java\style20\eolfill=false
-Java\style20\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style20\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style20\paper=16774143
-Java\style21\color=32512
-Java\style21\eolfill=true
-Java\style21\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style21\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style21\paper=14745568
-Java\style22\color=32512
-Java\style22\eolfill=true
-Java\style22\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style22\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style22\paper=15204311
-Java\style23\color=6658304
-Java\style23\eolfill=false
-Java\style23\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style23\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style23\paper=16777215
-Java\style24\color=4157503
-Java\style24\eolfill=false
-Java\style24\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style24\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style24\paper=16777215
-Java\style25\color=12607488
-Java\style25\eolfill=false
-Java\style25\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style25\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style25\paper=16777215
-Java\style26\color=12453887
-Java\style26\eolfill=false
-Java\style26\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style26\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style26\paper=16777215
-Java\style27\color=0
-Java\style27\eolfill=false
-Java\style27\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style27\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style27\paper=16777215
-Java\style3\color=4157503
-Java\style3\eolfill=false
-Java\style3\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style3\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style3\paper=16777215
-Java\style4\color=13369344
-Java\style4\eolfill=false
-Java\style4\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style4\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style4\paper=16777215
-Java\style5\color=255
-Java\style5\eolfill=false
-Java\style5\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style5\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style5\paper=16777215
-Java\style6\color=8323199
-Java\style6\eolfill=false
-Java\style6\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style6\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style6\paper=16777215
-Java\style64\color=12632256
-Java\style64\eolfill=false
-Java\style64\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style64\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style64\paper=16777215
-Java\style65\color=9482384
-Java\style65\eolfill=false
-Java\style65\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style65\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style65\paper=16777215
-Java\style66\color=9482384
-Java\style66\eolfill=false
-Java\style66\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style66\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style66\paper=16777215
-Java\style67\color=13684944
-Java\style67\eolfill=false
-Java\style67\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style67\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style67\paper=16777215
-Java\style68\color=9482384
-Java\style68\eolfill=false
-Java\style68\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style68\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style68\paper=16777215
-Java\style69\color=9474224
-Java\style69\eolfill=false
-Java\style69\font=__default_font__, __default_font_size__, 1, 0, 0
-Java\style69\font2=__default_font__, __default_font_size__, 1, 0, 0
-Java\style69\paper=16777215
-Java\style7\color=8323199
-Java\style7\eolfill=false
-Java\style7\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style7\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style7\paper=16777215
-Java\style70\color=11571376
-Java\style70\eolfill=false
-Java\style70\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style70\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style70\paper=16777215
-Java\style71\color=11571376
-Java\style71\eolfill=false
-Java\style71\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style71\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style71\paper=16777215
-Java\style72\color=12632256
-Java\style72\eolfill=false
-Java\style72\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style72\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style72\paper=16777215
-Java\style73\color=11579536
-Java\style73\eolfill=false
-Java\style73\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style73\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style73\paper=16777215
-Java\style74\color=11579568
-Java\style74\eolfill=false
-Java\style74\font=__default_font__, __default_font_size__, 1, 0, 0
-Java\style74\font2=__default_font__, __default_font_size__, 1, 0, 0
-Java\style74\paper=16777215
-Java\style75\color=11579568
-Java\style75\eolfill=false
-Java\style75\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style75\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style75\paper=16777215
-Java\style76\color=0
-Java\style76\eolfill=true
-Java\style76\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style76\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style76\paper=14729440
-Java\style77\color=9482384
-Java\style77\eolfill=true
-Java\style77\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style77\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style77\paper=14745568
-Java\style78\color=8367999
-Java\style78\eolfill=true
-Java\style78\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style78\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style78\paper=14741728
-Java\style79\color=12632256
-Java\style79\eolfill=false
-Java\style79\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style79\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style79\paper=16777215
-Java\style8\color=0
-Java\style8\eolfill=false
-Java\style8\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style8\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style8\paper=16777215
-Java\style80\color=12632256
-Java\style80\eolfill=false
-Java\style80\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style80\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style80\paper=16777215
-Java\style81\color=12632256
-Java\style81\eolfill=false
-Java\style81\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style81\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style81\paper=16777215
-Java\style82\color=12632256
-Java\style82\eolfill=false
-Java\style82\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style82\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style82\paper=16777215
-Java\style83\color=11579568
-Java\style83\eolfill=false
-Java\style83\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style83\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style83\paper=16777215
-Java\style84\color=11571376
-Java\style84\eolfill=false
-Java\style84\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style84\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style84\paper=16774143
-Java\style85\color=9482384
-Java\style85\eolfill=true
-Java\style85\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style85\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style85\paper=14745568
-Java\style86\color=9482384
-Java\style86\eolfill=true
-Java\style86\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style86\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style86\paper=15204311
-Java\style87\color=10535056
-Java\style87\eolfill=false
-Java\style87\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style87\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style87\paper=16777215
-Java\style88\color=12632256
-Java\style88\eolfill=false
-Java\style88\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style88\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style88\paper=16777215
-Java\style89\color=14131344
-Java\style89\eolfill=false
-Java\style89\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style89\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style89\paper=16777215
-Java\style9\color=8355584
-Java\style9\eolfill=false
-Java\style9\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style9\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style9\paper=16777215
-Java\style90\color=12820943
-Java\style90\eolfill=false
-Java\style90\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style90\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style90\paper=16777215
-Java\style91\color=0
-Java\style91\eolfill=false
-Java\style91\font=__default_font__, __default_font_size__, 0, 0, 0
-Java\style91\font2=__default_font__, __default_font_size__, 0, 0, 0
-Java\style91\paper=16777215
-Perl\style0\color=8421504
-Perl\style0\eolfill=false
-Perl\style0\font=__default_font__, __default_font_size__, 0, 0, 0
-Perl\style0\paper=16777215
-Perl\style1\color=16776960
-Perl\style1\eolfill=false
-Perl\style1\font=__default_font__, __default_font_size__, 0, 0, 0
-Perl\style1\paper=16711680
-Perl\style2\color=43520
-Perl\style2\eolfill=false
-Perl\style2\font=__default_font__, __default_font_size__, 0, 0, 0
-Perl\style2\paper=16777215
-Perl\style3\color=16384
-Perl\style3\eolfill=true
-Perl\style3\font=__default_font__, __default_font_size__, 0, 0, 0
-Perl\style3\paper=14745568
-Perl\style4\color=11184640
-Perl\style4\eolfill=false
-Perl\style4\font=__default_font__, __default_font_size__, 0, 0, 0
-Perl\style4\paper=16777215
-Perl\style5\color=127
-Perl\style5\eolfill=false
-Perl\style5\font=__default_font__, __default_font_size__, 1, 0, 0
-Perl\style5\paper=16777215
-Perl\style6\color=16755200
-Perl\style6\eolfill=false
-Perl\style6\font=__default_font__, __default_font_size__, 0, 0, 0
-Perl\style6\paper=16777215
-Perl\style7\color=16755200
-Perl\style7\eolfill=false
-Perl\style7\font=__default_font__, __default_font_size__, 0, 0, 0
-Perl\style7\paper=16777215
-Perl\style10\color=16711680
-Perl\style10\eolfill=false
-Perl\style10\font=__default_font__, __default_font_size__, 0, 0, 0
-Perl\style10\paper=16777215
-Perl\style11\color=0
-Perl\style11\eolfill=false
-Perl\style11\font=__default_font__, __default_font_size__, 0, 0, 0
-Perl\style11\paper=16777215
-Perl\style12\color=0
-Perl\style12\eolfill=false
-Perl\style12\font=__default_font__, __default_font_size__, 0, 0, 0
-Perl\style12\paper=16769248
-Perl\style13\color=0
-Perl\style13\eolfill=false
-Perl\style13\font=__default_font__, __default_font_size__, 0, 0, 0
-Perl\style13\paper=16777184
-Perl\style14\color=0
-Perl\style14\eolfill=false
-Perl\style14\font=__default_font__, __default_font_size__, 0, 0, 0
-Perl\style14\paper=16769279
-Perl\style15\color=0
-Perl\style15\eolfill=false
-Perl\style15\font=__default_font__, __default_font_size__, 0, 0, 0
-Perl\style15\paper=14737632
-Perl\style17\color=0
-Perl\style17\eolfill=false
-Perl\style17\font=__default_font__, __default_font_size__, 0, 0, 0
-Perl\style17\paper=10551200
-Perl\style18\color=0
-Perl\style18\eolfill=false
-Perl\style18\font=__default_font__, __default_font_size__, 0, 0, 0
-Perl\style18\paper=15786112
-Perl\style20\color=16776960
-Perl\style20\eolfill=false
-Perl\style20\font=__default_font__, __default_font_size__, 0, 0, 0
-Perl\style20\paper=10518656
-Perl\style21\color=6291456
-Perl\style21\eolfill=true
-Perl\style21\font=__default_font__, __default_font_size__, 0, 0, 0
-Perl\style21\paper=16773336
-Perl\style22\color=0
-Perl\style22\eolfill=false
-Perl\style22\font=__default_font__, __default_font_size__, 0, 0, 0
-Perl\style22\paper=14536925
-Perl\style23\color=8323199
-Perl\style23\eolfill=true
-Perl\style23\font=__default_font__, __default_font_size__, 0, 0, 0
-Perl\style23\paper=14536925
-Perl\style24\color=8323199
-Perl\style24\eolfill=true
-Perl\style24\font=__default_font__, __default_font_size__, 1, 0, 0
-Perl\style24\paper=14536925
-Perl\style25\color=8323199
-Perl\style25\eolfill=true
-Perl\style25\font=__default_font__, __default_font_size__, 0, 1, 0
-Perl\style25\paper=14536925
-Perl\style26\color=8323199
-Perl\style26\eolfill=false
-Perl\style26\font=__default_font__, __default_font_size__, 0, 0, 0
-Perl\style26\paper=16777215
-Perl\style27\color=8323199
-Perl\style27\eolfill=false
-Perl\style27\font=__default_font__, __default_font_size__, 0, 0, 0
-Perl\style27\paper=16777215
-Perl\style28\color=16776960
-Perl\style28\eolfill=false
-Perl\style28\font=__default_font__, __default_font_size__, 0, 0, 0
-Perl\style28\paper=16777215
-Perl\style29\color=0
-Perl\style29\eolfill=false
-Perl\style29\font=__default_font__, __default_font_size__, 0, 0, 0
-Perl\style29\paper=16777215
-Perl\style30\color=0
-Perl\style30\eolfill=false
-Perl\style30\font=__default_font__, __default_font_size__, 0, 0, 0
-Perl\style30\paper=16777215
-Perl\style31\color=16384
-Perl\style31\eolfill=true
-Perl\style31\font=__default_font__, __default_font_size__, 0, 0, 0
-Perl\style31\paper=12648384
-Perl\style40\color=0
-Perl\style40\eolfill=false
-Perl\style40\font=__default_font__, __default_font_size__, 0, 1, 0
-Perl\style40\paper=16777215
-Perl\style41\color=12583104
-Perl\style41\eolfill=false
-Perl\style41\font=__default_font__, __default_font_size__, 1, 0, 0
-Perl\style41\paper=16777215
-Perl\style42\color=12583104
-Perl\style42\eolfill=true
-Perl\style42\font=__default_font__, __default_font_size__, 0, 0, 0
-Perl\style42\paper=16773375
-Perl\style43\color=13631488
-Perl\style43\eolfill=false
-Perl\style43\font=__default_font__, __default_font_size__, 1, 0, 0
-Perl\style43\paper=16777215
-Perl\style44\color=0
-Perl\style44\eolfill=false
-Perl\style44\font=__default_font__, __default_font_size__, 0, 0, 0
-Perl\style44\paper=15786112
-Perl\style54\color=13631488
-Perl\style54\eolfill=false
-Perl\style54\font=__default_font__, __default_font_size__, 1, 0, 0
-Perl\style54\paper=16777215
-Perl\style55\color=0
-Perl\style55\eolfill=false
-Perl\style55\font=__default_font__, __default_font_size__, 0, 0, 0
-Perl\style55\paper=15786112
-Perl\style57\color=13631488
-Perl\style57\eolfill=false
-Perl\style57\font=__default_font__, __default_font_size__, 1, 0, 0
-Perl\style57\paper=10518656
-Perl\style61\color=13631488
-Perl\style61\eolfill=true
-Perl\style61\font=__default_font__, __default_font_size__, 1, 0, 0
-Perl\style61\paper=14536925
-Perl\style62\color=13631488
-Perl\style62\eolfill=true
-Perl\style62\font=__default_font__, __default_font_size__, 1, 0, 0
-Perl\style62\paper=14536925
-Perl\style64\color=13631488
-Perl\style64\eolfill=false
-Perl\style64\font=__default_font__, __default_font_size__, 1, 0, 0
-Perl\style64\paper=16777215
-Perl\style65\color=13631488
-Perl\style65\eolfill=false
-Perl\style65\font=__default_font__, __default_font_size__, 1, 0, 0
-Perl\style65\paper=10518656
-Perl\style66\color=13631488
-Perl\style66\eolfill=false
-Perl\style66\font=__default_font__, __default_font_size__, 1, 0, 0
-Perl\style66\paper=16777215
-Perl\properties\foldatelse=false
-Perl\properties\foldcomments=false
-Perl\properties\foldcompact=true
-Perl\properties\foldpackages=true
-Perl\properties\foldpodblocks=true
-Perl\defaultcolor=0
-Perl\defaultpaper=16777215
-Perl\defaultfont=__default_font__, __default_font_size__, 0, 0, 0
-Perl\autoindentstyle=-1
-Batch\style0\color=0
-Batch\style0\eolfill=false
-Batch\style0\font=__default_font__, __default_font_size__, 0, 0, 0
-Batch\style0\paper=16777215
-Batch\style1\color=43520
-Batch\style1\eolfill=false
-Batch\style1\font=__default_font__, __default_font_size__, 0, 0, 0
-Batch\style1\paper=16777215
-Batch\style2\color=255
-Batch\style2\eolfill=false
-Batch\style2\font=__default_font__, __default_font_size__, 1, 0, 0
-Batch\style2\paper=16777215
-Batch\style3\color=8323199
-Batch\style3\eolfill=true
-Batch\style3\font=__default_font__, __default_font_size__, 0, 0, 0
-Batch\style3\paper=6316128
-Batch\style4\color=8355584
-Batch\style4\eolfill=false
-Batch\style4\font=__default_font__, __default_font_size__, 0, 0, 0
-Batch\style4\paper=16777215
-Batch\style5\color=127
-Batch\style5\eolfill=false
-Batch\style5\font=__default_font__, __default_font_size__, 1, 0, 0
-Batch\style5\paper=16777215
-Batch\style6\color=8388736
-Batch\style6\eolfill=false
-Batch\style6\font=__default_font__, __default_font_size__, 0, 0, 0
-Batch\style6\paper=16777215
-Batch\style7\color=0
-Batch\style7\eolfill=false
-Batch\style7\font=__default_font__, __default_font_size__, 0, 0, 0
-Batch\style7\paper=16777215
-Batch\defaultcolor=0
-Batch\defaultpaper=16777215
-Batch\defaultfont=__default_font__, __default_font_size__, 0, 0, 0
-Batch\autoindentstyle=-1
-Diff\style0\color=0
-Diff\style0\eolfill=false
-Diff\style0\font=__default_font__, __default_font_size__, 0, 0, 0
-Diff\style0\paper=16777215
-Diff\style1\color=32512
-Diff\style1\eolfill=false
-Diff\style1\font=__default_font__, __default_font_size__, 0, 0, 0
-Diff\style1\paper=16777215
-Diff\style2\color=8355584
-Diff\style2\eolfill=false
-Diff\style2\font=__default_font__, __default_font_size__, 0, 0, 0
-Diff\style2\paper=16777215
-Diff\style3\color=8323072
-Diff\style3\eolfill=false
-Diff\style3\font=__default_font__, __default_font_size__, 0, 0, 0
-Diff\style3\paper=16777215
-Diff\style4\color=8323199
-Diff\style4\eolfill=false
-Diff\style4\font=__default_font__, __default_font_size__, 0, 0, 0
-Diff\style4\paper=16777215
-Diff\style5\color=32639
-Diff\style5\eolfill=false
-Diff\style5\font=__default_font__, __default_font_size__, 0, 0, 0
-Diff\style5\paper=16777215
-Diff\style6\color=127
-Diff\style6\eolfill=false
-Diff\style6\font=__default_font__, __default_font_size__, 0, 0, 0
-Diff\style6\paper=16777215
-Diff\style7\color=8355711
-Diff\style7\eolfill=false
-Diff\style7\font=__default_font__, __default_font_size__, 0, 0, 0
-Diff\style7\paper=16777215
-Diff\defaultcolor=0
-Diff\defaultpaper=16777215
-Diff\defaultfont=__default_font__, __default_font_size__, 0, 0, 0
-Diff\autoindentstyle=-1
-Bash\style0\color=8421504
-Bash\style0\eolfill=false
-Bash\style0\font=__default_font__, __default_font_size__, 0, 0, 0
-Bash\style0\paper=16777215
-Bash\style1\color=16776960
-Bash\style1\eolfill=false
-Bash\style1\font=__default_font__, __default_font_size__, 0, 0, 0
-Bash\style1\paper=16711680
-Bash\style2\color=32512
-Bash\style2\eolfill=false
-Bash\style2\font=__default_font__, __default_font_size__, 0, 0, 0
-Bash\style2\paper=16777215
-Bash\style3\color=43647
-Bash\style3\eolfill=false
-Bash\style3\font=__default_font__, __default_font_size__, 0, 0, 0
-Bash\style0\paper=16777215
-Bash\style4\color=127
-Bash\style4\eolfill=false
-Bash\style4\font=__default_font__, __default_font_size__, 1, 0, 0
-Bash\style4\paper=16777215
-Bash\style5\color=16755200
-Bash\style5\eolfill=false
-Bash\style5\font=__default_font__, __default_font_size__, 0, 0, 0
-Bash\style5\paper=16777215
-Bash\style6\color=16755200
-Bash\style6\eolfill=false
-Bash\style6\font=__default_font__, __default_font_size__, 0, 0, 0
-Bash\style6\paper=16777215
-Bash\style7\color=16711680
-Bash\style7\eolfill=false
-Bash\style7\font=__default_font__, __default_font_size__, 0, 0, 0
-Bash\style7\paper=16777215
-Bash\style8\color=0
-Bash\style8\eolfill=false
-Bash\style8\font=__default_font__, __default_font_size__, 0, 0, 0
-Bash\style8\paper=16777215
-Bash\style9\color=0
-Bash\style9\eolfill=false
-Bash\style9\font=__default_font__, __default_font_size__, 0, 0, 0
-Bash\style9\paper=16769248
-Bash\style10\color=0
-Bash\style10\eolfill=false
-Bash\style10\font=__default_font__, __default_font_size__, 0, 0, 0
-Bash\style10\paper=16777184
-Bash\style11\color=16776960
-Bash\style11\eolfill=false
-Bash\style11\font=__default_font__, __default_font_size__, 0, 0, 0
-Bash\style11\paper=10518656
-Bash\style12\color=0
-Bash\style12\eolfill=false
-Bash\style12\font=__default_font__, __default_font_size__, 0, 0, 0
-Bash\style12\paper=14536925
-Bash\style13\color=8323199
-Bash\style13\eolfill=true
-Bash\style13\font=__default_font__, __default_font_size__, 0, 0, 0
-Bash\style13\paper=14536925
-Bash\properties\foldcomments=false
-Bash\properties\foldcompact=true
-Bash\defaultcolor=0
-Bash\defaultpaper=16777215
-Bash\defaultfont=__default_font__, __default_font_size__, 0, 0, 0
-Bash\autoindentstyle=-1
-Text\style0\color=0
-Text\style0\eolfill=false
-Text\style0\font=__default_font__, __default_font_size__, 0, 0, 0
-Text\style0\paper=16777215
-Text\defaultcolor=0
-Text\defaultpaper=16777215
-Text\defaultfont=__default_font__, __default_font_size__, 0, 0, 0
-Text\autoindentstyle=-1
--- a/libgui/src/gui-preferences-ed.h	Tue Apr 06 14:25:27 2021 -0400
+++ b/libgui/src/gui-preferences-ed.h	Tue Apr 06 21:26:52 2021 +0200
@@ -35,6 +35,14 @@
 
 // Editor preferences
 
+// Lexer
+
+const gui_pref
+ed_color_mode ("editor/color_mode", QVariant (0));
+
+const int ed_max_lexer_styles = 64;
+const int ed_max_style_number = 128;
+
 // Code completion
 
 const gui_pref
@@ -117,6 +125,8 @@
 const gui_pref
 ed_break_lines_comments ("editor/break_lines_comments", QVariant (false));
 
+// Other
+
 const gui_pref
 ed_highlight_all_occurrences ("editor/highlight_all_occurrences",
                               QVariant (true));
@@ -134,10 +144,6 @@
 ed_highlight_current_line ("editor/highlightCurrentLine", QVariant (true));
 
 const gui_pref
-ed_highlight_current_line_color ("editor/highlight_current_line_color",
-                                 QVariant (QColor (240, 240, 240)));
-
-const gui_pref
 ed_show_white_space ("editor/show_white_space", QVariant (false));
 
 const gui_pref
--- a/libgui/src/gui-settings.cc	Tue Apr 06 14:25:27 2021 -0400
+++ b/libgui/src/gui-settings.cc	Tue Apr 06 21:26:52 2021 +0200
@@ -35,33 +35,43 @@
 namespace octave
 {
 
-  QColor gui_settings::color_value (const gui_pref& pref, int mode) const
+  QColor gui_settings::get_color_value (const QVariant& def, int mode) const
   {
     QColor default_color;
 
     // Determine whether the default value in pref is given as
     // QPalette::ColorRole or as QColor
-    if (pref.def.canConvert (QMetaType::QColor))
-      default_color = pref.def.value<QColor> ();
+    if (def.canConvert (QMetaType::QColor))
+      default_color = def.value<QColor> ();
     else
       {
         // The default colors are given as color roles for
         // the application's palette
         default_color = QApplication::palette ().color
-                        (static_cast<QPalette::ColorRole> (pref.def.toInt ()));
+                        (static_cast<QPalette::ColorRole> (def.toInt ()));
                   // FIXME: use value<QPalette::ColorRole> instead of static cast after
                   //        dropping support of Qt 5.4
       }
 
-    if (mode == 1)
+    if ((mode == 1) && (default_color != settings_color_no_change))
       {
         // In second mode, determine the default color from the first mode
         qreal h, s, l, a;
         default_color.getHslF (&h, &s, &l, &a);
-        default_color.setHslF (h, s, 1.0-l*0.85, a);
+        qreal l_new = 1.0-l*0.85;
+        if (l < 0.3)
+          l_new = 1.0-l*0.7;  // convert darker into lighter colors
+        default_color.setHslF (h, s, l_new, a);
       }
 
-    return value (pref.key + settings_color_modes_ext.at (mode),
+    return default_color;
+  }
+
+  QColor gui_settings::color_value (const gui_pref& pref, int mode) const
+  {
+    QColor default_color = get_color_value (pref.def, mode);
+
+    return value (pref.key + settings_color_modes_ext[mode],
                   QVariant (default_color)).value<QColor> ();
   }
 
@@ -72,7 +82,7 @@
     if (m > 1)
       m = 1;
 
-    setValue (pref.key + settings_color_modes_ext.at (m), QVariant (color));
+    setValue (pref.key + settings_color_modes_ext[m], QVariant (color));
   }
 
   QString gui_settings::sc_value (const sc_pref& pref) const
--- a/libgui/src/gui-settings.h	Tue Apr 06 14:25:27 2021 -0400
+++ b/libgui/src/gui-settings.h	Tue Apr 06 21:26:52 2021 +0200
@@ -69,15 +69,30 @@
     }
 
     /*!
+      Reading a color from the given QVaraitn @p def taking different
+      color modes into account. The default value for a second color mode
+      @p mode=1 is deterimined from the standard default value @p mode=0
+      by inverting the lightness
+        \f{eqnarray*}{
+           H_1 &=& H_0\\
+           S_1 &=& S_0\\
+           L_1 &=& 1.0 - 0.85 L_0    L_0 > 0.3
+           L_1 &=& 1.0 - 0.70 L_0    L_0 < 0.3
+        \f}
+
+      @param def  Color default value given by a QVariant of QColor
+                  or QPalette::ColorRole
+      @param mode Color mode (currently 0 or 1, default is 0)
+
+      @return Color as QColor
+    */
+    QColor get_color_value (const QVariant& def, int mode = 0) const;
+
+    /*!
       Reading a color from the gui_settings taking possible color modes
       into account. The default value for a second color mode @p mode=1 is
       deterimined from the standard default value @p mode=0 by inverting
-      the lightness
-        \f{eqnarray*}{
-           H_1 &=& H_0\\
-           S_1 &=& S_0\\
-           L_1 &=& 1.0 - L_0
-        \f}
+      the lightness (see get_color_value())
 
       @param pref gui preference (key string, default value); the default
                   value can be given by QColor or QPalette::ColorRole
@@ -108,7 +123,10 @@
 
 }
 
-// Some strings used several times in the settings
+// Some constants used several times in the settings
+
+// Special color indicating no change compared to default color
+const QColor settings_color_no_change (255,0,255);
 
 // Other color schemes (currently one extra, but possibly more in the future)
 const QString settings_color_modes = QT_TRANSLATE_NOOP (
--- a/libgui/src/m-editor/file-editor-tab.cc	Tue Apr 06 14:25:27 2021 -0400
+++ b/libgui/src/m-editor/file-editor-tab.cc	Tue Apr 06 21:26:52 2021 +0200
@@ -867,7 +867,8 @@
     if (update_apis_only)
       return;   // We are done here
 
-    rmgr.read_lexer_settings (lexer, settings);
+    int mode = settings->value (ed_color_mode).toInt ();
+    rmgr.read_lexer_settings (lexer, settings, mode);
 
     m_edit_area->setCaretForegroundColor (lexer->color (0));
     m_edit_area->setIndentationGuidesForegroundColor (lexer->color (0));
@@ -876,7 +877,7 @@
     QColor bg = lexer->paper (0);
     QColor fg = lexer->color (0);
 
-    // margin colors
+    // margin and current line marker colors
     QColor bgm, fgm;
 
     bgm = interpolate_color (bg, fg, 0.5, 0.2);
@@ -890,6 +891,9 @@
     m_edit_area->setMarginsBackgroundColor (bgm);
     m_edit_area->setFoldMarginColors (bgm, fgm);
 
+    bgm = interpolate_color (bg, fg, 0.5, 0.1);
+    m_edit_area->setCaretLineBackgroundColor (bgm);
+
     // color indicator for highlighting all occurrences:
     // applications highlight color with more transparency
     QColor hg = QApplication::palette ().color (QPalette::Highlight);
@@ -2646,11 +2650,10 @@
       m_status_bar->hide ();
 
     //highlight current line color
-    QColor setting_color = settings->value (ed_highlight_current_line_color).value<QColor> ();
-    m_edit_area->setCaretLineBackgroundColor (setting_color);
     m_edit_area->setCaretLineVisible
       (settings->value (ed_highlight_current_line).toBool ());
 
+    // auto completion
     bool match_keywords = settings->value
                           (ed_code_completion_keywords).toBool ();
     bool match_document = settings->value
--- a/libgui/src/m-editor/octave-qscintilla.cc	Tue Apr 06 14:25:27 2021 -0400
+++ b/libgui/src/m-editor/octave-qscintilla.cc	Tue Apr 06 21:26:52 2021 +0200
@@ -235,7 +235,7 @@
   void octave_qscintilla::set_selection_marker_color (const QColor& c)
   {
     QColor ic = c;
-    ic.setAlphaF (0.25);
+    ic.setAlphaF (0.45);
     setIndicatorForegroundColor (ic, m_indicator_id);
     setIndicatorOutlineColor (ic, m_indicator_id);
 
--- a/libgui/src/resource-manager.cc	Tue Apr 06 14:25:27 2021 -0400
+++ b/libgui/src/resource-manager.cc	Tue Apr 06 21:26:52 2021 +0200
@@ -342,68 +342,97 @@
 
   }
 
+#if defined (HAVE_QSCINTILLA)
+  int resource_manager::get_valid_lexer_styles (QsciLexer *lexer, int *styles)
+  {
+    int max_style = 0;
+    int actual_style = 0;
+    while (actual_style < ed_max_style_number && max_style < ed_max_lexer_styles)
+      {
+        if ((lexer->description (actual_style)) != "")  // valid style
+          styles[max_style++] = actual_style;
+        actual_style++;
+      }
+    return max_style;
+  }
+#endif
+
+  QFont resource_manager::copy_font_attributes (const QFont& attr,
+                                                const QFont& base) const
+  {
+    QFont dest (base);
+
+    dest.setBold (attr.bold ());
+    dest.setItalic (attr.italic ());
+    dest.setUnderline (attr.underline ());
+
+    return dest;
+  }
+
+#if defined (HAVE_QSCINTILLA)
   void resource_manager::read_lexer_settings (QsciLexer *lexer,
-                                              QSettings *settings)
+                                              gui_settings *settings, int mode)
   {
     // Test whether the settings for lexer is already contained in the
     // given gui settings file. If yes, load them, if not copy them from the
     // default settings file.
     // This is useful when a new language support is implemented and the
     // existing settings file is used (which is of course the common case).
+    int m = mode;
+    if (m > 1)
+      m = 1;
 
-    settings->beginGroup ("Scintilla");
+    QString group ("Scintilla" + settings_color_modes_ext[m]);
+
+    settings->beginGroup (group);
     settings->beginGroup (lexer->language ());
 
     QStringList lexer_keys = settings->allKeys ();
 
+    settings->endGroup ();
+    settings->endGroup ();
+
     if (lexer_keys.count () == 0)
       {
-        // No Lexer keys found
-        // => copy all settings from the default settings
-        QSettings def_settings (default_qt_settings_file (),
-                                QSettings::IniFormat);
-        // Get all lexer keys and copy the ones for the given lexer
-        def_settings.beginGroup ("Scintilla");
-        def_settings.beginGroup (lexer->language ());
+        // No Lexer keys found:
+        // If mode == 0, take all settings except font from default lexer
+        // If Mode == 1, take all settings except font from default lexer
+        //               and convert the color by inverting the lightness
 
         // Get the default font
         QStringList def_font = get_default_font ();
+        QFont df (def_font[0], def_font[1].toInt ());
+        QFont dfa = copy_font_attributes (lexer->defaultFont (), df);
+        lexer->setDefaultFont (dfa);
 
-        lexer_keys = def_settings.allKeys ();
+        QColor c, p;
 
-        for (int i = 0; i < lexer_keys.count (); i++)
+        int styles[ed_max_lexer_styles];  // array for saving valid styles
+        int max_style = get_valid_lexer_styles (lexer, styles);
+
+        for (int i = 0; i < max_style; i++)
           {
-            QString key = lexer_keys.at (i);
-            if (key.contains ("font"))
-              {
-                // font setting, insert default font and size
-                QStringList val = def_settings.value (key).toStringList ();
-                val.removeFirst ();
-                val.removeFirst ();
-                val.prepend (def_font.at (1));
-                val.prepend (def_font.at (0));
-                settings->setValue (key, val);
-              }
-            else
-              {
-                // No font setting just copy
-                QVariant var = def_settings.value (key);
-                settings->setValue (key, var);
-              }
+            c = settings->get_color_value (QVariant (lexer->color (styles[i])), m);
+            lexer->setColor (c, styles[i]);
+            p = settings->get_color_value (QVariant (lexer->paper (styles[i])), m);
+            lexer->setPaper (p, styles[i]);
+            dfa = copy_font_attributes (lexer->font (styles[i]), df);
+            lexer->setFont (dfa, styles[i]);
           }
-
-        def_settings.endGroup ();
-        def_settings.endGroup ();
-
-      }
+        // Set defaults last for not changing the defaults of the styles
+        lexer->setDefaultColor (lexer->color (styles[0]));
+        lexer->setDefaultPaper (lexer->paper (styles[0]));
 
-    settings->endGroup ();
-    settings->endGroup ();
-
-    settings->sync ();
-
-    lexer->readSettings (*settings);
+        lexer->writeSettings (*settings, group.toStdString ().c_str ());
+        settings->sync ();
+      }
+    else
+      {
+        // Found lexer keys, read the settings
+        lexer->readSettings (*settings, group.toStdString ().c_str ());
+      }
   }
+#endif
 
   void resource_manager::set_settings (const QString& file)
   {
--- a/libgui/src/resource-manager.h	Tue Apr 06 14:25:27 2021 -0400
+++ b/libgui/src/resource-manager.h	Tue Apr 06 21:26:52 2021 +0200
@@ -80,7 +80,10 @@
 
     void reload_settings (void);
 
-    void read_lexer_settings (QsciLexer *lexer, QSettings *settings);
+#if defined (HAVE_QSCINTILLA)
+    int get_valid_lexer_styles (QsciLexer *lexer, int *styles);
+    void read_lexer_settings (QsciLexer *lexer, gui_settings *settings, int mode = 0);
+#endif
 
     void set_settings (const QString& file);
 
@@ -98,6 +101,15 @@
 
   private:
 
+    /*!
+     * Copys the attributes bold, italic and underline from QFont
+     * @p attr to the font @p base and returns the result without
+     * changing @p base,
+     * @param attr QFont with the desired attributes
+     * @param base QFont with desired family and size
+    */
+    QFont copy_font_attributes (const QFont& attr, const QFont& base) const;
+
     QString m_settings_directory;
 
     QString m_settings_file;
--- a/libgui/src/settings-dialog.cc	Tue Apr 06 14:25:27 2021 -0400
+++ b/libgui/src/settings-dialog.cc	Tue Apr 06 21:26:52 2021 +0200
@@ -71,25 +71,6 @@
 
 namespace octave
 {
-#if defined (HAVE_QSCINTILLA)
-
-  static const int MaxLexerStyles = 64;
-  static const int MaxStyleNumber = 128;
-
-  static int get_valid_lexer_styles (QsciLexer *lexer, int *styles)
-  {
-    int max_style = 0;
-    int actual_style = 0;
-    while (actual_style < MaxStyleNumber && max_style < MaxLexerStyles)
-      {
-        if ((lexer->description (actual_style)) != "")  // valid style
-          styles[max_style++] = actual_style;
-        actual_style++;
-      }
-    return max_style;
-  }
-
-#endif
 
   settings_dialog::settings_dialog (QWidget *p, base_qobject& oct_qobj,
                                     const QString& desired_tab)
@@ -261,15 +242,6 @@
 
     rmgr.combo_encoding (editor_combo_encoding);
 
-    QColor setting_color = settings->value (ed_highlight_current_line_color).value<QColor> ();
-    m_editor_current_line_color = new color_picker (setting_color);
-    editor_grid_current_line->addWidget (m_editor_current_line_color, 0, 3);
-    m_editor_current_line_color->setMinimumSize (20, 10);
-    m_editor_current_line_color->setEnabled (false);
-
-    connect (editor_highlightCurrentLine, SIGNAL (toggled (bool)),
-             m_editor_current_line_color, SLOT (setEnabled (bool)));
-
     editor_highlightCurrentLine->setChecked (settings->value (ed_highlight_current_line).toBool ());
     editor_long_line_marker->setChecked (settings->value (ed_long_line_marker).toBool ());
     bool long_line =
@@ -481,50 +453,17 @@
 
 #if defined (HAVE_QSCINTILLA)
 
-    // editor styles: create lexer, read settings, and create dialog elements
-    QsciLexer *lexer;
-
-#if defined (HAVE_LEXER_OCTAVE)
-
-    lexer = new QsciLexerOctave ();
-    read_lexer_settings (lexer, settings);
-    delete lexer;
-
-#elif defined (HAVE_LEXER_MATLAB)
-
-    lexer = new QsciLexerMatlab ();
-    read_lexer_settings (lexer, settings);
-    delete lexer;
-
-#endif
-
-    lexer = new QsciLexerCPP ();
-    read_lexer_settings (lexer, settings);
-    delete lexer;
+    int ed_mode = settings->value (ed_color_mode).toInt ();
+    editor_cb_color_mode->setText (settings_color_modes);
+    editor_cb_color_mode->setToolTip (settings_color_modes_tooltip);
+    editor_cb_color_mode->setChecked (ed_mode > 0);
 
-    lexer = new QsciLexerJava ();
-    read_lexer_settings (lexer, settings);
-    delete lexer;
-
-    lexer = new QsciLexerPerl ();
-    read_lexer_settings (lexer, settings);
-    delete lexer;
-
-    lexer = new QsciLexerBatch ();
-    read_lexer_settings (lexer, settings);
-    delete lexer;
+    // update colors depending on second theme selection
+    connect (editor_cb_color_mode, SIGNAL (stateChanged (int)),
+             this, SLOT (update_editor_lexers (int)));
 
-    lexer = new QsciLexerDiff ();
-    read_lexer_settings (lexer, settings);
-    delete lexer;
-
-    lexer = new QsciLexerBash ();
-    read_lexer_settings (lexer, settings);
-    delete lexer;
-
-    lexer = new octave_txt_lexer ();
-    read_lexer_settings (lexer, settings);
-    delete lexer;
+    // finally read the lexer colors using the update slot
+    update_editor_lexers (ed_mode);
 
 #endif
 
@@ -668,19 +607,129 @@
     scmgr.import_export (shortcut_manager::OSC_DEFAULT);
   }
 
-  void settings_dialog::read_lexer_settings (QsciLexer *lexer,
+  void settings_dialog::update_editor_lexers (int mode)
+  {
+#if defined (HAVE_QSCINTILLA)
+     int m = mode;
+     if (m > 1)
+       m = 1;
+
+    // editor styles: create lexer, read settings, and
+    // create or update dialog elements
+    QsciLexer *lexer;
+
+    resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
+    gui_settings *settings = rmgr.get_settings ();
+
+#if defined (HAVE_LEXER_OCTAVE)
+    lexer = new QsciLexerOctave ();
+    update_lexer (lexer, settings, m);
+    delete lexer;
+#elif defined (HAVE_LEXER_MATLAB)
+    lexer = new QsciLexerMatlab ();
+    update_lexer (lexer, settings, m);
+    delete lexer;
+#endif
+
+    lexer = new QsciLexerCPP ();
+    update_lexer (lexer, settings, m);
+    delete lexer;
+
+    lexer = new QsciLexerJava ();
+    update_lexer (lexer, settings, m);
+    delete lexer;
+
+    lexer = new QsciLexerPerl ();
+    update_lexer (lexer, settings, m);
+    delete lexer;
+
+    lexer = new QsciLexerBatch ();
+    update_lexer (lexer, settings, m);
+    delete lexer;
+
+    lexer = new QsciLexerDiff ();
+    update_lexer (lexer, settings, m);
+    delete lexer;
+
+    lexer = new QsciLexerBash ();
+    update_lexer (lexer, settings, m);
+    delete lexer;
+
+    lexer = new octave_txt_lexer ();
+    update_lexer (lexer, settings, m);
+    delete lexer;
+#endif
+  }
+
+#if defined (HAVE_QSCINTILLA)
+
+  void settings_dialog::update_lexer (QsciLexer *lexer,
+                                      gui_settings *settings, int mode)
+  {
+    // Get lexer settings and copy from default settings if not yet
+    // available in normal settings file
+    resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
+    rmgr.read_lexer_settings (lexer, settings, mode);
+
+    QString lexer_name = lexer->language ();
+
+    int index = -1;
+    for (int i = 0; i < tabs_editor_lexers->count (); i++)
+      {
+        if (tabs_editor_lexers->tabText (i) == lexer_name)
+          {
+            index = i;
+            break;
+          }
+      }
+
+    if (index == -1)
+      {
+        // This is not an update, call get_lexer_settings for building
+        // the settings tab
+        get_lexer_settings (lexer, settings);
+        return;
+      }
+
+    // Update the color picker in all styles
+    int styles[ed_max_lexer_styles];  // array for saving valid styles
+    int max_style = rmgr.get_valid_lexer_styles (lexer, styles);
+    QWidget *tab = tabs_editor_lexers->widget (index);
+    color_picker *color, *bg_color;
+
+    for (int i = 0; i < max_style; i++)  // create dialog elements for all styles
+      {
+        QString actual_name = lexer->description (styles[i]);
+        bg_color = tab->findChild <color_picker *> (actual_name + "_bg_color");
+        if (bg_color)
+          {
+            // Update
+            if (styles[i] == 0)
+              bg_color->set_color (lexer->defaultPaper ());
+            else
+              {
+                if (lexer->paper (styles[i]) == lexer->defaultPaper ())
+                  bg_color->set_color (settings_color_no_change);
+                else
+                  bg_color->set_color (lexer->paper (styles[i]));
+              }
+          }
+
+        color = tab->findChild <color_picker *> (actual_name + "_color");
+        if (color)
+          color->set_color (lexer->color (styles[i]));
+      }
+
+  }
+
+  void settings_dialog::get_lexer_settings (QsciLexer *lexer,
                                              gui_settings *settings)
   {
-#if defined (HAVE_QSCINTILLA)
     resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
 
-    // Get lexer settings and copy from default settings if not yet
-    // available in normal settings file
-    rmgr.read_lexer_settings (lexer, settings);
-
-    int styles[MaxLexerStyles];  // array for saving valid styles
+    int styles[ed_max_lexer_styles];  // array for saving valid styles
     // (enum is not continuous)
-    int max_style = get_valid_lexer_styles (lexer, styles);
+    int max_style = rmgr.get_valid_lexer_styles (lexer, styles);
     QGridLayout *style_grid = new QGridLayout ();
     QVector<QLabel*> description (max_style);
     QVector<QFontComboBox*> select_font (max_style);
@@ -692,7 +741,6 @@
     QFont default_font = QFont ();
     int label_width;
     QColor default_color = QColor ();
-    QColor dummy_color = QColor (255, 0, 255);
 
     for (int i = 0; i < max_style; i++)  // create dialog elements for all styles
       {
@@ -728,7 +776,7 @@
             font_size[i]->setValue (actual_font.pointSize ()-default_size);
             font_size[i]->setToolTip (QObject::tr ("Difference to the default size"));
             if (lexer->paper (styles[i]) == default_color)
-              bg_color[i] = new color_picker (dummy_color);
+              bg_color[i] = new color_picker (settings_color_no_change);
             else
               bg_color[i] = new color_picker (lexer->paper (styles[i]));
             bg_color[i]->setToolTip
@@ -756,6 +804,7 @@
         style_grid->addWidget (color[i], i, column++);
         style_grid->addWidget (bg_color[i], i, column++);
       }
+
     // place grid with elements into the tab
     QScrollArea *scroll_area = new QScrollArea ();
     QWidget *scroll_area_contents = new QWidget ();
@@ -765,25 +814,18 @@
     tabs_editor_lexers->addTab (scroll_area, lexer->language ());
 
     tabs_editor_lexers->setCurrentIndex (settings->value (sd_last_editor_styles_tab).toInt ());
-
-#else
-
-    octave_unused_parameter (lexer);
-    octave_unused_parameter (settings);
-
-#endif
   }
 
   void settings_dialog::write_lexer_settings (QsciLexer *lexer,
-                                              gui_settings *settings)
+                                              gui_settings *settings, int mode)
   {
-#if defined (HAVE_QSCINTILLA)
+    resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
 
     QWidget *tab = tabs_editor_lexers->
       findChild <QWidget *> (QString (lexer->language ()) + "_styles");
-    int styles[MaxLexerStyles];  // array for saving valid styles
+    int styles[ed_max_lexer_styles];  // array for saving valid styles
     // (enum is not continuous)
-    int max_style = get_valid_lexer_styles (lexer, styles);
+    int max_style = rmgr.get_valid_lexer_styles (lexer, styles);
     QFontComboBox *select_font;
     QSpinBox *font_size;
     QCheckBox *attrib_font[3];
@@ -795,7 +837,6 @@
       = settings->value (global_mono_font).toString ();
     QFont default_font = QFont (default_font_name, 10, -1, 0);
     QColor default_color = QColor ();
-    QColor dummy_color = QColor (255, 0, 255);
 
     for (int i = 0; i < max_style; i++)  // get dialog elements and their contents
       {
@@ -847,7 +888,7 @@
               }
             else
               {
-                if (bg_color->color () == dummy_color)
+                if (bg_color->color () == settings_color_no_change)
                   lexer->setPaper (default_color, styles[i]);
                 else
                   lexer->setPaper (bg_color->color (), styles[i]);
@@ -855,19 +896,21 @@
           }
       }
 
-    lexer->writeSettings (*settings);
+    int m = mode;
+    if (m > 1)
+      m = 1;
+
+    const char* group = QString ("Scintilla" + settings_color_modes_ext[m])
+                                .toStdString ().c_str ();
+
+    lexer->writeSettings (*settings, group);
 
     settings->setValue (sd_last_editor_styles_tab.key,
                         tabs_editor_lexers->currentIndex ());
     settings->sync ();
-
-#else
-
-    octave_unused_parameter (lexer);
-    octave_unused_parameter (settings);
+  }
 
 #endif
-  }
 
   void settings_dialog::write_changed_settings (bool closing)
   {
@@ -927,12 +970,16 @@
     settings->setValue (global_ov_startup_dir.key, le_octave_dir->text ());
 
     //editor
+    int ed_mode = 0;
+    if (editor_cb_color_mode->isChecked ())
+      ed_mode = 1;
+    settings->setValue (ed_color_mode.key, ed_mode);
+
     settings->setValue (global_use_custom_editor.key, useCustomFileEditor->isChecked ());
     settings->setValue (global_custom_editor.key, customFileEditor->text ());
     settings->setValue (ed_show_line_numbers.key, editor_showLineNumbers->isChecked ());
     settings->setValue (ed_line_numbers_size.key, editor_linenr_size->value ());
     settings->setValue (ed_highlight_current_line.key, editor_highlightCurrentLine->isChecked ());
-    settings->setValue (ed_highlight_current_line_color.key, m_editor_current_line_color->color ());
     settings->setValue (ed_long_line_marker.key, editor_long_line_marker->isChecked ());
     settings->setValue (ed_long_line_marker_line.key, editor_long_line_marker_line->isChecked ());
     settings->setValue (ed_long_line_marker_background.key, editor_long_line_marker_background->isChecked ());
@@ -1037,43 +1084,43 @@
 #if defined (HAVE_LEXER_OCTAVE)
 
     lexer = new QsciLexerOctave ();
-    write_lexer_settings (lexer, settings);
+    write_lexer_settings (lexer, settings, ed_mode);
     delete lexer;
 
 #elif defined (HAVE_LEXER_MATLAB)
 
     lexer = new QsciLexerMatlab ();
-    write_lexer_settings (lexer, settings);
+    write_lexer_settings (lexer, settings, ed_mode);
     delete lexer;
 
 #endif
 
     lexer = new QsciLexerCPP ();
-    write_lexer_settings (lexer, settings);
+    write_lexer_settings (lexer, settings, ed_mode);
     delete lexer;
 
     lexer = new QsciLexerJava ();
-    write_lexer_settings (lexer, settings);
+    write_lexer_settings (lexer, settings, ed_mode);
     delete lexer;
 
     lexer = new QsciLexerPerl ();
-    write_lexer_settings (lexer, settings);
+    write_lexer_settings (lexer, settings, ed_mode);
     delete lexer;
 
     lexer = new QsciLexerBatch ();
-    write_lexer_settings (lexer, settings);
+    write_lexer_settings (lexer, settings, ed_mode);
     delete lexer;
 
     lexer = new QsciLexerDiff ();
-    write_lexer_settings (lexer, settings);
+    write_lexer_settings (lexer, settings, ed_mode);
     delete lexer;
 
     lexer = new QsciLexerBash ();
-    write_lexer_settings (lexer, settings);
+    write_lexer_settings (lexer, settings, ed_mode);
     delete lexer;
 
     lexer = new octave_txt_lexer ();
-    write_lexer_settings (lexer, settings);
+    write_lexer_settings (lexer, settings, ed_mode);
     delete lexer;
 
 #endif
--- a/libgui/src/settings-dialog.h	Tue Apr 06 14:25:27 2021 -0400
+++ b/libgui/src/settings-dialog.h	Tue Apr 06 21:26:52 2021 +0200
@@ -71,6 +71,7 @@
     void update_terminal_colors (int mode);
     void update_workspace_colors (int mode);
     void update_varedit_colors (int mode);
+    void update_editor_lexers (int mode);
 
     // slots for dialog's buttons
     void button_clicked (QAbstractButton *button);
@@ -82,8 +83,11 @@
 
   private:
 
-    void read_lexer_settings (QsciLexer *lexer, gui_settings *settings);
-    void write_lexer_settings (QsciLexer *lexer, gui_settings *settings);
+#if defined (HAVE_QSCINTILLA)
+    void update_lexer (QsciLexer *lexer, gui_settings *settings, int mode);
+    void get_lexer_settings (QsciLexer *lexer, gui_settings *settings);
+    void write_lexer_settings (QsciLexer *lexer, gui_settings *settings, int mode);
+#endif
 
     void write_changed_settings (bool closing);
 
@@ -102,7 +106,6 @@
     color_picker *m_widget_title_bg_color_active;
     color_picker *m_widget_title_fg_color;
     color_picker *m_widget_title_fg_color_active;
-    color_picker *m_editor_current_line_color;
 
     QRadioButton *m_rb_comment_strings[ed_comment_strings_count];
     QCheckBox *m_rb_uncomment_strings[ed_comment_strings_count];
--- a/libgui/src/settings-dialog.ui	Tue Apr 06 14:25:27 2021 -0400
+++ b/libgui/src/settings-dialog.ui	Tue Apr 06 21:26:52 2021 +0200
@@ -35,7 +35,7 @@
       <string/>
      </property>
      <property name="currentIndex">
-      <number>6</number>
+      <number>2</number>
      </property>
      <widget class="QWidget" name="tab_general">
       <property name="enabled">
@@ -55,7 +55,7 @@
            <rect>
             <x>0</x>
             <y>0</y>
-            <width>661</width>
+            <width>1021</width>
             <height>616</height>
            </rect>
           </property>
@@ -865,8 +865,8 @@
            <rect>
             <x>0</x>
             <y>0</y>
-            <width>765</width>
-            <height>1513</height>
+            <width>1021</width>
+            <height>1521</height>
            </rect>
           </property>
           <layout class="QVBoxLayout" name="verticalLayout_16">
@@ -1030,69 +1030,6 @@
                   </item>
                  </layout>
                 </item>
-                <item row="3" column="2">
-                 <layout class="QGridLayout" name="gridLayout_16">
-                  <item row="0" column="1">
-                   <spacer name="horizontalSpacer_11">
-                    <property name="orientation">
-                     <enum>Qt::Horizontal</enum>
-                    </property>
-                    <property name="sizeHint" stdset="0">
-                     <size>
-                      <width>40</width>
-                      <height>20</height>
-                     </size>
-                    </property>
-                   </spacer>
-                  </item>
-                  <item row="0" column="0">
-                   <layout class="QGridLayout" name="editor_grid_current_line">
-                    <item row="0" column="2">
-                     <widget class="QLabel" name="editor_label_cl_color">
-                      <property name="enabled">
-                       <bool>false</bool>
-                      </property>
-                      <property name="text">
-                       <string>Color</string>
-                      </property>
-                     </widget>
-                    </item>
-                    <item row="0" column="0">
-                     <widget class="QCheckBox" name="editor_highlightCurrentLine">
-                      <property name="enabled">
-                       <bool>true</bool>
-                      </property>
-                      <property name="sizePolicy">
-                       <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
-                        <horstretch>0</horstretch>
-                        <verstretch>0</verstretch>
-                       </sizepolicy>
-                      </property>
-                      <property name="text">
-                       <string>Highlight current line</string>
-                      </property>
-                     </widget>
-                    </item>
-                    <item row="0" column="1">
-                     <spacer name="horizontalSpacer_14">
-                      <property name="orientation">
-                       <enum>Qt::Horizontal</enum>
-                      </property>
-                      <property name="sizeType">
-                       <enum>QSizePolicy::Fixed</enum>
-                      </property>
-                      <property name="sizeHint" stdset="0">
-                       <size>
-                        <width>20</width>
-                        <height>20</height>
-                       </size>
-                      </property>
-                     </spacer>
-                    </item>
-                   </layout>
-                  </item>
-                 </layout>
-                </item>
                 <item row="3" column="0">
                  <widget class="QCheckBox" name="cb_show_eol">
                   <property name="sizePolicy">
@@ -1122,6 +1059,22 @@
                   </property>
                  </spacer>
                 </item>
+                <item row="3" column="2">
+                 <widget class="QCheckBox" name="editor_highlightCurrentLine">
+                  <property name="enabled">
+                   <bool>true</bool>
+                  </property>
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="text">
+                   <string>Highlight current line</string>
+                  </property>
+                 </widget>
+                </item>
                </layout>
               </item>
               <item>
@@ -2171,6 +2124,13 @@
                </widget>
               </item>
               <item>
+               <widget class="QCheckBox" name="editor_cb_color_mode">
+                <property name="text">
+                 <string>CheckBox</string>
+                </property>
+               </widget>
+              </item>
+              <item>
                <widget class="QTabWidget" name="tabs_editor_lexers">
                 <property name="sizePolicy">
                  <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
@@ -2217,8 +2177,8 @@
            <rect>
             <x>0</x>
             <y>0</y>
-            <width>595</width>
-            <height>410</height>
+            <width>1035</width>
+            <height>569</height>
            </rect>
           </property>
           <layout class="QGridLayout" name="gridLayout_8">
@@ -2367,8 +2327,8 @@
            <rect>
             <x>0</x>
             <y>0</y>
-            <width>259</width>
-            <height>67</height>
+            <width>1035</width>
+            <height>569</height>
            </rect>
           </property>
           <layout class="QVBoxLayout" name="verticalLayout_19">
@@ -2429,8 +2389,8 @@
            <rect>
             <x>0</x>
             <y>0</y>
-            <width>581</width>
-            <height>233</height>
+            <width>1035</width>
+            <height>569</height>
            </rect>
           </property>
           <layout class="QVBoxLayout" name="verticalLayout_vesc_manual">
@@ -2807,8 +2767,8 @@
            <rect>
             <x>0</x>
             <y>0</y>
-            <width>703</width>
-            <height>310</height>
+            <width>1035</width>
+            <height>569</height>
            </rect>
           </property>
           <layout class="QVBoxLayout" name="verticalLayout_20">
@@ -3056,22 +3016,6 @@
    </hints>
   </connection>
   <connection>
-   <sender>editor_highlightCurrentLine</sender>
-   <signal>toggled(bool)</signal>
-   <receiver>editor_label_cl_color</receiver>
-   <slot>setEnabled(bool)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>184</x>
-     <y>86</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>515</x>
-     <y>86</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
    <sender>editor_codeCompletion</sender>
    <signal>toggled(bool)</signal>
    <receiver>editor_spinbox_ac_threshold</receiver>