Skip to content

Mg v4.2

Choose a tag to compare

@github-actions github-actions released this 07 Oct 13:29
· 29 commits to master since this release
v4.2
adb442f

Changes

  • New comment-dwim on M-;, with comment-line, comment-region and
    uncomment-region, as in GNU Emacs. The delimiters come from the
    buffer's mode: /* */ in C, # in shell, make, python, conf, yaml and
    git commit messages, <!-- --> in markdown. set-comment-column on
    C-x ; moves the column a comment after code starts in
  • New sort-lines, reverse-region and delete-duplicate-lines, over
    the whole lines of the region, as in GNU Emacs
  • New transpose-lines on C-x C-t, as in GNU Emacs
  • New whitespace-cleanup, as in GNU Emacs: trailing whitespace, empty
    lines at the start and end of the buffer, and indentation redone with
    tabs, or spaces in no-tab-mode; the region only when the mark is set
  • New previous-buffer and next-buffer on C-x and the left and right
    arrow keys, as in GNU Emacs. The buffer list now runs from the buffer
    used last, which is also the order of list-buffers
  • New kill-current-buffer and rename-buffer, as in GNU Emacs
  • The names GNU Emacs binds to the same keys today work in M-x too, e.g.
    kill-ring-save, read-only-mode, split-window-below,
    xref-find-definitions and the kmacro-* names
  • The minibuffer reads keys through the same keymap as the editor, so
    Home, End, Delete, Ctrl and Meta with the arrow keys, M-b, M-f, M-d and
    M-DEL now move and delete by word and character there too, instead of
    inserting the terminal's escape sequence
  • Minibuffer history: Up, Down, M-p and M-n walk what was entered before
    at the same kind of prompt, one history each for command names, buffer
    names and file names, and one per other prompt
  • New display-line-numbers-mode, showing line numbers in a gutter at the
    left of the text. Off by default; set it per buffer, or with
    set-default-mode linum in ~/.mg, issue #31
  • New m4-mode for configure.ac, configure.in and *.m4
  • New cmake-mode for CMakeLists.txt and *.cmake
  • makefile-mode colors the automake if conditional and the @VAR@
    substitutions in Makefile.am and Makefile.in
  • Markdown colors <!-- --> as a comment, and block quotes in a class of
    their own, drawn in the same color as before
  • Indenting a region with TAB in the C, shell and python modes leaves dot
    and mark where they were, as in GNU Emacs, instead of dot on the last
    line and the mark where dot was
  • New secure mode, -S or MGSECURE=1, for use as the editor of a
    restricted shell. Commands that run other programs are disabled, the
    startup file is skipped, and -b/-u are refused
  • New single-file mode, -s, where only the files named on the command
    line can be visited, inserted, or written. Combine with -S for the
    editor of a restricted shell
  • The file modes can be picked at build time with --with-modes=LIST,
    and syntax highlighting left out with --disable-syntax; both are
    part of --disable-all. See the README for the mode names

Fixes

  • Fix shell command injection when opening a .gz file whose name
    contains shell metacharacters
  • Fix query-replace, replace-string and the regexp replace commands
    eating the text before each match, and breaking UTF-8, when the pattern
    has non-ASCII letters like å, ä or ö; isearch skipped matches of such
    patterns
  • Fix M-d and M-DEL deleting only part of a word with non-ASCII
    letters, and the undo of upcase-word and its siblings on such words
  • Tell words in UTF-8 text by their Unicode class: a curly quote or a dash
    is no longer part of a word, so M-. offers foo, not “foo”, and the
    minibuffer moves and deletes over whole characters
  • Fix switching a window to a buffer shown in another window taking the
    cursor from a window that shows a different buffer
  • Fix pop-tag-mark opening a new, empty file instead of going back to a
    buffer whose name is not its file name, like foo.c<2>
  • Draw the divider between side by side windows on every row of a wrapped
    line; it kept stale cells on the rows the line continued from
  • Markdown: a paragraph in a list item, indented to the item's content
    after a blank line, is no longer colored as a code block; a code block
    in an item needs four columns more, as in CommonMark
  • Fix the key bindings from C-x C-k to C-x C-x being shifted by one
    in builds without dired, including --disable-all: C-x C-s ran
    transpose-lines and C-x C-w exchange-point-and-mark. Reported
    by Per Weijnitz, issue #45
  • Fix c-mode losing its TAB and RET bindings in builds without compile
  • Fix --disable-ctags being ignored while cscope, on by default, was
    enabled; cscope needs ctags, so it is now left out too