//Config default.json is for copying parts to user.json,
//it's not read as actual config. Config user.json is read.
//
//Some options have suffix, for OSes:
//Windows: none, Linux: "__linux", macOS: "__mac", FreeBSD: "__freebsd"
{
  //[Font]
  //Text font name [has suffix]
  "font_name": "Consolas",
  "font_name__linux": "Courier New",
  "font_name__mac": "Monaco",

  //Text font name, for "italic" fragments [has suffix]
  //Empty string is allowed
  "font_name_i": "",
  "font_name_i__linux": "",
  "font_name_i__mac": "",

  //Text font name, for "bold" fragments [has suffix]
  //Empty string is allowed
  "font_name_b": "",
  "font_name_b__linux": "",
  "font_name_b__mac": "",

  //Text font name, for "bold+italic" fragments [has suffix]
  //Empty string is allowed
  "font_name_bi": "",
  "font_name_bi__linux": "",
  "font_name_bi__mac": "",

  //Text font size [has suffix]
  "font_size": 10,
  "font_size__linux": 10,
  "font_size__mac": 10,

  //Text font size, for "italic" fragments [has suffix]
  "font_size_i": 10,
  "font_size_i__linux": 10,
  "font_size_i__mac": 10,

  //Text font size, for "bold" fragments [has suffix]
  "font_size_b": 10,
  "font_size_b__linux": 10,
  "font_size_b__mac": 10,

  //Text font size, for "bold+italic" fragments [has suffix]
  "font_size_bi": 10,
  "font_size_bi__linux": 10,
  "font_size_bi__mac": 10,

  //Enable to render font ligatures (e.g. with font "Fira Code")
  //Option has effect only on Windows. On Unix: on, or depends on OS.
  "font_ligatures": true,

  //Text font rendering quality [has suffix]
  //  0: Default
  //  1: Draft
  //  2: Proof
  //  3: Non Antialiased
  //  4: Antialiased
  //  5: Cleartype
  //  6: Cleartype Natural
  "font_quality": 0,
  "font_quality__linux": 0,
  "font_quality__mac": 0,

  //UI elements font name [has suffix]
  "ui_font_name": "default",
  "ui_font_name__linux": "default",
  "ui_font_name__mac": "default",

  //UI elements font size [has suffix]
  "ui_font_size": 9,
  "ui_font_size__linux": 9,
  "ui_font_size__mac": 9,

  //Output panel font name [has suffix]
  "ui_font_output_name" : "default",
  "ui_font_output_name__linux" : "default",
  "ui_font_output_name__mac" : "default",

  //Output panel font size [has suffix]
  "ui_font_output_size" : 9,
  "ui_font_output_size__linux" : 9,
  "ui_font_output_size__mac" : 9,

  //Allows to use width of Unicode characters proportional to font
  "unicode_proportional": true,
  
  //If "unicode_proportional":false, allows to use bigger width of full-width Unicode characters (else use 100%)
  "unicode_wide_allowed": true,
  
  //If "unicode_proportional":false, sets width (in percents) of full-width characters
  "unicode_full_width": 190,

  //[Ui]
  //Double-buffering of UI controls [has suffix]
  //  Use only if problems with rendering.
  //  If app shows flickering, change to true.
  //  If high-DPI monitor (e.g. Retina) shows blurred text, change to false.
  "ui_buffered": true,
  "ui_buffered__linux": true,
  "ui_buffered__mac": false,

  //Allow to run only one instance of CudaText
  "ui_one_instance": false,

  //[File]
  //File-change notification: enabled
  "ui_notif": true,

  //File-change notification: watch timer interval, seconds
  "ui_notif_time": 2,

  //[File/NonText]
  //Non-text files: allow to open
  //  0: show question message
  //  1: open in editor
  //  2: don't open
  //  3: open in viewer, binary mode
  //  4: open in viewer, hex mode
  "ui_non_text": 0,

  //Non-text files: detection buffer size, Kb
  "ui_non_text_buffer": 64,

  //[File]
  //Reloading of file: if caret was on the last line, after reload put caret on new last line
  "ui_reload_tail": true,

  //Manual reopening/reloading of file: confirm to reload, if tab has unsaved changes
  "ui_reload_unsaved_confirm": true,

  //[Lexers]
  //Group lexers menu by 1st char of name
  "ui_lexers_grouped": true,

  //[Text]
  //Highlight background of lines with carets
  "show_cur_line": false,

  //Highlight background of lines with carets: only minimal part of line, if line wrapped
  "show_cur_line_minimal": true,

  //Highlight background of lines with carets: only for focused editor
  "show_cur_line_only_focused": false,

  //Show additional vertical lines at all caret(s) position(s)
  "show_cur_column": false,

  //Allow last line to scroll to the top of window
  "show_last_line_on_top": true,

  //Highlight selection background till the right window edge (otherwise: till line end)
  "show_full_sel_bg": false,

  //Highlight syntax-defined blocks background till the right window edge (otherwise: till line end)
  "show_full_syntax_bg": true,

  //On dragging vertical scrollbar, show line number tooltip in the top-right corner
  "show_hint_on_vert_scroll": false,

  //Always hide horizontal scrollbar in editor
  "hide_horiz_scrollbar": false,

  //Shift text area to the right, so part of text will look "centered".
  //  If value=0: no shifting. 
  //  If value>0, text area is shifted, so N first characters in lines look "centered".
  "centering_width": 0,

  //Same as "centering_width", but it's applied only in Distraction-Free mode
  "centering_for_distraction_free": 100,

  //[Lexers]
  //Enable caret-depending highlightings.
  //- e.g. Pascal highlightes "begin"/"end" with green when caret is inside block
  //- HTML/XML highlightes opening/closing tags when caret is inside tag
  "lexer_dynamic_hilite": false,

  //Max number of lines in editor, for which dynamic highlighting works.
  //Reason for option: dynamic highlighting disables highlighting cache, so slows down scrolling
  "lexer_dynamic_hilite_max_lines": 2000,

  //If text size is bigger than this option, lexer analysis becomes delayed,
  //ie only after last text change + pause (during this pause you'll see non-colored text)
  "lexer_delayed_parsing_size": 100000,

  //Delayed lexer analysis: pause in msec
  "lexer_delayed_parsing_pause": 400,

  //On app start, postpone lexer parsing, until file tab becomes visible (ie don't parse hidden tabs).
  //This makes much faster app start, if session loads lot of files.
  "lexer_postpone_until_shown": true,

  //[Text]
  //Style of folding
  //  0: if fold-hint empty: [...] from fold-pos, else hint
  //  1: if fold-hint empty: [line...] from fold-pos, else hint
  //  2: if fold-hint empty: [...] after line, else hint
  //  3: always [...] after line
  //  4: horiz colored line below line text
  "fold_style": 1,
  
  //Show tooltip when mouse hovers over [...] folded marks
  "fold_tooltip_show": false,

  //[Text/Commands]
  //If no selection, "Copy to clipboard" will take entire line with caret
  "copy_line_if_no_sel": true,

  //If no selection, "Cut to clipboard" will take entire line with caret
  "cut_line_if_no_sel": false,

  //If vertical (column) selection is placed, copy it to clipboard aligned by spaces, 
  //i.e. lines are padded by spaces to have equal length
  "copy_column_aligned_by_spaces": true,

  //[Text]
  //If text typed, delete selection first
  "ovr_sel": true,

  //If text pasted from clipboard, and "overwrite" mode on (Ins key),
  //then pasted text overwrites editor text
  "ovr_on_paste": false,

  //[File/Save]
  //On saving file: delete spaces at lines ends
  "saving_trim_spaces": false,
  
  //On saving file: delete redundant empty lines at file end
  "saving_trim_final_empty": false,

  //On saving file: force end-of-line chars at file end (if not entered)
  "saving_force_final_eol": false,

  //[Text]
  //Commands Jump-next-word, Jump-previous-word, Select-word (double-click) will
  //see these chars as "letters" and select them like letters.
  //  Don't enter here: Latin/Rus/Greek/German letters, "0".."9", "_".
  //  Note: config read as utf8.
  "word_chars": "",

  //Show these unicode chars as "xNNNN" hex strings.
  //  Some chars are here by default: http://unicode.org/reports/tr9/#Directional_Formatting_Characters
  //  Note: config is read as utf8.
  "hex_chars": "",

  //Additional pixels per each line, vertically
  "spacing_y": 1,

  //Tab-char width
  "tab_size": 8,

  //Tab-key enters spaces, instead of tab-char
  "tab_spaces": false,

  //Max x-position, before which tab-chars expand to N spaces (after it to 1 space)
  "tab_max_pos_expanded": 500,

  //[View/Gutter]
  //Gutter: Enable gutter (all columns at the left side)
  "gutter_show": true,

  //Gutter: Show gutter's folding column
  "gutter_fold": true,

  //Gutter: If false, folding lines auto-hide on mouse-leave
  "gutter_fold_always": true,

  //Gutter: Style of folding icons
  //  0: plus/minus
  //  1: triangles
  "gutter_fold_icons": 0,

  //Gutter: Show gutter's bookmarks column
  "gutter_bookmarks": true,

  //[View/LineNumbers]
  //Show gutter's "Line numbers" column
  "numbers_show": true,

  //If not 0, special font size is used for numbers
  "numbers_font_size": 0,

  //For which lines to show numbers
  //  0: show for all lines
  //  1: don't show
  //  2: show for each 10th line
  //  3: show for each 5th line
  "numbers_style": 0,

  //Always show numbers for line(s) with caret(s)
  "numbers_for_carets": false,

  //Center line numbers on gutter column
  "numbers_center": true,

  //[Text]
  //Style of block staples (aka indentation guides)
  //  0: don't show
  //  1: normal lines
  //  2: dash/dotted lines
  //  3: 2-pixel lines
  //  4: dotted lines
  "staples_style": 1,
  
  //Properties of block staples. String value contains ","-separated options:
  //- Shift of staple to the right (-5..5, 0: staple is near the left edge of text cell).
  //- Width (in percents) of staple's angled side (0..200).
  //- Kind of top staple edge. Enum. 0: none; 1: angled; 2: simple line
  //- Kind of bottom staple edge.
  "staples_props": "-1,40,1,1",

  //[View/Ruler]
  //Ruler: show ruler (horizontal bar at the top)
  "ruler_show": false,

  //Ruler: numeration style
  //  0: numbers 0 - 10 - 20 - 30...
  //  1: numbers 1 - 11 - 21 - 31...
  //  2: numbers 1 - 10 - 20 - 30...
  "ruler_numeration": 0,

  //Ruler: if not 0, special font size is used for ruler
  "ruler_font_size": 8,

  //Ruler: ruler height, pixels
  "ruler_size": 20,

  //[View/Minimap]
  //Minimap: Show
  "minimap_show": false,

  //Minimap: Show selection area always. If false: show only on mouse-over.
  "minimap_sel_always": false,

  //Minimap: Show 1-pixel border around selection area
  "minimap_sel_border": true,

  //Minimap: Width
  //  value=0: autosize
  //  value>0: fixed width in chars
  "minimap_char_width": 0,

  //Minimap: Place minimap to the left side
  "minimap_at_left": false,

  //Minimap: show tooltip, when mouse cursor moves over minimap
  "minimap_tooltip_show": false,
  
  //Minimap: number of lines in "tooltip"
  "minimap_tooltip_line_count": 6,

  //Minimap: width of tooltip in percents of editor width
  "minimap_tooltip_width": 60,

  //[View/Micromap]
  //Micromap: show (small vertical bar at the right edge)
  "micromap_show": false,

  //Micromap: width, pixels
  "micromap_width": 12,

  //[Text]
  //Fixed margin (vertical line) column.
  //Line is always shown, to hide: set to big value, e.g. 2000.
  "margin": 2000,

  //Additional vertical lines.
  //List of column positions, space-separated, e.g. "20 40 50".
  "margin_string": "",
  
  //[View/Unprinted]
  //Unprinted: Global enable-flag for unprinted_ options below
  "unprinted_show": false,
  
  //Unprinted: What info to show for unprinted chars. Option is string.
  //  if "s" in value: Show whitespace
  //  if "l' in value: Whitespace only at begin/end of lines (overrides "t')
  //  if "t" in value: Whitespace only at end of lines
  //  if "e" in value: Show end-of-lines marks
  //  if "d" in value: Detailed end-of-lines: "LF", "CRLF", "CR" (overrides ".")
  //  if "." in value: Instead of arrows at end-of-lines, show thick dots
  "unprinted_content": "se",

  //Unprinted: Show control ASCII chars (codes 0..31) as replacement-char
  //(else show them as "xNN" hex codes)
  "unprinted_replace_spec": false,

  //Unprinted: Replacement-char hex code for control ASCII chars
  "unprinted_replace_to_code": "A4",

  //Unprinted: Length of arrow for tab-char (1 is minimal, 0 means full size)
  "unprinted_tab_len": 1,

  //Unprinted: Scale (% of char height) of space dot
  "unprinted_space_dot_scale": 15,

  //Unprinted: Scale of end-of-line text marks: "LF", "CRLF", "CR"
  "unprinted_end_font_scale": 80,

  //Unprinted: Scale of tab-arrow pointer (15..50)
  "unprinted_tab_ptr_scale": 22,

  //[Text/Wrap]
  //Wrap mode:
  //  0: no wrap (fastest)
  //  1: wrap at window edge
  //  2: wrap at "fixed margin"
  //  3: wrap at minimum of "window edge" and "fixed margin"
  "wrap_mode": 0,

  //Show wrapped parts of long line indented, like line itself
  //(if line begins with spaces/tabs)
  "wrap_indented": true,

  //Enable word-wrap (by window edge, by margin) only if lines count < option
  //Reason for option: disabled word-wrap (together with none-lexer) makes loading of huge files faster 1.5 times
  "wrap_enabled_max_lines": 60000,

  //[Text/Undo]
  //Undo: Max count of commands which can be undone
  "undo_limit": 5000,

  //Undo: Undo commands by groups (groups are separated eg by mouse clicks)
  "undo_grouped": true,

  //Undo: Enabled even after file saving
  "undo_after_save": true,

  //[Text/Caret]
  //Allow to place caret after end-of-line (virtual caret pos)
  "caret_after_end": false,

  //Caret blink time (msec)
  "caret_blink_time": 600,

  //Caret blinking enabled
  "caret_blink_en": true,

  //Enable multi-carets, see "Help--Mouse usage"
  "caret_multi": true,

  //Caret shape is 2-3 values (3rd is optional), comma-separated: width,height,options
  //- width: if > 0, in pixels; in < 0, in %
  //- height: if > 0, in pixels; in < 0, in %; can be taller than 100%
  //- options: can be "_" to make caret empty inside
  //
  //Caret: shape for normal state
  "caret_view": "2,-100",

  //...
  //Caret: shape for overwrite state (Ins key: insert/overwrite)
  "caret_view_ovr": "-100,-100",

  //...
  //Caret: shape for read-only mode
  "caret_view_ro": "-100,2",

  //Caret: positions after pasting column-block
  //  0: no change
  //  1: left-bottom
  //  2: right-bottom
  //  3: right-top
  //  4: carets column on left
  //  5: carets column on right
  "caret_after_paste_column": 5,

  //[Find]
  //Find dialog: show window, not docked to app bottom (applied after restart)
  "find_separate_form": false,

  //Find dialog: suggest selection (of first caret) as initial search text
  "find_suggest_sel": false,

  //Find dialog: suggest current word (at first caret) as initial search text
  "find_suggest_cur_word": true,
  
  //Find dialog: check option "Search in selection", if editor has single caret with multi-line selection
  "find_suggest_in_selection": false,

  //Commands "Find current selection next / previous": case-sensitive state
  //  0: case-sensitive off
  //  1: case-sensitive on
  //  2: use option from Find dialog
  "find_sel_case": 2,

  //Find dialog: show "Find" (ie, Find first) button
  "find_show_findfirst": true,

  //Find dialog: show "Select all" button
  "find_show_select_all": true,

  //Find dialog: show "Mark all" button
  "find_show_mark_all": true,

  //Find dialog: multi-line mode: how height of inputs is increased
  "find_multiline_scale": 2.5,

  //When doing "Go to" or "Find", and new position is out of current screen,
  //scroll vertically by N lines from new position.
  //  for N<0: abs(N) is indent of new position from top
  //  for N>=0: N is indent from top (go to up) or bottom (go to down)
  "find_indent_vert": -5,

  //When doing "Go to" or "Find", and new position is out of current screen,
  //scroll horizontally by N chars from new position. Value must be >=0.
  "find_indent_horz": 10,

  //[Ui/Tabs]
  //UI tabs: Don't create tabs (except the first one), ie use Single Document Interface
  "ui_tab_disabled": false,  
  
  //UI tabs: Use variable tabs width
  "ui_tab_variable_width": false,
  
  //UI tabs: Multi-line mode, ie tabs are wrappable to several lines, when lot of tabs
  "ui_tab_multiline": false,

  //UI tabs: Show angled left/right sides (note: they paint much slower)
  "ui_tab_angled": true,

  //UI tabs: Flat look
  "ui_tab_flat": false,

  //UI tabs: Layout of buttons near tabs, at left/right sides
  //String of few chars, each char is button. Separator for sides is comma.
  //Allowed chars (buttons):
  //  "<", ">" - scroll arrows
  //  "v" - arrow of dropdown menu
  //  "+" - plus button, the same as plus pseudo-tab, but doesn't hide if lot of tabs
  //  "x" - close button, the same as x icon on active tab
  "ui_tab_button_layout": "<>,v",

  //UI tabs: Default tab width
  "ui_tab_size_x": 170,

  //UI tabs: Minimal tab width (used when lot of tabs appear)
  "ui_tab_size_x_min": 40,

  //UI tabs: Maximal tab width
  "ui_tab_size_x_max": 300,

  //UI tabs: Default tab height
  "ui_tab_size_y": 25,

  //UI tabs: Position (side) of tabs
  //  0: top
  //  1: bottom
  //  2: left
  //  3: right
  "ui_tab_position": 0,

  //UI tabs: When to show "x" buttons on tabs
  //  0: don't show
  //  1: show for all tabs
  //  2: show only for active tab
  //  3: show only for mouse-over tab
  "ui_tab_show_x": 1,
  
  //UI tabs: Size of "x" buttons
  "ui_tab_show_x_size": 15,

  //UI tabs: Show "+" pseudo-tab (its click creates new tab)
  "ui_tab_show_plus": true,

  //UI tabs: Feature "Set tab color" colorizes the entire tab height
  "ui_tab_fullcolor": false,

  //UI tabs: Double-click closes tab
  "ui_tab_2click_closes": false,

  //UI tabs: Show indexes on tabs
  "ui_tab_numbers": false,

  //UI tabs: Open new tab near the currently active tab
  "ui_tab_new_near_current": false,

  //UI tabs: On closing a tab, app activates recently active tab in the same group (true),
  //  or righter tab (false)
  "ui_tab_recent_on_close": false,

  //UI tabs: Font styles of preview-tab (opened by single click on Project Manager file item)
  //  If "b" in value: bold
  //  If "i" in value: italic
  //  If "u" in value: underline
  //  If "s" in value: strikeout
  "ui_tab_preview_font_style": "iu",

  //[Ui/Listbox]
  //Listboxes: place dialog on screen center, instead of near top editor edge
  "ui_listbox_centered": false,
  
  //Listboxes: Commands/API listbox width
  "ui_listbox_size_x": 450,

  //Listboxes: Commands/API listbox height
  "ui_listbox_size_y": 300,

  //Listboxes: Auto-completion listbox width
  "ui_listbox_complete_size_x": 550,

  //Listboxes: Auto-completion listbox height
  "ui_listbox_complete_size_y": 200,

  //Listboxes: Enable fuzzy search in menu dialogs (see Wiki)
  "ui_listbox_fuzzy": true,

  //[Ui/History]
  //History: Max items in comboboxes history (0..200)
  "ui_max_history_edits": 20,

  //History: Max items in "recent files" menu (0..50)
  "ui_max_history_menu": 10,

  //History: Max items in "settings/history files.json" (0..400)
  "ui_max_history_files": 25,

  //[Ui]
  //Close program by Esc key
  "ui_esc_close": false,

  //Close Console by Esc key
  "ui_esc_close_console": true,

  //Initial folder of Open/Save-as dialogs, for untitled tabs
  "ui_initial_dir": "",

  //[Ui/Tree]
  //After caret moves, select code-tree node for new caret position
  "ui_tree_auto_sync": true,

  //Delay (in msec) after caret movement, after which code-tree changes (syncs) selection
  "ui_tree_time_focus": 300,

  //Delay (in msec) after text change, after which code-tree contents is filled
  "ui_tree_time_fill": 2000,

  //Show icons in code-tree, for lexers which assign icons (e.g. C#)
  "ui_tree_icons": true,

  //Code-tree icons theme
  //Folders from: codetreeicons
  "ui_tree_theme": "default_16x16",

  //Show tooltips for code-tree items, which don't fit by width
  "ui_tree_show_tooltips": true,

  //Layout of code-tree filter field
  //  0: field is hidden
  //  1: field is shown on top
  //  2: field is shown on bottom
  "ui_tree_filter_layout": 1,

  //Maximal number of lines in text, for which code-tree is enabled (0: always disabled)
  "ui_max_lines_codetree": 8000,

  //[Text/NewDoc]
  //New tabs: Lexer name
  "newdoc_lexer": "",

  //New tabs: Encoding name. Possible names are listed in Wiki (utf8, utf8_bom, cp1250 etc).
  "newdoc_encoding": "utf8",

  //New tabs: End-of-line sequence
  //  0: Auto (CRLF on Windows, LF otherwise)
  //  1: LF
  //  2: CRLF
  "newdoc_ends": 0,

  //[File]
  //When file opens, and cannot detect encoding, open it as ANSI (value=false)
  //or UTF8 (value=true) [has suffix]
  "def_encoding_utf8": false,
  "def_encoding_utf8__linux": true,
  "def_encoding_utf8__mac": true,

  //[Text/Indent]
  //Auto-indent by Enter (makes new line indented)
  "indent_auto": true,

  //Auto-indent kind
  //  0: indent (spaces and/or tabs) like in previous line
  //  1: by spaces
  //  2: by tabs+spaces
  //  3: by tabs only
  //  4: by spaces up to "(" last non-closed bracket in previous line
  "indent_kind": 0,

  //Indent size for Indent/Unindent commands:
  //  N>0: indent is N spaces
  //  N<0: indent is abs(N) tabs
  //  N=0: indent is from options "tab_size" and "tab_spaces"
  "indent_size": 2,

  //Unindent command (Shift+Tab): if several lines (in block) have different indent,
  //stop unindent if one line already at left edge (other lines wont be moved)
  "unindent_keeps_align": true,

  //When indenting several lines, stretch selection after, to entire affected lines.
  //Otherwise, selection will be like before, shifted.
  "indent_makes_whole_line_sel": false,

  //[Mouse]
  //Enable drag-drop of text blocks
  "mouse_drag_drop": true,

  //After drag-drop of text block to another group, focus target editor
  "mouse_drag_drop_focus_target": true,

  //Right-click moves caret (before showing context menu)
  "mouse_rt_click_moves_caret": false,

  //Double-click and immediately drag, makes selection by words
  "mouse_2click_drag_select_words": true,

  //Middle-click shows circle picture, then mouse-move near that circle does auto-scrolling
  "mouse_mid_click_scroll": true,

  //Middle-click does paste from clipboard (usual in Linux apps)
  "mouse_mid_click_paste": false,

  //Enable selection of vertical blocks (Alt+drag)
  "mouse_column_selection": true,

  //Select entire line if clicked line number
  "mouse_gutter_click_sel": true,

  //Allow to zoom text using Ctrl+wheel
  "mouse_wheel_zoom": false,

  //Mouse wheel scrolling speed, vertical (in lines)
  "mouse_wheel_speed_vert": 3,

  //Mouse wheel scrolling speed, horizontal (in chars)
  "mouse_wheel_speed_horz": 10,

  //Call "Go to definition" command, by click with modifier key
  //  "": disabled
  //  "a": by Alt+click
  //  "sa": by Shift+Alt+click
  //  "ca": by Ctrl+Alt+click
  //  "sca": by Shift+Ctrl+Alt+click
  "mouse_goto_definition": "a",

  //Mouse click on line number: select line with end-of-line
  //(so caret is placed on the next line)
  "mouse_click_number_selects_eol": true,

  //[Keys]
  //Key BackSpace: do Unindent command, if caret is inside indented area
  "key_bksp_unindent": true,

  //Key Tab: do Indent command, if text is selected
  "key_tab_indents_sel": true,

  //Key Home: first jump to leading non-space char, then to line start
  "key_home_to_nonspace": true,

  //Key End: first jump to trailing non-space char, then to line end
  "key_end_to_nonspace": true,

  //Keys Home/End: when moving on long wrapped lines, treat wrapped parts like
  //separate lines and first jump to wrapped parts edge
  "key_home_end_nav_wrapped": true,

  //Keys PageUp/PageDown: keep relative offset from top of editor
  "key_page_keeps_rel_pos": true,

  //Keys PageUp/PageDown: page size
  //  0: full height
  //  1: full height minus 1
  //  2: half height
  "key_page_size": 1,

  //Keys Up/Down: try to remember/keep caret column: if moving from long line, 
  //to short line, to long line again
  "key_up_down_keeps_column": true,

  //Keys Up/Down: when moving on long wrapped lines, treat wrapped parts
  //like separate lines and try to jump to position above/below previous
  "key_up_down_nav_wrapped": true,

  //Keys Left/Right: try to jump to opposite selection edge
  "key_left_right_swap_sel": true,

  //Keys Left/Right: try to jump to opposite selection edge, and keep this selection
  "key_left_right_swap_sel_and_select": false,

  //[Ui/Statusbar]
  //States: no-selection, small-selection (one line), stream-selection (several lines),
  //  column-selection, multi-carets.
  //Macros:
  //  {y}: line of top caret
  //  {y2}: line of bottom caret
  //  {yb}: line of 1st selection begin
  //  {ye}: line of 1st selection end
  //  {x}: column of top caret, tab-chars counted as 1
  //  {xx}: column of top caret, tab-chars expanded
  //  {count}: number of lines
  //  {carets}: number of carets
  //  {sel}: number of lines affected by selection(s)
  //  {cols}: number of columns in column-selection
  //  {char}: character at first caret (empty if no char)
  //  {char_dec}: character at first caret - decimal code (empty if no char)
  //  {char_hex}: character at first caret - 2..4-digit hex code (empty if no char)
  //  {char_hex4}: character at first caret - 4-digit hex code (empty if no char)
  //  {_ln}: localized string "Ln"
  //  {_col}: localized string "Col"
  //  {_sel}: localized string "sel"
  //  {_linesel}: localized string "lines sel"
  //  {_carets}: localized string "carets"
  //
  "ui_statusbar_no_sel": "{_ln} {y}, {_col} {xx}",
  "ui_statusbar_small_sel": "{_ln} {y}, {_col} {xx}, {_sel}",
  "ui_statusbar_str_sel": "{_ln} {y}, {_col} {xx}, {sel} {_linesel}",
  "ui_statusbar_col_sel": "{sel}x{cols} {_sel}",
  "ui_statusbar_carets": "{carets} {_carets}, {sel} {_linesel}",

  //Statusbar is visible
  "ui_statusbar_show": true,

  //Statusbar panels list. Can skip items, can reorder items.
  //Panel names:
  //    caret  : Caret(s) info
  //    enc    : Encoding name
  //    ends   : Line ends characters
  //    lexer  : Lexer name
  //    tabsize: Tab-char size
  //    ins    : Insert/Overwrite mode (toggled by Ins key)
  //    selmode: Shows "-" for normal selection mode, "| |" for column selection mode
  //    wrap   : State of wrap mode: no wrap, wrap at window edge, wrap at fixed margin
  //    msg    : Message from CudaText or plugins (panel is auto-sized)
  //Panel alignment: C (center), L (left), R (right), A (auto-size)
  "ui_statusbar_panels": "caret,C,180|enc,C,125|ends,A,45|lexer,C,140|tabsize,A,75|selmode,A,15|msg,L,4000",

  //Statusbar height
  "ui_statusbar_height": 24,

  //Statusbar message (in the last panel): show time in seconds
  "ui_statusbar_time": 5,

  //[Ui]
  //Show full file path in window title
  "ui_title_path": false,

  //[Ui/History]
  //Save last session on close, and restore it on start (all named+unnamed tabs).
  //This also shows "Don't save/ Keep in session" button in the "Save tabs?" dialog.
  "ui_reopen_session": true,
  
  //On closing app, save current session without asking.
  //Requires option "ui_reopen_session": true.
  "ui_auto_save_session": false,

  //[Lexers]
  //Allow to apply color-theme to lexer's styles (and auto-show dialog "Lexer styles mapping")
  "ui_lexer_themes": true,

  //[View/Web]
  //Underline HTML color codes (like #008080, #0a0) in these file extensions,
  //comma-separated, w/o dot. "*" for all files, empty str to disable.
  "underline_color_files": "*",

  //Width of line, pixels
  "underline_color_size": 3,

  //[File/Export]
  //Export to HTML: show line numbers in output
  "export_html_numbers": false,

  //Export to HTML: font name in output
  "export_html_font_name": "Courier New",

  //Export to HTML: font size in output
  "export_html_font_size": 12,

  //[Python]
  //Sets Python3 engine [has suffix]
  //  If correct, you must see Python version in console panel (Ctrl+`)
  //  and command "=sys.path" must work in console.
  //
  //  Instruction for Linux, if Py engine not found:
  //  1) open file manager, go to /usr
  //  2) search for "libpython3.*so*",
  //     Terminal command:
  //     $ find /usr -name 'libpython3.*so*' 2>/dev/null
  //  3) if not found, install Python 3, goto 2)
  //  4) set "pylib__linux" to one of the found filenames
  //
  //  Info for macOS:
  //  Homebrew is not OK, it don't install 32-bit .dylib file.
  //  So you must install Python from www.python.org (any 3.x is ok).
  //  CudaText will find Python then (any version until 3.9).
  //
  "pylib": "python35.dll",
  "pylib__linux": "libpython3.5m.so.1.0",
  "pylib__mac": "/Library/Frameworks/Python.framework/Versions/3.5/lib/libpython3.5.dylib",

  //API: delay for event on_change_slow in msec (used in CudaLint)
  "py_change_slow": 2000,

  //[Text/Commands]
  //Commenting: If no selection then move caret to next line
  "comment_move_down": true,

  //Commenting: Try to save chars positions in line after commenting/uncommenting
  "comment_save_column": false,

  //Commenting: If selected >1 lines, insert comment at maximal common indent
  "comment_equal_column": false,

  //Duplicating line: If no selection then duplicate full line
  "duplicate_full_line_if_no_sel": true,

  //Duplicating line: If no selection then move caret to next line
  "duplicate_move_down": true,

  //[Text/Completion]
  //Enable special auto-completion for HTML lexer (see wiki)
  "autocomplete_html": true,

  //Reg.ex. for lexer name, to activate special HTML auto-completion
  "autocomplete_html_lexers": ".*HTML.*|PHP",

  //Enable special auto-completion for CSS lexer (see wiki)
  "autocomplete_css": true,
  
  //Reg.ex. for lexer name, to activate special CSS auto-completion
  "autocomplete_css_lexers": "CSS",

  //Auto-show auto-completion after typing N word-chars (0: disabled)
  //Option is for lexer-specific configs, not for user.json config.
  "autocomplete_autoshow_chars": 0,

  //Chars, which trigger autocompletion show.
  //Option is for lexer-specific configs, not for user.json config.
  //  E.g. if option is "@!" in config "lexer Nnn.json", then @ and !
  //  chars trigger autocompletion, in Nnn lexer.
  "autocomplete_trigger_chars": "",

  //When any of these chars is typed while showing completion listbox,
  //listbox enters selection, and typed char is appended too.
  //Option is for lexer-specific configs, not for user.json config.
  "autocomplete_commit_chars": " ,;/\\''\"=<>()[]{}",

  //If chosen auto-completion item has (), then append "(" on insertion
  "autocomplete_add_opening_bracket": true,

  //What to do when Up key is pressed with autocompletion selection on top,
  //or Down key is pressed with selection on bottom
  //  0: ignore pressed key
  //  1: wrap selection to opposite edge
  //  2: close autocompletion
  "autocomplete_up_down_at_edge": 1,

  //Auto-close brackets/quotes.
  //  Value can have only chars: ( [ { ' " `
  //  (don't forget that json needs escaped double-quote)
  //  Function don't work on escaped chars, after backslash.
  //  Function don't work if after caret is non-space.
  "auto_close_brackets": "([{",

  //[File]
  //Extensions of picture files (they show as pictures)
  "picture_types": "bmp,png,jpg,jpeg,jpe,gif,ico",

  //[View/Web]
  //Highlight web links (URLs), with font color + underline
  "links_hilite": true,

  //Regular expression, which finds web links
  "links_regex": "\\b(https?://|ftp://|magnet:\\?|www\\.)\\w[^<>''\"\\s]+",

  //[File]
  //Maximal file size, allowed to open, in Mb
  "ui_max_size_open": 1000,

  //Maximal file size, for which allowed to use lexers, in Mb
  //  It's important for JSON, XML: if file is bigger, than lite lexer (JSON ^, XML ^)
  //  will be used instead of normal lexer.
  "ui_max_size_lexer": 2,

  //[Ui]
  //On calling Full-Screen, hide these UI elements
  //Value is string of few chars
  //  if "t" in value: toolbar
  //  if "i" in value: statusbar
  //  if "a" in value: sidebar (on the left edge)
  //  if "p" in value: side panels (near sidebar, e.g. Code Tree, Projects)
  //  if "b" in value: bottom panels (e.g. Console)
  //  if "u" in value: file tabs
  //  if "g" in value: gutter (all columns: numbers, bookmarks...)
  "ui_fullscreen": "tp",

  //Highlight border of focused input box (find/ replace/ goto/ console input)
  "ui_active_border": true,

  //Console and other bottom panels: use narrow width (in docked state).
  //Otherwise, use full width.
  //(true: Code Tree is on the side of Console; false: Code Tree is above Console.)
  "ui_console_compact": false,

  //Console panel (Ctrl+`): word wrap mode
  "ui_console_wrap": true,
  
  //[Ui/Toolbars]
  //Show sidebar (vertical bar on the left side)
  "ui_sidebar_show": true,
  
  //Show sidebar on the right side
  "ui_sidebar_on_right": false,

  //Sidebar icons theme
  //Folders from: sideicons
  "ui_sidebar_theme": "common_20x20",

  //Show toolbar (horizontal bar, below window title)
  "ui_toolbar_show": false,

  //Toolbar icons theme
  //Folders from: toolbaricons
  "ui_toolbar_theme": "default_24x24", 

  //Show main menu bar
  "ui_menu_show": true,

  //[Find/Hotkeys]
  //Hotkeys in Find/Replace dialog
  "find_hotkey_find_dlg": "Ctrl+F",
  "find_hotkey_replace_dlg": "Ctrl+R",
  "find_hotkey_find_first": "Alt+Enter",
  "find_hotkey_find_next": "",
  "find_hotkey_find_prev": "Shift+Enter",
  "find_hotkey_replace": "Alt+Z",
  "find_hotkey_replace_no_next": "Ctrl+Alt+Z",
  "find_hotkey_replace_all": "Alt+A",
  "find_hotkey_count_all": "Alt+O",
  "find_hotkey_select_all": "Alt+E",
  "find_hotkey_mark_all": "Alt+K",
  "find_hotkey_op_regex": "Alt+R",
  "find_hotkey_op_case": "Alt+C",
  "find_hotkey_op_words": "Alt+W",
  "find_hotkey_op_wrapped": "Alt+N",
  "find_hotkey_op_in_sel": "Alt+X",
  "find_hotkey_op_multiline": "Alt+M",
  "find_hotkey_op_confirm_rep": "Alt+Y",

  //[Viewer]
  //Viewer text width in binary mode
  "viewer_binary_width": 100,

  //[Log]
  //Show console lines "Init: cuda_nnnn" on plugins initialization
  "py_init_log": true,

  //Log console contents to file settings/console.log
  "log_console": false,
  
}
