Version 8.2.0 of package Matlab-Mode has just been released in GNU ELPA. You can now find it in M-x list-packages RET.
Matlab-Mode describes itself as: ==================================== Major mode for MATLAB(R) dot-m files ==================================== More at https://elpa.gnu.org/packages/matlab-mode.html ## Summary: 1 Emacs MATLAB-mode ═══════════════════ [MathWorks] MATLAB® and [GNU Emacs] integration: 1. MATLAB mode, *matlab-ts-mode* or *matlab-mode*, for editing `*.m' files. • Edit MATLAB code with syntax highlighting, indentation (code formatting), and semantic movement. • Lint MATLAB code with fix-it's using the MATLAB Code Analyzer. The *matlab-ts-mode* is a more capable, performant, and accurate than *matlab-mode*. 2. *Code navigation and more* • The [MATLAB Language Server with Emacs], matlabls, provides code navigation, code completion, go to definition, find references, and more. • Imenu support for quickly jumping to function declarations in the current `*.m' or `*.tlc' file. See [doc/matlab-imenu.org]. ## Recent NEWS: 1 Release 8.2.0 Apr-19-2026 ═══════════════════════════ 1. matlab-ts-mode: structural changes to electric indent for improved performance • Numeric matrices are now aligned directly without additional tree-sitter API queries For example, a file with large numeric multi-line matrices (one row per line) went from ~100s to 5s for indent-region on the buffer. • Several optimizations and eliminations of tree-sitter API calls • Many additional small performance improvements that add up. • Added TODO comments in the code for possible future optimizations 2. whitespace at end of lines is now removed during indent 2 Release 8.1.2 Mar-15-2026 ═══════════════════════════ 1. matlab-ts-mode: improved performance of electric indent. Previously we were using (treesit-node-at (point)) to obtain the language elements to indent. Now we use treesit-capture-query which is faster. This is the first step in speeding up electric indent. Future possible optimizations include using symbols from the treesit-capture for language element identification rather than treesit-node-type, simplification of matrix alignment and the other alignments, additional removal of treesit-node-at, etc. 2. matlab-ts-mode: fixed trailing comment alignment problems. Now we only align consecutive statements when in same scope. For example, first comment below is in a different scope so not aligned with the last two comments: ┌──── │ fooBarGooToo = [something, ... │ [otherThing(wIndex) : theEndIndex(wIndex) - 1, ... │ otherThing(wIndex) + 1 : theEndIndex(wIndex); ... │ otherThing(wIndex) + 1 : theEndIndex(wIndex), ... │ otherThing(wIndex) : theEndIndex(wIndex) - 1]]; %#ok<AGROW> │ P0 = [P0, foo.blah{wIndex}.foobarGooOrig(:, 1 : end - 1)]; %#ok<AGROW> │ P1 = [P1, foo.blah{wIndex}.foobarGooOrig(:, 2 : end)]; %#ok<AGROW> └──── 3. matlab-ts-mode: when using keywords (end, arguments, etc.) as variables or functions, they now indent correctly. Note, MATLAB allows end.m, arguments = 10, etc. 4. matlab-ts-mode: An ellipsis at start of file no longer causes a hang 5. matlab-shell: add matlab-shell-before-start-hook 6. matlab-shell: hyperlink syntax error 3 Release 8.1.1 Feb-22-2026 ═══════════════════════════ 1. Enable matlab-ts-mode with Emacs 30.2 which is using tree-sitter ABI 15 (or 14). Note, Emacs 30.1 is using tree-sitter ABI 14 which continues to work. 2. Update installation instructions for the MATLAB Language Server 3. Fix mlint.el issue ("Do not permit multiple groups with the same name") 4 Release 8.1.0 Feb-16-2026 ═══════════════════════════ 1. The behavior of TAB and RET in matlab-ts-mode to electric indent/code-format adjacent lines of code. There is no change in the indent/code-format rules. The goal of this change is to improve editing interactions with the MATLAB indent/code-format engine. • TAB behavior example. Given ┌──── │ a = 1; │ foo = 2; │ foobar = 3; └──── A TAB on any these code lines results in: ┌──── │ a = 1; │ foo = 2; │ foobar = 3; └──── • RET behavior example. Given ┌──── │ v1=1; │ var2= [1,1]; └──── Typing the 4 characters, `x=3;', on the 3rd line (without typing RET) gives us: ┌──── │ v1=1; │ var2= [1,1]; │ x=3; └──── When we type the RET, we get: ┌──── │ v1 = 1; │ var2 = [1, 1]; │ x = 3; │ └──── Now, if we type a RET at the end of the 2nd line, we get the following. Notice that the alignment of x assignment has changed. ┌──── │ v1 = 1; │ var2 = [1, 1]; │ │ x = 3; │ └──── 1. An "electric ends" edge case issues in matlab-ts-mode has been fixed. When typing a statement … …
