[25]  # Version number. Do not delete.

[[workspace]]
# These directories and files will be scanned when a workspace is opened so that search etc. works.
# Example:
# /Users/my_name/projects/my_project  # <- the first directory in the list becomes the working directory
# /Users/my_name/jai
# src  # <- this would be relative to the config file location

[ignore]
# Files and directories matching the following wildcards will not be loaded or descended into
# Example:
# *.js - will ignore all files with a '.js' extension
# tmp* - will ignore any files or directories which start with 'tmp'
# /Users/my_name/project/dirname/** - will ignore everything under `dirname`
# /Users/my_name/project/dirname/*  - will ignore all files under `dirname`, but not recursively
.svn
.git

[allow]
# Files and directories matching the wildcards in this section will be loaded, even if they are ignored in the previous section.
# NOTE: known binary file extensions are ignored by default (*.so, *.pdb etc.). If this is not what you want, you can explicitly allow them here.

[file associations]
# Optional file associations in the format `<wildcard1> <wildcard2> ... : <language>`
# Example:
# *.hpp *.hh *.h : cpp
# todo.txt : todo


[[settings]]

maximize_on_start:                                  false
open_on_the_biggest_monitor:                        false
cursor_as_block:                                    true
cursor_blink_time_in_seconds:                       5
highlight_selection_occurrences:                    true
highlight_line_with_cursor:                         false
highlight_matching_brackets:                        true
show_paste_effect:                                  true
strip_trailing_whitespace_on_save:                  except_lines_with_cursor  # options: all, except_lines_with_cursor, disabled
smooth_scrolling:                                   true
scroll_beyond_last_line:                            true
double_shift_to_search_in_workspace:                false
can_cancel_go_to_line:                              true
copy_whole_line_without_selection:                  true
line_height_scale_percent:                          100
max_editor_width:                                   -1
line_wrap_is_on_by_default:                         false
show_line_numbers:                                  false
show_ruler_at_column:                               0
colored_titlebar:                                   true
dark_titlebar:                                      false
hide_mouse_when_typing:                             false
draw_indent_guides:                                 false
auto_surround_with_brackets_and_quotes:             false
auto_close_brackets:                                false
persist_local_search_results:                       false  # if true, search results will stay highlighted and you have to dismiss them using the `escape` action
load_most_recent_project_on_start:                  true
projects_sorting_order:                             most_recent_first

build_panel_stays_in_one_place:                     false  # if true, the build panel will flip to the inactive pane in two pane layouts
build_panel_line_wrap_always_on:                    true
build_panel_width_percent:                          100
build_panel_height_percent:                         30

color_preview_popup:                                enabled  # options: enabled, minimized, disabled
search_is_case_sensitive_when_uppercase_present:    true

detect_indentation:                                 true
indent_using:                                       spaces
tab_size:                                           4

status_bar_position:                                bottom   # options: top, bottom
status_bar_show_cursors_off_screen:                 true
status_bar_show_line_col:                           true
status_bar_show_indentation:                        true
status_bar_show_selected_text_length:               false

show_scrollbar_marks:                               true
scrollbar_width_scale:                              1.0
scrollbar_min_opacity:                              0.0   # if you want the scrollbar to be always visible, set this to 1.0
scrollbar_max_opacity:                              1.0
scrollbar_fade_in_sensitivity:                      10.0  # controls when the scrollbar appears as the mouse pointer gets close
scrollbar_fade_out_delay_seconds:                   1.0   # how long the scrollbar stays visible after scrolling

active_pane_border_width:                           1.0   # set the width to 0.0 to disable
inactive_pane_dim_overlay_opacity:                  0.1   # controls how dim the inactive panes should be

# Added after migration to version [22]
comment_highlight_words1:                        @TODO, TODO, TODO:, NOTE, NOTE:  # a comma-separated list of words to highlight within comments using the color `code_comment_highlight1`
comment_highlight_words2:                        @FIXME # words to highlight using `code_comment_highlight2`
comment_highlight_words3:                        @ROBUSTNESS # words to highlight using `code_comment_highlight3`
comment_highlight_words4:                        @INCOMPLETE # words to highlight using `code_comment_highlight4`

# Added after migration to version [25]
enable_temporary_editors:                        true  # when enabled, any editors are opened temporarily until an edit, a save, or a keep_editor command is used. Any newly opened editor will replace the existing temporary editor
cursor_position_after_jump:                      0.45  # controls where the cursor ends up relatively to the viewport after jumping to a search result or an error. 0.0 is top of the screen, 1.0 - bottom, 0.5 - center
closing_last_editor_in_pane_should_close_pane:   true
closing_last_editor_should_exit_program:         false
show_pane_numbers:                               false
show_tab_characters_in_selection:                true
line_endings:                                    preserve  # options: lf, crlf, preserve

# NOTE: some settings can be specified for a subset of files, based on their language or a wildcard,
# for example:
# [file: <wildcard1>, <wildcard2>, ...]
# [lang: golang, cpp, c, ...]

[file: *.md, *.txt]
line_wrap_is_on_by_default:                         false
draw_indent_guides:                                 false


# Below is an example configuration for build commands
# (uncomment and modify to use)

# [[build commands]]
# build_working_dir:      <build working dir for all commands>  # <- paths relative to the workspace working dir (the first one in the list) are allowed
# open_panel_on_build:    true  #  <- any settings specified here will apply to all commands unless overridden
# close_panel_on_success: false
# clear_build_output_before_running: false
# error_regex:            <compiler-specific error regex>  # see examples below
# auto_jump_to_error:     false

# [Debug Build And Run]   # <- command name. Can be arbitrary
# build_command:          jai main.jai  # should be an executable or a script
# build_working_dir:      <build working dir for this command only>
# timeout_in_seconds:     5             # if you don't want a timeout, don't specify it
# run_command:            test.exe      # will be run if build succeeds
# run_working_dir:        /Users/user   # working dir for the run command
# key_binding:            F5

# [Run]                   # <- You could have commands that don't build anything and just run something
# run_command:            test
# run_working_dir:        /Users/user/test
# key_binding:            Ctrl-F5

# [Release]
# build_command:          jai first.jai - release
# key_binding:            F9


# For jai:    ^(?P<file>.*):(?P<line>\d+),(?P<col>\d+): (?P<type>Error|Warning|Info|...):* (?P<msg>.*)|^(?P<msg1>.*error LNK.*)
# For golang: ^(?P<file>.*):(?P<line>\d+):(?P<col>\d+): (?P<msg>.*)$
# ... let us know what regex works for you and we'll add it here

# NOTE:
# You can use the following variables in build commands:
# %FILE%      - full path to currenly active file
# %FILE_DIR%  - the directory of the currently active file
# %FILE_NAME% - current file name, with extension
# %FILE_NAME_NO_EXTENSION% - current file name, without extension
# %BUILD_WORKING_DIR%  - working dir of the build command
# %RUN_WORKING_DIR%    - working dir of the run command
# %PROJECT_CONFIG_DIR% - the dir containing the active project config file


[[keymap]]

# - The first matching combination will be used, so order matters

[editors]   # <- this means that the following key combos will apply only when editing text

# Key combination                 Action
Cmd-E                           copy_current_line_info
Cmd-D                           select_word_or_create_another_cursor
Cmd-R                           revert_select_word_or_create_another_cursor
Cmd-Y                           move_selection_to_next_word
Cmd-Shift-A                     select_all_occurrences

Cmd-Shift-D                     duplicate_lines

# These shortcuts can be annoying to accidentally use, so they are commented out by default
# Shift-Backspace                 delete_line_and_go_up
# Shift-Delete                    delete_line

Opt-ArrowUp                     move_selected_lines_up
Opt-ArrowDown                   move_selected_lines_down

Cmd-J                           join_lines
Cmd-Shift-J                     join_lines_no_spaces_in_between

Cmd-U                           change_case_cycle

Tab                             indent_or_go_to_next_tabstop
Shift-Tab                       unindent

Cmd-]                           indent
Cmd-[                           unindent

Cmd-S                           save
Cmd-Shift-S                     save_as

Cmd-Opt-Minus                   cursor_go_back
Cmd-Opt-Plus                    cursor_go_forward

Cmd-Shift-Minus                 go_to_previous_buffer
Cmd-Shift-Plus                  go_to_next_buffer

Cmd-/                           toggle_comment
Cmd-L                           select_line

Ctrl-Cmd-ArrowUp                scroll_viewport_up
Ctrl-Cmd-ArrowDown              scroll_viewport_down
Ctrl-Cmd-ArrowLeft              scroll_viewport_left
Ctrl-Cmd-ArrowRight             scroll_viewport_right

Cmd-Shift-C                     move_cursor_to_viewport_center

{Shift}-Ctrl-Opt-Cmd-ArrowUp    move_up_to_empty_line
{Shift}-Ctrl-Opt-Cmd-ArrowDown  move_down_to_empty_line

Opt-Shift-I                     add_cursors_to_line_ends
Opt-Shift-Ctrl-I                add_cursors_to_line_starts

Enter                           break_line
Cmd-Enter                       new_line_below_without_breaking
Cmd-Shift-Enter                 new_line_above_without_breaking

NumpadEnter                     break_line
Cmd-NumpadEnter                 new_line_below_without_breaking
Cmd-Shift-NumpadEnter           new_line_above_without_breaking

Cmd-Opt-S ArrowLeft             move_editor_left
Cmd-Opt-S ArrowRight            move_editor_right
Cmd-Opt-S ArrowUp               move_editor_top
Cmd-Opt-S ArrowDown             move_editor_bottom

Cmd-\ split_right
Cmd-Shift-| split_bottom

Cmd-Opt-X ArrowLeft             split_left
Cmd-Opt-X ArrowRight            split_right
Cmd-Opt-X ArrowUp               split_top
Cmd-Opt-X ArrowDown             split_bottom

Cmd-Opt-D ArrowLeft             duplicate_editor_left
Cmd-Opt-D ArrowRight            duplicate_editor_right
Cmd-Opt-D ArrowUp               duplicate_editor_top
Cmd-Opt-D ArrowDown             duplicate_editor_bottom

Cmd-Shift-,                     duplicate_editor

Cmd-Shift-T                     reopen_closed_editor

Cmd-N                           create_new_file
Cmd-Shift-N                     create_new_file_in_side_pane

Opt-Shift-ArrowUp               create_cursor_above
Opt-Shift-ArrowDown             create_cursor_below

Opt-Cmd-A                       align_cursors

Opt-Cmd-Z                       toggle_line_wrap
Opt-Cmd-L                       toggle_line_numbers

Opt-Cmd-Shift-N                 open_another_editor_instance

# Added after migration to version [25]
Cmd-Opt-S Enter             keep_editor


[open file dialog]

Shift-Enter                     open_entry_in_explorer
Tab                             open_directory
Backspace                       pop_directory


[search dialog]
Shift-Enter                     move_up  # an alternative way to move

Cmd-Opt-C                       toggle_case_sensitive
Cmd-Opt-W                       toggle_whole_word
Cmd-Opt-R                       toggle_regex_search

[common]

# Common key combos may be used as a fallback if they are not defined in more specific sections.
# For example, if "move_up" is not defined in [editors], the one in the [common] section will be matched.

Cmd-Shift-P                     show_commands

Cmd-F                           search_in_buffer_dropdown_mode
Cmd-Opt-F                       search_in_buffer
Cmd-Shift-F                     search_in_project

F12                             switch_to_project

Cmd-P                           open_file_by_name
Cmd-O                           navigate_to_file
Cmd-Shift-O                     navigate_to_file_from_root
Ctrl-Tab                        switch_between_open_files

Cmd-G                           go_to_line

Cmd-C                           copy
Cmd-X                           cut
Cmd-V                           paste

Cmd-Z                           undo
Cmd-Shift-Z                     redo

Cmd-D                           select_word
Cmd-A                           select_all

Cmd-K                           cut_to_end_of_line
Cmd-Delete                      delete_to_end_of_line
Cmd-Backspace                   delete_to_start_of_line

Cmd-W                           close_editor

Cmd-Shift-W                     close_pane
Cmd-Opt-W ArrowLeft             close_left_pane
Cmd-Opt-W ArrowRight            close_right_pane
Cmd-Opt-W ArrowUp               close_top_pane
Cmd-Opt-W ArrowDown             close_bottom_pane
Cmd-Shift-Opt-W                 close_other_panes

Escape                          escape  # combines close_dialog and remove_additional_cursors

Cmd-Shift-L                     toggle_expand

Cmd-B                           toggle_build_panel

Enter                           open_entry
Cmd-Enter                       open_entry_in_side_pane

Ctrl-Cmd-Shift-ArrowLeft        switch_to_left_pane
Ctrl-Cmd-Shift-ArrowRight       switch_to_right_pane
Ctrl-Cmd-Shift-ArrowUp          switch_to_top_pane
Ctrl-Cmd-Shift-ArrowDown        switch_to_bottom_pane
Cmd-,                           switch_to_side_pane

Cmd-1                           switch_to_pane_1
Cmd-2                           switch_to_pane_2
Cmd-3                           switch_to_pane_3
Cmd-4                           switch_to_pane_4
Cmd-5                           switch_to_pane_5
Cmd-6                           switch_to_pane_6
Cmd-7                           switch_to_pane_7
Cmd-8                           switch_to_pane_8
Cmd-9                           switch_to_pane_9

Tab                             focus_next_ui_element
Shift-Tab                       focus_previous_ui_element

# Ctrl-Cmd-F will always toggle fullscreen on macOS (like most other apps), but you can uncomment this to use something else.
# F11                             toggle_fullscreen

# {Shift}- means shift is optional, the key combination will still be matched.
# NOTE: in this editor the Shift key is hard-coded to extend selection when held
{Shift}-ArrowUp                 move_up
{Shift}-Opt-Cmd-ArrowUp         move_up_fast
{Shift}-PageUp                  move_up_one_page

{Shift}-ArrowDown               move_down
{Shift}-Opt-Cmd-ArrowDown       move_down_fast
{Shift}-PageDown                move_down_one_page

{Shift}-ArrowLeft               move_left
{Shift}-Opt-ArrowLeft           move_left_by_character_type
{Shift}-Opt-Cmd-ArrowLeft       move_left_through_word_throttled
{Shift}-Ctrl-ArrowLeft          move_left_through_word
{Shift}-Cmd-ArrowLeft           jump_to_line_start

{Shift}-ArrowRight              move_right
{Shift}-Opt-ArrowRight          move_right_by_character_type
{Shift}-Opt-Cmd-ArrowRight      move_right_through_word_throttled
{Shift}-Ctrl-ArrowRight         move_right_through_word
{Shift}-Cmd-ArrowRight          jump_to_line_end

{Shift}-Cmd-ArrowUp             jump_to_file_start
{Shift}-Cmd-ArrowDown           jump_to_file_end

{Shift}-Home                    jump_to_line_start
{Shift}-End                     jump_to_line_end
{Shift}-Cmd-Home                jump_to_file_start
{Shift}-Cmd-End                 jump_to_file_end
{Shift}-Cmd-M                   jump_to_matching_bracket

{Shift}-Backspace               delete_left_char
{Shift}-Delete                  delete_right_char
{Shift}-Opt-Backspace           delete_left_by_character_type
{Shift}-Opt-Delete              delete_right_by_character_type
{Shift}-Opt-Cmd-Backspace       delete_left_by_character_type_fast
{Shift}-Opt-Cmd-Delete          delete_right_by_character_type_fast
{Shift}-Ctrl-Backspace          delete_left_through_word
{Shift}-Ctrl-Delete             delete_right_through_word

Cmd-=                       increase_font_size
Cmd-Minus                       decrease_font_size
Cmd-0                           reset_font_size_to_default
Cmd-MouseMiddle                 reset_font_size_to_default

F8                              go_to_next_build_error
Cmd-F8                          go_to_next_build_error_in_side_pane
Shift-F8                        go_to_previous_build_error
Shift-Cmd-F8                    go_to_previous_build_error_in_side_pane


[[style]]

theme: bedroom

[fonts]
font:          default
font_ui:       default
font_ui_bold:  default
font_size:     15
font_ui_size:  12
anti_aliasing: lcd  # options: lcd, normal
hinting:       true

[colors]
background0:                            15212AFF
background1:                            10191FFF
background2:                            18262FFF
background3:                            1A2831FF
background4:                            21333FFF

# NOTE: region_scope colors only work for Jai at the moment
region_scope_export:                    15212AFF
region_scope_file:                      131C22FF
region_scope_module:                    1A2831FF

region_header:                          1A5152FF
region_success:                         226022FF
region_warning:                         986032FF
region_error:                           772222FF
region_heredoc:                         090e12FF

selection_active:                       1C4449FF
selection_inactive:                     1C44497F
selection_highlight:                    FCEDFC26
search_result_active:                   8E772EFF
search_result_inactive:                 FCEDFC26
scrollbar:                              33CCCC19
scrollbar_hover:                        33CCCC4C
scrollbar_background:                   10191F4C
cursor:                                 26B2B2FF
cursor_inactive:                        196666FF
paste_animation:                        1C4449FF
splitter:                               10191FFF
splitter_hover:                         1C4449FF
ruler:                                  FCEDFC26
indent_guide:                           FCEDFC26
letter_highlight:                       599999FF
list_cursor_lite:                       33CCCC19
list_cursor:                            33CCCC4C
shadow_dark:                            0E161C7F
shadow_transparent:                     0E161C00
text_input_label:                       3B4450FF
char_under_cursor:                      FFFFFFFF
bracket_highlight:                      E8FCFE30
active_pane_border:                     19666688
inactive_pane_dim_overlay:              10191FFF

ui_default:                             BFC9DBFF
ui_dim:                                 87919DFF
ui_neutral:                             4C4C4CFF
ui_warning:                             F8AD34FF
ui_warning_dim:                         986032FF
ui_error:                               772222FF
ui_error_bright:                        FF0000FF
ui_success:                             227722FF

build_panel_background:                 1A2831FF
build_panel_scrollbar:                  33CCCC19
build_panel_scrollbar_hover:            33CCCC4C
build_panel_scrollbar_background:       10191F4C
build_panel_title_bar:                  1C303AFF

code_default:                           BFC9DBFF
code_invalid:                           FF0000FF

code_string_literal:                    D4BC7DFF
code_multiline_string:                  D4BC7DFF
code_raw_string:                        D4BC7DFF
code_char_literal:                      D4BC7DFF

code_identifier:                        BFC9DBFF
code_note:                              E0AD82FF
code_number:                            D699B5FF

code_error:                             FF0000FF
code_warning:                           E4D97DFF
code_highlight:                         E4D97DFF

code_comment:                           87919DFF
code_multiline_comment:                 87919DFF

code_operation:                         E0AD82FF
code_punctuation:                       BFC9DBFF

code_keyword:                           E67D74FF
code_type:                              82AAA3FF
code_value:                             D699B5FF
code_modifier:                          E67D74FF
code_attribute:                         E67D74FF
code_enum_variant:                      BFC9DBFF
code_macro:                             E0AD82FF
code_function:                          D0C5A9FF

code_builtin_variable:                  D699B5FF
code_builtin_function:                  E0AD82FF
code_builtin_exception:                 E0AD82FF

code_directive:                         E67D74FF
code_directive_modifier:                E67D74FF

code_header1:                           E67D74FF
code_header2:                           E0AD82FF
code_header3:                           E0AD82FF
code_header4:                           E0AD82FF
code_header5:                           E0AD82FF
code_header6:                           E0AD82FF

# Added after migration to version [22]
code_comment_highlight1:                E0AD82FF
code_comment_highlight2:                FF0000FF
code_comment_highlight3:                E67D74FF
code_comment_highlight4:                D699B5FF
cursor_line_highlight:                  21333FFF
color_preview_title_bar:                21333FFF
code_addition:                          33B333FF
code_deletion:                          E64D4DFF
region_addition:                        2260224C
region_deletion:                        7722224C

