This release includes 1 breaking change for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
Summary
AI summaryMinimum supported Go version changed from 1.16 to 1.19.
Full changelog
Micro 2.0.15
Get well into 2026 and have a happy new year! :fireworks:
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:
- Recognize byte strings and C strings (by @jmcorey in #3452)
- Add more keywords and types (by @edwloef in #3677 and @codemanticism in #3759)
- 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 https://github.com/zyedidia/micro/pull/3436
- @jmcorey made their first contribution in https://github.com/zyedidia/micro/pull/3410
- @frkd-dev made their first contribution in https://github.com/zyedidia/micro/pull/3451
- @JonathanBerkeley made their first contribution in https://github.com/zyedidia/micro/pull/3469
- @alexandear made their first contribution in https://github.com/zyedidia/micro/pull/3467
- @theredcmdcraft made their first contribution in https://github.com/zyedidia/micro/pull/3325
- @creeperlv made their first contribution in https://github.com/zyedidia/micro/pull/3512
- @nimishjha made their first contribution in https://github.com/zyedidia/micro/pull/3506
- @owencmcgrath made their first contribution in https://github.com/zyedidia/micro/pull/3526
- @med-ab made their first contribution in https://github.com/zyedidia/micro/pull/3539
- @antoine2711 made their first contribution in https://github.com/zyedidia/micro/pull/3615
- @yz778 made their first contribution in https://github.com/zyedidia/micro/pull/3626
- @usfbih8u made their first contribution in https://github.com/zyedidia/micro/pull/3647
- @edwloef made their first contribution in https://github.com/zyedidia/micro/pull/3677
- @cutelisp made their first contribution in https://github.com/zyedidia/micro/pull/3716
- @tautte made their first contribution in https://github.com/zyedidia/micro/pull/3735
- @codemanticism made their first contribution in https://github.com/zyedidia/micro/pull/3759
- @vanillajonathan made their first contribution in https://github.com/zyedidia/micro/pull/3313
- @blamedrop made their first contribution in https://github.com/zyedidia/micro/pull/3791
- @asakovets made their first contribution in https://github.com/zyedidia/micro/pull/3236
- @remisalmon made their first contribution in https://github.com/zyedidia/micro/pull/3830
- @deepdring made their first contribution in https://github.com/zyedidia/micro/pull/3834
- @2013ZRZ made their first contribution in https://github.com/zyedidia/micro/pull/3836
- @luca020400 made their first contribution in https://github.com/zyedidia/micro/pull/3767
- @kodesettings made their first contribution in https://github.com/zyedidia/micro/pull/3892
- @nabeelsherazi made their first contribution in https://github.com/zyedidia/micro/pull/3863
Full Changelog: https://github.com/zyedidia/micro/compare/v2.0.14...v2.0.15
Breaking Changes
- Minimum supported Go version changed from 1.16 to 1.19.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
Related context
Related tools
Beta — feedback welcome: [email protected]