-
Notifications
You must be signed in to change notification settings - Fork 102
/
FOCUS-CHANGELOG.txt
544 lines (474 loc) · 42.3 KB
/
FOCUS-CHANGELOG.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
# Main Git Branch
+ New features:
+ Global search now allows to additionally filter results by including and excluding files
+ Syntax highlighting:
+ Batch (thanks @arjenwitteveen)
+ D (thanks @dawsonfrakes)
+ JS embedded in HTML <script> tags will now be highlighted (@thanks @simonvallz)
+ Jai 0.1.96+
+ It is now possible to pass a line number together with the file path to the editor on startup: `focus /path/to/file:69` (thanks @simonvallz)
+ New actions to change case of selected text (thanks @onelivesleft):
+ `change_case_to_upper`
+ `change_case_to_lower`
+ `change_case_to_caps` - will capitalize the first letter, and any letter following a non-letter character (my_foo_type -> My_Foo_Type)
+ `change_case_cycle` - will cycle through the options below. Bound to `Ctrl-U` by default
+ New action `create_cursors_around`. Creates cursors above and below so that they extend up to the surrounding whitespace (thanks @onelivesleft)
+ New actions for creating, moving and deleting cursors (thanks @BuzzwordChief):
+ `move_selection_to_next_word` (`Ctrl-Y`) - instead of creating a new cursor at the next occurrence it will move the current cursor, allowing you to skip an occurrence
+ `revert_select_word_or_create_another_cursor` (`Ctrl-R`) - removes the newly created selection
+ New actions:
+ `reload_from_disk` to force reload a buffer from disk (`Reload File From Disk` in the command palette)
+ `reload_workspace` to force reload the workspace (`Reload Workspace` in the command palette)
+ `build_panel_toggle_focus` - for those who want to be able to focus the build panel using only the keyboard
+ New font options in the style section - `font_ui`, `font_ui_bold`, `font_ui_size` (thanks @hfr4)
+ Windows rmenu key can now be used in keybinds as `cmd` (thanks @onelivesleft)
+ New bindable keys: `MouseX1` and `MouseX2` (thanks @onelivesleft)
+ New available colors:
+ `ruler` for the vertical ruler, if enabled
+ `indent_guide` for indent guides, if enabled
+ `bracket_highlight` for highlighting matching brackets
+ In `[ignore]` and `[allow]` sections of the workspace paths starting with `./` can now be used to refer to the project directories. E.g. `./folder/**` will match a `folder` in any project directory.
+ New options in the [fonts] section which allow to disable hinting and subpixel anti-aliasing:
+ `anti_aliasing`: `lcd` (default - for subpixel AA), or `normal`
+ `hinting` (`true` by default)
+ Cursor movements have been reworked (thanks @onelivesleft).
+ Focus now supports the following cursor movement types:
+ `by_character` - goes through 1 character at a time
+ `by_character_type` - goes through blocks of characters of the same type (e.g. word, non-word, whitespace, etc)
+ `by_character_type_fast` - like above, but treats underscores as part of word and skips 1 space (unless multiple cursors are used)
+ `through_word` - goes through anything to reach the end of the next word block
+ `through_word_throttled` - like above, but goes through at most 2 blocks of characters at a time
+ Each movement type has a corresponding move and delete action, e.g.
+ `move_{left|right}_by_character_type` will move cursors by groups of characters
+ `delete_{left|right}_through_word` will delete the characters in between the current cursor position and the next cursor position after the move through word
+ By default:
+ `Alt -Arrow{Left|Right}` are bound to move by character type
+ `Ctrl-Arrow{Left|Right}` are bound to move through word throttled
+ `Alt -{Delete|Backspace}` are bound to delete by character type
+ `Ctrl-{Delete|Backspace}` are bound to delete by character type (fast)
+ Variable indentation is now supported:
+ New setting `detect_indentation` is added and is set to `true` by default (because presumably this is what people would most likely want)
+ The old setting `insert_spaces_when_pressing_tab` has been renamed to `indent_using: spaces / tabs`
+ If you disable `detect_indentation` you should get the old behaviour (all files use the same indentation settings based on `indent_using` and `tab_size`).
+ New commands have been added (search for "Indentation" in the command palette):
+ To force detect indentation from file (it will be remembered for the duration of the session, but there's no persistence)
+ To convert indentation from spaces to tabs and vice versa - this will change the file contents itself! Note that any tabs or spaces within the lines are not touched
+ To revert indentation to defaults as specified in the config
+ When tab indentation is used, the `tab_size` from the config is always used
+ File-specific settings are now supported:
+ 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, ...]`
+ Bug fixes:
+ Fixed a crash when changing languages in the color preview widget
+ Fixed a crash when editing colors near the end of file with color preview open (thanks @darkgiggs)
+ Fixed a crash when trying to jump to build error after reloading workspace
+ Fixed a crash when trying to duplicate an editor in some cases
+ Fixed a crash when printing too much into the build output window
+ Fixed font size changing when you press ctrl after scrolling has started (thanks @onelivesleft)
+ Cursors in all editors should now be preserved after stripping trailing whitespace. Undo/redo behaviour is fixed as well.
+ Current line highlights will no longer cover indent guides and text highlights
+ Fixed double save dialogs which could appear in some cases
+ Fixed a memory leak in the build system
+ Other changes:
+ Syntax highlighting improvements for CSS and TypeScript (thanks @simonvallz)
+ Creating cursors above and below will now skip empty lines as this is most likely the behaviour users want (thanks @onelivesleft)
+ The Navigate To File (Ctrl-O) dialog will always show all files and folders instead of applying the ignore rules to them, which will allow to selectively open files which are normally ignored
+ Selecting a word using double left click should now behave identically to selecting a word using the `select_word` action, highlighting only whole-word selection occurrences
+ The `delete_to_{start,end}_of_line` actions no longer copies the text to the clipboard.
+ Added two new actions `cut_to_{start,end}_of_line` that deletes the text and copies it to the clipboard.
+ When choosing a location to save a file, the option to "save as" in the dialog will appear after the directories but before files (previously it was at the bottom), so that it's still easy to navigate directories, but also the most likely needed option of saving as a new file is at the top.
+ When attempting to save a buffer which is modified on disk, a confirmation dialog will be shown
+ When a file gets deleted but is then created again (e.g. when switching branches in source control), the editor will notice that and "undelete" the buffer
+ The Navigate To File dialog will now show whether a file is modified and/or modified on disk
+ The editor will now refresh at regular intervals, so that it shows any changes happened externally without waiting for user input
+ The Basic Light theme has been improved (thanks @maxamundsen)
+ macOS: the `dark_titlebar` and `colored_titlebar` settings are now respected (thanks @maxamundsen)
+ Made horizontal scrolling with a horizontal mouse wheel more smooth
# RELEASES ==================================================================
# Version 0.3.7
+ New features:
+ New command: `move_current_file`. Works as `save_as`, but removes the old file (thanks @simonvallz)
+ New config options:
+ `search_is_case_sensitive_when_uppercase_present`. Set to `true` to automatically make local search case sensitive when there are uppercase chars in the search bar. Currently only works with ASCII.
+ `projects_sorting_order`: `most_recent_first` (default), `alphabetical` or `alphabetical_no_case`. Determines the sorting order for projects in the Switch To Project dialog. (thanks @Roman-Skabin for the fix)
+ Option `strip_trailing_whitespace_on_save` now accepts the following values: `all` (strip all trailing whitespace), `except_lines_with_cursor` (leave cursors where they are), and `disabled` (don't strip)
+ Pressing the close active editor shortcut in the Open Files dialog will close the selected file
+ When reloading workspace the user will be able to kill any running build command via a confirmation dialog
+ Build commands can be killed and restarted via a confirmation dialog (previously any running commands had to be manually killed before starting another one)
+ Bug fixes:
+ Fixed a problem with undoing auto-modified colors using the color picker
+ Made dialog chains more robust. We no longer leave the editor in an inconsistent state if a switch to project is cancelled halfway.
+ Fixed the go-to-line dialog position for panels (color preview and the build panel)
+ macOS:
+ Fixed an issue with not being able to exit the editor if there are unsaved buffers
+ Fixed a bug with typing the letter 'q' when trying to exit the editor via Cmd-Q
+ Other changes:
+ Various highlighting improvements (thanks @simonvallz)
+ Temporary unsaved buffers will disappear from file lists when closed. If you accidentally closed one, go back in editor history
+ The `delete_to_start_of_line` command will now delete to the indentation level first, not to the very start of the line right away
+ Many internal changes to reduce the memory footprint and improve the cache friendliness of internal data structures
+ Files larger than the limit of 2,147,483,647 bytes will now no longer be loaded with an error message rather than crashing
+ Hitting save when in the color preview editor will save the target config file, instead of attempting to save the color preview sample text somewhere
# Version 0.3.6
+ New features:
+ New option: `status_bar_position`. Allows changing the position of the status bar to either the `top` or `bottom` of the editor window. Defaults to `bottom`.
+ Code colors have been revamped. There are now more colors available in the config, which roughly correspond to the code tokens produced by language tokenizers.
+ Configs and themes will be migrated to version [5] with the new colors automatically derived from the old colors
+ You can always check the default config for the full list of available colors (use the `Show Default Config` command)
+ Do note that not all tokens are present in all languages. For example, `code_enum_variant` only works with Jai, Odin and Zig at the moment.
+ A new color preview widget will be automatically displayed to help with color selection (code samples contributed by Numina)
+ The color preview widget now has a color picker (thanks to @onelivesleft)
+ New option `color_preview_popup` was added to control the popup behaviour. Variants: `enabled`, `minimized`, `disabled` (defaults to `enabled`)
+ New commands: `close_all_editors` and `close_other_editors`. Can be used to clean up the most recent files dialog (`Ctrl-Tab` by default). (thanks @maxamundsen)
+ New command: `strip_trailing_whitespace`. Use to strip trailing whitespace in the currently open file (thanks @maxamundsen)
+ New command: `choose_language`. Allows to select a language for a buffer (thanks @maxamundsen)
+ New command: `build_clear_output`. Use to manually clear the build output panel. Note that there is already a build option to clear it on every run, which may be preferable.
+ New config subsection under `[[workspace]]`: `[file associations]`. Can be used to assign syntax to buffers using wildcards. See the default config for examples
+ Basic highlighting for Markdown (thanks @jakwolf) - however it's not complete and not always correct
+ Basic CSS highlighting (thanks @simonvallz)
+ C and C++ highlighters are now separate from each other
+ Workspace changes:
+ Workspace will now reload in a non-destructive way. Whenever possible it will try to preserve open editors unless they don't belong to the workspace any more
+ The [[workspace]] section in the config has changed. It should auto-migrate to version [5]. Please refer to the comments in the default config for more details
+ Allow/ignore sections now expect one line per rule, not many rules on one line separated by space
+ Individual files can now be added to workspace alongside directories
+ The first directory in the workspace member list will be considered the working directory
+ Paths relative to the config file location can now be used in the workspace member list
+ Any projects opened using any means (e.g. by launching the editor with a `-project` parameter or passing in a dir with a `.focus-config` file) will be remembered, and you can can then switch to them using the Switch to Project dialog (Ctrl-Alt-P by default)
+ New build command variable: `%PROJECT_CONFIG_DIR%`. Expands to the path of the directory containing the active project config.
+ New option: `load_most_recent_project_on_start`. Set to `true` to load the last loaded project on startup.
+ New option: `highlight_matching_brackets`. Set to `true` to highlight the bracket matching the one the cursor is on.
+ New command: `jump_to_matching_bracket`. Defaults to Ctrl-M.
+ Bug fixes:
+ Linux: Fixed a bug that caused inconsistent trackpad scrolling on Wayland (thanks @Mythique)
+ Rust: enabled comment toggling that was missing initially
+ Fixed a few memory leaks
+ Fixed an out-of-bounds scroll position in scrollable panels in some cases
+ Fixed a crash when parsing build output with certain regexes
+ Fixed a crash when outputting invalid UTF-8 in the build output window
+ Fixed a glitch with changing scroll position in some cases (thanks @Sanian-Creations)
+ Fixed search result highlighting when there are tab characters used for alignment in the middle of text
+ linux/macos: invalid directories in the config should now highlight the incorrect chunk, not the whole path (on windows it has always worked like this)
+ Other changes:
+ macOS: add support for dead keys/key composition
+ Text inputs now also support deleting text to underscore (Alt+Backspace, Alt+Delete by default) (thanks @jejikeh)
+ It is now possible to add a comment to an empty line by using the `toggle_comment` action (thanks @polgartom)
# Version 0.3.5
+ New features:
+ New option: `insert_final_newline_on_save`. Set to `true` to auto-add missing final newlines to saved files.
+ New command: `copy_current_line_info`. Copies a string `<current-file-path>:<line>` to clipboard. Useful for setting breakpoints.
+ Basic HLSL highlighting (thanks @Roman-Skabin for many improvements)
+ Basic JSON highlighting (thanks @simonvallz)
+ Rust highlighting
+ Bug fixes:
+ Fixed the Jai code samples highlighting in build output in some cases
+ Fixed build output highlighting glitch when using the clear build output option
+ Fixed a crash in some cases when selecting all occurrences with the search bar open
+ Fixed a massive slowdown on some systems due to problematic OpenGL drivers
+ Fixed buffer duplication when jumping to build errors on Windows
+ Fixed editor freeze on large workspace reloads
+ Fixed wrong local search results after stripping trailing whitespace in some cases
+ Other changes:
+ Made the fuzzy search in the command dialog more intuitive
+ CRLF is now stripped from build output before displaying
# Version 0.3.4
+ New features:
+ Jumping to build errors is now supported. See the default config for examples and more information (thanks @jlami for the initial implementation)
+ Use the new commands `go_to_next_build_error` (F8 by default) and `go_to_previous_build_error` (Shift-F8 by default)
+ Double-clicking the file name in the build output will also jump to the error location (provided it matched the error regex)
+ You can add Ctrl to your key combo or double-click to open on the side, as usual (when the default keybinds are used)
+ Closing an editor will now remove the corresponding file from the open files list (only if it's not modified)
+ New Handmade Hero theme (thanks @Sokus)
+ Basic JS highlighting (thanks @simonvallz)
+ It is now possible to use variables in build and run commands: %FILE%, %FILE_DIR%, %FILE_NAME%, %FILE_NAME_NO_EXTENSION%, %BUILD_WORKING_DIR%, %RUN_WORKING_DIR% (see more information in the default config)
+ New options: `window_width`, `window_height`, `window_x`, `window_y`. Can be used to configure the initial size of the editor window.
+ Focus now allows auto loading projects at startup in one of the following ways:
+ By passing a project name as a parameter: `focus -project "Project Name"` or `focus -project path/to/project.focus-config`.
+ By passing in a directory path which contains a file named `.focus-config`. This file will be loaded as a Focus project.
+ By launching Focus from a directory containing a file named `.focus-config`.
+ Bug fixes:
+ C highlighting now supports identifiers which start with a UTF8 letter
+ Other changes:
+ Column number shown in the footer will now count the number of characters, not the visual offset (previously it would take tab size into account)
+ Configs will be migrated to version [3]. New settings, colors and keybinds will be automatically added.
+ C highlighting has been slightly improved
# 0.3.4-1 hotfix
+ Fixed a crash when trying to autoindent C/C++ code (introduced in 0.3.4)
# 0.3.4-3 hotfix
+ Fixed a crash when trying to jump to error in a file we can't open
+ Fixed build output parsing in some situations
+ Added relative build error path support (relative to the build_working_dir of the build command)
+ Improved error messages
# Version 0.3.3
+ New features:
+ macOS: Drag files into the window to open them.
+ C/C++ highlighter will now accept most common unicode letter characters in identifiers
+ Added highlighting for the Uxntal language (thanks @LainLayer)
+ C# highlighting: support nested string interpolation (thanks @audV)
+ New option: `show_selected_text_length`. Set to `true` to display the number of selected chars (and bytes) in the footer (thanks @CELLTH)
+ New command: `open_another_editor_instance`. Defaults to Ctrl-Shift-Alt-N. Opens a new editor instance as a subprocess. Thanks @LainLayer
+ In Jai, `#string` literals will now support highlighting text. E.g. `#string STR_PYTHON` will highlight the contents as python. The name needs to end with the desired language name. The string block can have a special background color (called `region_heredoc` in the config)
+ Bug fixes:
+ Fixed a bug with cursor positioning when using the align_cursors action through the command dialog
+ Fixed a visual glitch when attempting to draw tabs as characters in a new buffer name
+ After switching to a new project the Navigate to File dialog should no longer persist paths from the previous project
+ Fixed a crash when opening the global search widget immediately after switching projects
+ Fixed incorrect cursor positioning when redoing with multiple cursors in some cases
+ Other changes:
+ Improved the scanning speed by ignoring large binary files quicker
+ Windows: improved the startup times by avoiding the use of heavy Win32 API calls
+ It is now possible to select all occurrences of the selected text while the search bar is open
+ Build commands will now appear in the command palette. There's no need to assign each command a key binding any more.
# Version 0.3.2
+ New features:
+ New build option: `clear_build_output_before_running`. Set to `true` to clear the build output window every time a command is run.
+ New option: `disable_viewport_chasing_cursor_near_the_edge`. Set to `true` to prevent the viewport from smoothly scrolling to the new cursor position when it moved near the edge by a small amount.
+ macOS: `Opt` is now allowed in keybinds rather than `Alt`.
+ macOS: colored title bars are now used by default
+ Bug fixes:
+ macOS: added `NSHighResolutionCapable` to `Info.plist` which should fix blurry rendering when installing Focus via the `.dmg` package.
+ macOS: keyboard shortcuts should now work correctly on non-QWERTY layouts (https://github.com/focus-editor/focus/issues/29)
- NOTE: key composition still does not work correctly, this fix is only about the base keyboard layout being respected
+ Fixed a crash when attempting to override key mappings in a project config
+ Fixed the double shift search action not registering on Linux consistently
+ It shouldn't now be allowed to switch projects while a build command is running, to prevent freezing
+ Go-to-line now works when you press enter to jump to an already entered line number
+ Other changes:
+ macOS: Installing the editor from the `.dmg` package will register it as a handler for text files. This means that:
1. you will see Focus as an entry in the "Open With" list in the context menu for text files in Finder
2. you can use Focus to open files from the terminal by running `open -a Focus file`
+ macOS: Some default keyboard shortcuts were changed to remove conflicts with system shortcuts.
+ macOS: The oldest OS that can launch Focus is now macOS 10.13 High Sierra.
+ Continuous scroll actions such as `scroll_viewport_up`, `scroll_viewport_down` etc. now should work with multipart combos.
+ Cursor positioning when undoing/redoing has been improved. You should now be able to use undo/redo to jump to the position of the last edit without actually applying it.
# Version 0.3.1
+ New features:
+ New options: `save_current_buffer_on_build` and `save_all_file_backed_buffers_on_build`. Enable to auto-save files before running build commands (thanks @jlami)
+ Zig highlighting
+ Bug fixes:
+ Previewing themes will now change window border color as well as it should (thanks @jmpstar)
+ Regex search should no longer crash the editor on certain inputs
+ Close current editor when animations are disabled should now focus the remaining editor
+ Binary files should now be auto-ignored again
+ Fixed a memcpy-related memory corruption bug which manifested in some rare Linux distros
+ Other changes:
+ Various theme improvements (thanks @jmpstar, @Leonader, @maxamundsen)
+ Crash reports now print stack traces in release mode where possible (thanks @Sanian-Creations)
+ Upgraded to Jai 0.1.83+ (thanks @valignatev)
+ C highlighting improvements
+ Linux: the editor now uses libxcb to interact with an X11 server by default. The old X11 backend (Xlib) is still around and can be activated by running the editor with `FOCUS_LD_BACKEND=x11` set in the environment
+ NOTE: the xcb backend is currently missing drag-and-drop support. If that is important to you please use the old Xlib backend as described above.
+ Platform support enchancements for macOS:
+ the editor no longer consumes CPU when idle
+ implemented the refresh timer (2024, year of the blinking cursor)
+ smoother trackpad scrolling
+ the `maximize_on_start` option now actually maximizes the main window instead of making it full-screen
# Version 0.3.0
+ New features:
+ An automatic config migration system. All configs will be bumped to version [2], with new things added or renamed where needed.
+ Windows 11+: New config option: `colored_titlebar`. Sets the color of the title bar to the background color (thanks @amasondev)
+ New option: `hide_mouse_when_typing` (currently Windows/Mac only). Set to `true` to hide the mouse cursor when entering text (thanks @amasondev)
+ New commands: `add_cursors_to_line_ends` (Alt-Shift-I) and `add_cursors_to_line_starts` (Alt-Shift-Ctrl-I)
+ New command: `align_cursors` (Alt-A). Can be used to align the indentation for multiple cursors (thanks @hfr4)
+ New command: `show_default_config`. Can be used to view the default editor config for your reference (readonly)
+ New command: `select_all_occurrences`. Used to create a cursor on each selection occurrence (thanks @hfr4)
+ New command: `toggle_fullscreen`. Defaults to F11 (thanks @ustance)
+ New command: `close_project`. Can be used to (surprise!) close the active project
+ New command: `swap_selections`. Can swap two selected pieces of text (thanks @hfr4)
+ New command: `escape`. Tries to close dialogs, remove additional cursors, etc. You can just bind it to `Escape` in `[common]` and forget.
+ New option: `highlight_line_with_cursor` (thanks @SentientCoffee)
+ New option: `draw_indent_guides`. Set to `true` to draw a vertical guide line at every indent level (determined by tab size)
+ New option: `auto_surround_with_brackets_and_quotes` to enable auto-surrounding (thanks @hfr4)
+ New option: `scroll_beyond_last_line` (defaults to `true`). Disable to prevent scrolling past the editor's last line
+ New option: `show_cursors_off_screen` (defaults to `true`). If enabled, displays a warning in the footer if there are cursors off screen (only when more than one is used)
+ New option: `persist_local_search_results` (defaults to `false`). If enabled, search highlights will persist even when the search bar is closed. Press escape to dismiss (you might need to bind the `escape` action for it to work). (thanks @amasondev)
+ Added support for regular expressions in file/project search
+ Added a built-in 'save file' dialog (it will be on by default). To use the system dialogs on Windows, use `prefer_system_file_dialogs: true`
+ Dragging with the middle mouse button will create cursors (thanks @hfr4)
+ Added an indicator showing if there are any cursors off screen (if you have more than one)
+ Mac: You can now set `maximize_on_start` in your global config to `true`, and Focus will launch in fullscreen.
+ New syntax highlighting:
+ Python
+ HTML/XML (thanks @arjenwitteveen)
+ Odin (thanks @SentientCoffee)
+ Yang (thanks @jmpstar)
+ Lua (thanks @SentientCoffee)
+ Numpad keys can now be used in key mappings.
The editor now recognizes the following new key names:
Numpad0 - Numpad9
NumpadMultiply
NumpadDivide
NumpadAdd
NumpadSubtract
NumpadDecimal
NumpadEnter
+ Scopes in Jai are now highlighted. See the default config for the new color options (`region_scope_*`)
+ Build system:
+ New config options:
+ `build_panel_width_percent`, `build_panel_height_percent` - how much space the build panel occupies. Both default to 50%.
+ `build_panel_stays_in_one_place`. Defaults to `false`. If disabled, then the panel will flip to the other side of the active pane.
+ Check an example build configuration in the example project or in the default config (use the show default config command)
+ Thanks to the Jai beta user Jakob for writing the first version of the build system
+ New code color: `code_warning`. Used to highlight things such as duplicate key binding etc.
+ New dialog: Switch Between Open Files (defaults to Ctrl-Tab)
+ Support horizontal scrolling with trackpads/mice with horizontal scroll wheels.
+ Bug fixes:
+ Mac: Fixed intermittent crashing on launch
+ It should now be possible to scroll the viewport by dragging outside it in all cases (previously it wasn't always possible - see issue #101)
+ Duplicating a line near the end now duplicates a line as expected
+ Fixed a bug with multi-cursor copying/pasting when some of the cursors don't have a selection
+ Fixed a bug with multi-cursor range replace by typing
+ Fixed a bug with move_lines_up/down near EOF whilst using multi-cursor
+ Fixed visual bug where tabs would align to the wrong columns
+ Fix `toggle_comment` command when tabs are enabled (thanks @Sanian-Creations)
+ Linux: fixed selection while scrolling due to "stuck" START and END states of the mouse button presses.
+ Linux: Clipboard handling should become way faster on X11 because we let event loop to handle more requests before drawing.
+ Linux: fix drag-n-drop crash caused by calling Basic.free on the memory allocated with temp allocator
+ Fix for stuck keys when the editor loses window focus (such as alt-tabbing or moving to other workspaces on Linux)
+ Improved scrolling smoothness (thanks @Sanian-Creations)
+ Parent directories of files outside of project directories are no longer recursively watched for changes. The editor should no longer hang for a long time when opening a file inside a large directory.
+ Directories created within the project shouldn't get themselves any buffers any more
+ Newer user messages will stop dismissing older ones which have a longer lifetime
+ Fixed a crash when trying to rewind editor history after reloading workspace
+ Fixed a crash when searching with whole word match on
+ Aligned missing shortcuts on the welcome screen
+ Other changes:
+ When the workspace is done scanning, the open file dialog input will no longer be cleared
+ Limited Windows 7 support (no dpi awareness)
+ Better word detection by commands that move cursors by word
+ Config highlighting has become smarter and hopefully more helpful
+ Improved CPU usage when selecting text by mouse
+ Tab characters are now only shown when they are within selection
+ Windows: better handling of Unicode input (thanks @ostef)
+ Fuzzy match improvements in dialogs
# Version 0.2.0
+ BREAKING CHANGE: the default config is no longer used as a fallback for missing keymaps, so anything you haven't listed explicitly in the global config won't be included. It's best to start with a fresh config if possible to ensure you have all the most recent options. In the future the plan is to have a config migration system which will add new options or rename/remove existing ones
+ New features:
+ Line numbers can now be enabled (default shortcut is Alt-Shift-L). To enable permanently, use `show_line_numbers: true` in the config
+ Line wrap is now supported (use the toggle_line_wrap command - the default shortcut on Windows is Alt-Z). If you want line wrap to be on by default, use `line_wrap_is_on_by_default: true`. There is currently no way to enable line wrap for certain file types only, but that's coming later.
+ New command: toggle_block_comment (for the supported languages)
+ New command: autoindent_region (bound to Ctrl-Tab by default on Windows/Linux, Option-Tab on Mac). Works with the C-like languages we have syntax highlighting for. Should work similarly to Emacs.
+ New command: delete_current_file. Not bound to anything by default, but can be used from the commands dialog (thanks @SentientCoffee)
+ New command: save_as. Also not bound to any key combination by default (thanks @SentientCoffee)
+ New commands: move_to_previous_buffer, move_to_next_buffer. They work like normal editor history, but skip the cursor movements and jump right to the next buffer or layout change
+ New config option: cursor_blink_time_in_seconds (5 by default). Set to 0 if you don't want the cursors to blink at all.
+ It is now possible to paste whatever was copied with N cursors into another file as long as the number of cursors there is also N (thanks @hfr4)
+ Syntax highlighting for GLSL (thanks @SentientCoffee)
+ Syntax highlighting for Golang (thanks @OlyaIvanovs)
+ Linux: The "Open Projects Directory" command as well as shift-clicking files/directories in the "open file" dialogs (Ctrl+O, Ctrl+Shift+O, Ctrl+P) should now work.
By default the editor will try to auto-detect the preferred file manager using the XDG utilities.
In case the auto-detection fails you can manually set the commands to run via the "explorer_command" and "explorer_reveal_command" options in the "[[linux]]" section of the config file.
Example:
[[linux]]
# '%s' is replaced with the path of the file/directory to open
explorer_command: konsole -e mc "%s" # this command is used when opening a directory
explorer_reveal_command: nautilus --select "%s" # this command is used when highlighting a specific file in a directory
+ Bug fixes:
+ Focus will fall back to a slower hash function on CPUs which don't support AES instructions instead of crashing
+ When opening a file outside of workspace the editor should no longer scan its parent folder and its subfolders (but tell us if it still does)
+ Mac: Focus no longer collects window events when another window is active. This eliminates several bugs (Cmd+Tab spawning cursors, I-Beam cursor when using other apps) at the cost of no longer being able to vertically scroll unless Focus is active. For now.
+ Fixed a bug with the Navigate to file dialog being empty
+ Fixed a bug with global search not finding everything when case sensitive or whole word toggles are just turned on
+ Fixed several issues in the editor history
+ Linux: fixed a bug related to mouse cursor handling which caused slowdowns and cursor flickering on X11 (thanks @valignatev)
+ Linux: there's now a VERY basic save file dialog for new files (thanks @rexim)
+ Other changes:
+ `copy` will now copy whole lines to clipboard if the config option `copy_whole_line_without_selection` is enabled in config
+ Delete-to-start/end-of-line commands now copy whatever was deleted
+ Added #ifdef/#ifndef highlighting to C/C++
+ Added #compile_time/#no_debug/#no_aoc highlighting to Jai
+ Multi-cursor line cuts will no longer include extra newlines
+ When adding cursors above/below it's now possible to easily remove the last added cursor by executing the opposite command (thanks @WWilliams741)
+ Added a notification about match case or match whole word toggles active when no search results found
+ When editor width is limited in settings, the non-editor part of the window will be colored using the `background_dark` color
+ Linux: The editor shoudn't use any CPU while idle.
+ Linux: timers are now supported. As a result some animations (such as the text cursor blinking) should now actually work as expected.
+ Linux: More robust and resilent mechanism to get user's locale and input method for X11 backend. Fix locale-related segfaults
+ Linux: Improve smooth scrolling performance.
+ Global search will now try to preserve search results and cursor position when searching using the same query
+ Windows: The editor window should open on the primary monitor by default
# Version 0.1.10
+ Key chord support (thanks @arjenwitteveen): you can now bind a sequence of key combos to an action, e.g. `Ctrl-A Ctrl-K <action_name>`
+ Case-sensitive and whole-word search toggles (use new commands `toggle_case_sensitive` & `toggle_whole_word` in the [search dialog] context). The default shortcuts are Alt+C/Alt+W on Windows/Linux and Cmd+Opt+C/Cmd+Opt+W on Mac. (Thanks @hfr4!)
+ Windows/Mac: You can now shift+click files/folders in dialog boxes to reveal them in Explorer. (Finder on Mac)
+ Windows/Mac: New keyboard shortcut command: `open_entry_in_explorer`. This will, like the previous item, open a file selected in a dialog box in Explorer/Finder. The default shortcut is Shift+Enter
+ Mac: Keyboard shortcuts for editing text now match other applications even more by default
+ Mac: The app's icon was brightened
+ Basic C# syntax highlighing (thanks @audV)
+ New shortcut to center viewport on cursor: `center_viewport_on_cursor` (thanks @onelivesleft)
+ Basic editor history (thanks @onelivesleft). Use commands `move_to_previous_editor_history`/`move_to_next_editor_history` to go back to previous/next cursor position (Alt-Minus, Alt-Plus by default)
+ Duplicating an editor on the side will now duplicate cursors and viewport position (thanks @hfr4)
# Version 0.1.9, 21 May 2023
+ Horizontal scrolling is now supported either with keyboard (default shortcuts - Alt-H/L) or with Shift-Mousewheel. Note that a horizontal scrollbar is not planned
+ Default keybinds on macOS have been revised to be more natural - your current bindings may conflict with the new ones
+ Windows: the save file dialog is now modal
+ Window title is now properly updated when activating panes by clicking
+ Workspace dir names with a dot will now be displayed correctly
+ Workspace dirs with similar names should now be disambiguated
+ Fixed editor commands executed using the command popup
+ Windows/Linux: you can now specify the name of any TrueType/OpenType font face that you have installed on the system and the editor will try to automatically find the correct font file for it (for example, if you have `font: courier new` in your config on a Windows system, the editor will automatically load `C:\Windows\Fonts\cour.ttf`). On Linux we use `libfontconfig` to match font face names to font files that are installed in the system. Please note that this auto-detection logic is just an addition to the existing behavior of the `font` config option (meaning that you can still specify paths to specific font files just as before). MacOS implementation will come in a future release.
+ Linux/Mac: the editor should no longer constantly redraw while idle
+ "quit" is now a bindable action, bound to Alt-F4 by default
# Version 0.1.8, 12 May 2023
+ New actions: create_cursor_above and create_cursor_below. By default bound to Alt-Shift-ArrowUp/ArrowDown - your current bindings may conflict with the default one
+ switch_to_project now has a default binding - Ctrl-Alt-P
+ Windows: Fixed config hot-reloading, which broke in 0.1.7
+ Windows: Fixed crash report messages
+ Configs will now load with warnings if workspace dirs specified do not exist
# Version 0.1.7, 11 May 2023
+ Navigate To File dialog now opens relative to the current open file
+ The Navigate dialog will now expand if the list of open folders doesn't fit
+ The editor will no longer crash if there are empty lines before the version number in the config file
+ Now Cmd is used instead of Ctrl on macOS when deciding whether to open a file on the side etc.
+ It is now possible to choose a side where to open a file when executing commands that open files (e.g. `Open Global Config`), like you would with the open file dialog
+ Ctrl-double/triple clicking and dragging now behaves as expected in terms of creating multiple cursors
+ Ctrl-click on a cursor will remove it
+ Mac Config (Global + Projects) are now stored in the current user's Application Support directory. To transfer your old configs, run the new Focus app once, then replace the newly-generated configs in `/Users/YOURNAME/Application Support/dev.focus-editor`
+ New icon for macOS
+ Now shipping .dmg disk images for Mac. To install Focus, drag Focus.app into your Applications directory. Then just double-click it like any other app.
+ [Linux] The editor now looks for the global and per-project configuration files under `$XDG_CONFIG_HOME/focus-editor` (usually `$HOME/.config/focus-editor`). When upgrading from an older version you will need to manually move/copy your existing `global.focus-config` file and `projects/` directory to the new location
+ [Linux] Logs and session data are now saved under `$XDG_DATA_HOME/focus-editor` (usually `$HOME/.local/share/focus-editor`)
# Version 0.1.6, 6 May 2023
+ The editor will no longer open on the biggest monitor and maximized by default
+ Fix setting UTF8 window titles on Linux/X11
+ Linux: added the ability to set a fixed scaling factor
+ Basic C highlighting (currently applied to C++ as well)
+ Fix the race condition when creating new files while the workspace is being scanned (thanks to @StevenSavold)
+ The macOS version now has Cmd key support and a separate config file - thanks to @rluba
+ Logging in threads is now supported - thanks to @ostef
+ On Linux the Meta or Super keys can now be used in keymaps
# Version 0.1.5, 4 May 2023
+ When a file is created in the editor, its saving and hot-reloading should now work properly
+ The example config file has been stripped down to avoid confusion
+ When the workspace is reloaded, the visible files should no longer disappear
+ Shortcuts for project-related commands should work now (while no other popups are open only for now)
+ Opening a file from the command line on Linux should no longer segfault
+ Font horizontal spacing has been fixed
+ It is now possible to configure line height scale in the config. Just add `line_height_scale_percent: <number>`. Default: 120
# Version 0.1.4, 1 May 2023
+ Basic Linux Support (thanks to @ileonte)
+ Added crash reports on failed asserts and violated array bounds
+ Smooth scrolling is fixed
+ Config hot reload should work even if it's within one of the ignored dirs
+ On Windows files with path longer than 248 bytes will be ignored to avoid a crash (probably a temporary solution)
# Version 0.1.3, 30 April 2023
+ Fixed a bug with the file watcher being used while uninitialized.
+ Added some shortcuts to the unsaved files dialog (Y/S to save, N to not save, C to cancel)
+ Fixed a bug with the biggest monitor being incorrectly determined on Windows (thanks to @jlami)
+ Zooming no longer offsets the viewport
+ Editing the same file side-by-side will not cause the viewport to jump around
# Version 0.1.2, 29 April 2023
+ Added the move-by-words functionality to text inputs (thanks to @aang521)
+ Fixed the bugs caused by the change of DEFAULT_SPACES in Jai 0.1.062
+ Fixed the config file being reloaded when files are added to the same directory
+ Fixed the window title erroneously saying you're in debug mode
+ Made editing with multiple cursors less surprising when performing mass deletes using Ctrl-Backspace etc.
+ File errors are not too dim any more
# Version 0.1.1, 28 April 2023
+ Added a Save All command
+ Fixed 2 crashes
+ Improved scrolling on touchpads
+ Added an option to disable smooth scrolling (may be useful if the scrolling feels broken) - just add smooth_scrolling: false in the config
# Version 0.1.0, 26 April 2023
+ Initial release