Skip to content

Mg v4.1

Latest

Choose a tag to compare

@github-actions github-actions released this 07 Sep 12:14
· 15 commits to master since this release
v4.1
b95636b

Changes

  • Render double-width UTF-8 characters in two terminal columns, keeping incremental redraws and cursor positioning aligned
  • New line-wrap-mode, where a line too long for the window continues on the rows below instead of being truncated with a $. A continued row ends with an arrow, or a backslash outside UTF-8 locales. Off by default; set it per buffer, or with set-default-mode wrap in ~/.mg
  • Character widths follow Unicode 17. Emoji, and the scripts added since Unicode 5, are measured correctly instead of being drawn one column wide and overlapping whatever followed them
  • Shift and PgUp/PgDn mark text a page at a time, completing the shift-select support from v4.0: new commands shift-scroll-down and shift-scroll-up
  • The mode line names the major mode where it used to say Fundamental, with the modes that qualify it after: a python buffer reads (Python Notab Indent) and a text buffer (Text Fill). Fundamental is shown when there is no major mode, which is what it means
  • The buffer list mode is called buffer-list rather than listbufmap, its internal keymap name, now that the mode line leads with it
  • New yaml-mode with syntax highlighting, detected for *.yml, *.yaml, .clang-format and .yamllint. Whitespace is structure in YAML, so the mode indents two columns with spaces only, a tab being a syntax error. Block scalars introduced by | or > are left as text, so the shell in a run: | step is not colored as YAML
  • New text-mode for prose, which turns on auto-fill-mode, detected for *.txt, *.text, the suffixless files a source tree keeps like README and LICENSE, and the file mutt hands its editor
  • New git-commit-mode for COMMIT_EDITMSG and friends: the comments git adds are dimmed, trailers stand out, and a commit -v diff is colored on the diff-mode rules. Bound like Magit's git-commit mode: C-c C-c finishes the commit, C-c C-k aborts it, and C-c C-s, C-c C-a, C-c C-r, C-c C-t add Signed-off-by, Acked-by, Reviewed-by and Tested-by trailers
  • New diff-mode with syntax highlighting for patches, detected for *.diff, *.patch and *.rej. Removed and added lines are only colored inside a hunk, so the message of a mailed patch keeps its own dashes
  • New conf-mode with syntax highlighting for configuration files, detected for *.conf, *.cfg, *.ini, *.toml, systemd units, .desktop entries, fstab, ssh_config, sshd_config, ~/.gitconfig, ~/.editorconfig, and the .config and *defconfig files written by kconfig
  • New makefile-mode with syntax highlighting and hard tabs, detected for Makefile, GNUmakefile, *.mk, *.make, and #!/usr/bin/make -f scripts shell-script-mode is now also detected for *.bash, *.ksh, *.zsh, and rc files like ~/.bashrc and ~/.profile
  • auto-execute patterns now also match against the file's basename, so auto-execute .bashrc shell-script-mode works without a leading */
  • Syntax highlighting: $(...) variable references are now colored like ${...}, including nested ones in makefiles

Fixes

  • Fix marking text with shifted keys in VTE-based terminals when built --without-curses: the ansi backend now enters the alternate screen like the terminfo backend. As a side effect the shell's content and scrollback survive an editing session
  • Report errors in the startup file again. The message was written to the echo line and immediately covered, by the help text or by the line count of the files named on the command line, so a ~/.mg that failed on its first line looked like it had never been read at all, issue #41
  • set-tab-width in ~/.mg now also applies to scratch, which is created before the startup file is read, issue #41
  • Raise the number of modes a buffer can hold from four to six. A major mode that brings two helper modes of its own, like python-mode, no longer runs out of room and gets dropped when the buffer already carries a default mode
  • A mode named in ~/.mg, such as auto-fill-mode, now becomes a default for the files opened afterwards. It used to be applied to scratch, the only buffer in existence while the startup file is read, and so had no effect on anything the user went on to edit
  • The tab width a mode wants now follows the startup file like the mode itself. yaml-mode in ~/.mg used to leave the files opened afterwards at width eight, with only scratch getting the two the mode asked for
  • Default modes from ~/.mg now reach the buffers that already exist, in particular scratch. The mode list was copied to them but the count was not, so the modes were there and inert, the same shape as issue #41
  • Update stale links in documentation, issue #40
  • markdown-mode no longer colors the indented continuation lines of a list item as a verbatim block. An indented block is only verbatim when a blank line precedes it