Micro 2.0.15
Get well into 2026 and have a happy new year! π
What's Changed
New options
truecolor(supersedes theMICRO_TRUECOLORenvironment variable) (by @JoeKar in #2867)showchars(deprecatesindentchar) (by @Neko-Box-Coder in #3760)lockbindingsfor completely disallowing plugins to modify keybindings (by @Neko-Box-Coder in #3618)helpsplitfor changing default split type for thehelpcommand (by @JoeKar in #3502)pageoverlapfor setting number of lines kept during page up/page down (by @nimishjha in #3518)
New actions
FirstTab,LastTab,FirstSplitandLastSplit(by @masmu in #3403)- Note: also changed the behavior of
NextTab,PreviousTab,NextSplit,PreviousSplit - But adjusted the default keybindings so the default behavior remains unchanged
- Note: also changed the behavior of
SkipMultiCursorBackas a counterpart toSkipMultiCursor(by @masmu in #3404)CursorToViewTop,CursorToViewCenter,CursorToViewBottom(by @nimishjha in #3506)Duplicatefor duplicating the selection only, not the whole line (by @dmaluka in #3335)
Improved actions
- Improve and unify
CopyLine,CutLine,DeleteLine,DuplicateLineactions (by @dmaluka in #3335 and #3519)- Note: changed the behavior of those actions
- But also adjusted the default keybindings so the default behavior remains unchanged
- Restore pre-2.0.14 behavior of
SpawnMultiCursor{Up,Down}(by @dmaluka in #3503) - Nano-like page up/page down functionality (by @nimishjha in #3518 and @dmaluka in #3555)
Lua improvements
- Plugins never write to
settings.jsonorbindings.jsonanymore (by @Neko-Box-Coder in #3618) - Add
onBufferOptionChangedcallback (by @JoeKar in #2962) - Add
SpawnCursorAtLoc()(by @Neko-Box-Coder in #3441) - Expose bufpane's
DoubleClickandTripleClickto plugins (by @cutelisp in #3720) - Pass mouse info to
{on,pre}MouseXXXcallbacks (by @dmaluka in #3779) - Support
gotostatement from Lua 5.2 (by @matthias314 in #3597)
Syntax highlighting improvements
- Haskell syntax: various improvements and fixes (by @Andriamanitra in #3373)
- Rust syntax:
- C++ syntax:
- Highlight binary and hex literals with single-quote separator per C++14 (by @Neko-Box-Coder in #3310, #3870, #3891)
- Highlight
autoas data type per C++17 (by @2013ZRZ in #3836) - Improve C++ filetype detection by using more keywords (by @Neko-Box-Coder in #3310)
- Shell syntax:
- Correctly match parameter expansions without braces (by @niten94 in #3663)
- Match variables with leading underscore (by @Andriamanitra in #3833)
- Match --options-with-hyphens (by @nabeelsherazi in #3863)
- Asm syntax: highlight C-like comments (by @dmaluka in #3696)
- Ruby syntax: highlight predefined variables (by @Andriamanitra in #3778)
- CSS syntax: add more commands (by @mystieneko in #3436)
- Swift syntax: add shebang (by @frkd-dev in #3451)
- Java syntax: add
varkeyword (by @owencmcgrath in #3526) - Javascript syntax: add .cjs extension (by @med-ab in #3539)
- Groovy syntax: fix triple quotes highlighting (by @Neko-Box-Coder in #3858)
- Fish syntax: fix variable expansion (by @remisalmon in #3830)
- Raku syntax: add .rakutest extension (by @juanfra684 in #3406)
- Arduino syntax: make filetype detection less aggressive (by @Andriamanitra in #3848)
- Add OpenSCAD syntax (by @jmcorey in #3410)
- Add PRQL syntax (by @vanillajonathan in #3313)
- Add meson syntax (by @asakovets in #3236)
- Add nftables config syntax (by @theredcmdcraft in #3325 and #3517)
Various improvements
- Save files safely, writing to the backup file first (by @JoeKar in #3273, #3806, #3814, @Neko-Box-Coder in #3807 and @dmaluka in #3822)
- Also write
settings.json,bindings.jsonetc safely as well, using a temporary file
- Also write
- Support vim-like
+/textsearch in command-line args (by @luca020400 in #3767) - Add
toggle&togglelocalcommands for toggling boolean options (by @cutelisp in #3783) - Add
-vsplit&-hsplitas optional arguments forhelp(by @JoeKar in #3502) - Make
textfilterwork with multicursors (by @dmaluka in #3511) - Support
\xsyntax for raw escape sequences inbindings.json(by @JoeKar in #3595) - Add
overwritemode indicator to the status line (by @JoeKar in #3620) - Support showing git commit hash and branch in the status line (by @niten94 in #3673)
- Support terminal emulation on Solaris, OpenBSD* and NetBSD (by @niten94 in #3714)
- OpenBSD - on 32-bit only
- Display name "Raw event viewer" instead of "No Name" for
rawpane (by @blamedrop in #3791) - Differentiate built-in plugins when listing (by @Neko-Box-Coder in #3810)
- Disable sudo save prompt on Windows (by @niten94 in #3866)
- Only set buffer type to stdout when no file args are passed (by @AndydeCleyre in #3910)
- Linter: add
rufffor Python (by @Andriamanitra in #3657) - Linter:
ldc2andgdcfor D (by @kodesettings in #3892) - Add comment support for typescript (by @Neko-Box-Coder in #3857)
- README: Update micro's version for the Go Report Card (by @JoeKar in #3835)
Bugfixes
- Fix
cd a\causing crash on Windows (by @JoeKar in #3596) - Fix SIGINT killing micro when saving with sudo (by @dmaluka in #3495)
- Fix crash when exiting terminal in some cases (by @JoeKar in #3738)
- Fix crash when
shell.JobSpawnis called from Lua while no callback is set (by @matthias314 in #3554) - Fix 2.0.14 regression: inconsistently working cursor up/down after selection (by @JoeKar in #3540)
- Fix 2.0.14 regression: colorscheme plugins not working (by @dmaluka in #3761)
- Fix non-working raw escape bindings after restarting the screen (by @dmaluka in #3468)
- Fix spurious backups of unmodified files (by @dmaluka in #3822)
- Fix drawing wide characters in the info bar (by @Andriamanitra in #3919)
- Search / replace fixes:
- Fix infinite loop in
replacewhen empty string matches (by @matthias314 in #3566) - Make
FindNextandFindPreviouswork with empty matches (by @matthias314 in #3572) - Match beginning and end of line correctly (by @matthias314 in #3575 and #3914)
- Fix infinite loop in
- Fixes related to saving files:
- Don't prompt to save file if the same file is opened in another buffer (by @matthias314 in #3559 and @niten94 in #3719)
- Prompt to save new file regardless of
autosaveenabled (by @yz778 in #3626) - Fix per-filetype settings not being applied when saving as a new file (by @Neko-Box-Coder in #3625, #3688 and @JoeKar in #3662)
- Support saving with sudo in more cases (by @Neko-Box-Coder in #3689)
- Update displayed name when saving file with a different name (by @Neko-Box-Coder in #3689)
- Fix comment plugin not using user settings when overriding default setting (by @Neko-Box-Coder in #3424)
- Introduces
comment.typeoption which deprecates existingcommenttype
- Introduces
- Fix rendering Unicode 14.0+ emojis (by @JoeKar in #3601)
- Properly handle escaped and quoted characters in keybindings (by @matthias314 in #3612)
- Fix tabs suddenly becoming invisible after
tabmove(by @Neko-Box-Coder in #3619) - Fix cycling through completion suggestions stopping at non-word character (by @Andriamanitra in #3650)
- Fix scrollbar covering cursor (by @cutelisp in #3741)
- Fix ruler drawn on top of the tab bar (by @cutelisp in #3744)
- Relocate buffer view after setting options that affect it (by @dmaluka in #3743)
- Fix non-working proportional resize after closing a nested VSplit inside a HSplit (by @Neko-Box-Coder in #3708)
- Fix non-working matching brace highlighting in
sunny-daycolorscheme (by @tautte in #3735) - Fix micro broken on OpenBSD (by @niten94 in #3561 and #3895)
Documentation improvements
- Update and improve man page and
micro -helpoutput (by @dmaluka in #3812) - List more bindable actions in
help keybindings(by @Andriamanitra in #3685 and @dmaluka in #3799) - Document binding keys to Lua functions (by @dmaluka in #3799)
- Document passing
*tcell.EventMouseto mouse action callbacks (by @dmaluka in #3799) - Update and correct documentation for
onActionreturn value (by @dmaluka in #3799) - Some small improvements (by @cutelisp in #3786, #3818)
Build system changes
- Minimum supported Go version changed from 1.16 to 1.19 (by @alexandear in #3461 and @JoeKar in #3595)
- Make all builds explicitly fully static (disable CGO) (by @JoeKar in #3466)
- Add build target for Windows ARM64 (by @creeperlv in #3512)
- Add build targets for Solaris and Illumos (by @niten94 in #3714)
- Set version as release when there are no commits ahead (by @niten94 in #3515)
- Fetch tags with
--force(by @JoeKar in #3448) - Micro's dependencies (the forked
tcelland others) moved to https://github.com/micro-editor (by @JoeKar in #3593, #3595, #3596, #3601, #3600)
New Contributors
- @mystieneko made their first contribution in #3436
- @jmcorey made their first contribution in #3410
- @frkd-dev made their first contribution in #3451
- @JonathanBerkeley made their first contribution in #3469
- @alexandear made their first contribution in #3467
- @theredcmdcraft made their first contribution in #3325
- @creeperlv made their first contribution in #3512
- @nimishjha made their first contribution in #3506
- @owencmcgrath made their first contribution in #3526
- @med-ab made their first contribution in #3539
- @antoine2711 made their first contribution in #3615
- @yz778 made their first contribution in #3626
- @usfbih8u made their first contribution in #3647
- @edwloef made their first contribution in #3677
- @cutelisp made their first contribution in #3716
- @tautte made their first contribution in #3735
- @codemanticism made their first contribution in #3759
- @vanillajonathan made their first contribution in #3313
- @blamedrop made their first contribution in #3791
- @asakovets made their first contribution in #3236
- @remisalmon made their first contribution in #3830
- @deepdring made their first contribution in #3834
- @2013ZRZ made their first contribution in #3836
- @luca020400 made their first contribution in #3767
- @kodesettings made their first contribution in #3892
- @nabeelsherazi made their first contribution in #3863
Full Changelog: v2.0.14...v2.0.15