Skip to content

Release history

Micro releases

A modern and intuitive terminal-based text editor.

All releases

1 shown

v2.0.15 Breaking risk
Breaking changes
  • Minimum 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 the MICRO_TRUECOLOR environment variable) (by @JoeKar in #2867)
  • showchars (deprecates indentchar) (by @Neko-Box-Coder in #3760)
  • lockbindings for completely disallowing plugins to modify keybindings (by @Neko-Box-Coder in #3618)
  • helpsplit for changing default split type for the help command (by @JoeKar in #3502)
  • pageoverlap for setting number of lines kept during page up/page down (by @nimishjha in #3518)

New actions

  • FirstTab, LastTab, FirstSplit and LastSplit (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
  • SkipMultiCursorBack as a counterpart to SkipMultiCursor (by @masmu in #3404)
  • CursorToViewTop, CursorToViewCenter, CursorToViewBottom (by @nimishjha in #3506)
  • Duplicate for duplicating the selection only, not the whole line (by @dmaluka in #3335)

Improved actions

  • Improve and unify CopyLine, CutLine, DeleteLine, DuplicateLine actions (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.json or bindings.json anymore (by @Neko-Box-Coder in #3618)
  • Add onBufferOptionChanged callback (by @JoeKar in #2962)
  • Add SpawnCursorAtLoc() (by @Neko-Box-Coder in #3441)
  • Expose bufpane's DoubleClick and TripleClick to plugins (by @cutelisp in #3720)
  • Pass mouse info to {on,pre}MouseXXX callbacks (by @dmaluka in #3779)
  • Support goto statement 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 auto as 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 var keyword (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.json etc safely as well, using a temporary file
  • Support vim-like +/text search in command-line args (by @luca020400 in #3767)
  • Add toggle & togglelocal commands for toggling boolean options (by @cutelisp in #3783)
  • Add -vsplit & -hsplit as optional arguments for help (by @JoeKar in #3502)
  • Make textfilter work with multicursors (by @dmaluka in #3511)
  • Support \x syntax for raw escape sequences in bindings.json (by @JoeKar in #3595)
  • Add overwrite mode 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 raw pane (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 ruff for Python (by @Andriamanitra in #3657)
  • Linter: ldc2 and gdc for 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.JobSpawn is 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 replace when empty string matches (by @matthias314 in #3566)
    • Make FindNext and FindPrevious work with empty matches (by @matthias314 in #3572)
    • Match beginning and end of line correctly (by @matthias314 in #3575 and #3914)
  • 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 autosave enabled (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.type option which deprecates existing commenttype
  • 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-day colorscheme (by @tautte in #3735)
  • Fix micro broken on OpenBSD (by @niten94 in #3561 and #3895)

Documentation improvements

  • Update and improve man page and micro -help output (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.EventMouse to mouse action callbacks (by @dmaluka in #3799)
  • Update and correct documentation for onAction return 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 tcell and 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

Beta — feedback welcome: [email protected]