1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335
|
#+startup: showall
#+options: toc:nil
# Copyright (C) 2025 Free Software Foundation, Inc.
* Release 7.2.1 Oct 30, 2025
1. In matlab-ts-mode, fix indent involving catch clause with a comment.
* Release 7.2.0 Oct 29, 2025
1. Updated matlab-ts-mode to use latest matlab tree-sitter v1.2.3 branch [[https://github.com/acristoffers/tree-sitter-matlab/tree/abi/14][abi/14]] at [[https://github.com/acristoffers/tree-sitter-matlab/tree/9a4e65df4bb08e2b019ca2ef16b2d8f3d95ce978][9a4e65d]]. This
fixes parse on a number of MATLAB language constructs, which is visible behavior improvements,
so bumping revision to 7.2.0.
2. In matlab-ts-mode, don't offer to fix function/classdef names when there are syntax errors
because this can lead to changing the name of other identifiers and not the function/classdef
name.
* Release 7.1.2 Oct 16, 2025
1. matlab-is-matlab-file: This function identifies when the content of a *.m file
is MATLAB code, if it's not MATLAB code, Emacs defaults to Objective-C. This fixes
a case where a *.m contains MATLAB code and the first line is a @function_handle.
* Release 7.1.1 Oct 1, 2025
1. matlab-ts-mode: fix semantic movement in strings. Now C-M-f, C-M-b, C-M-SPC work when point is
within strings.
* Release 7.1.0 Sep 29, 2025
1. Improved matlab-ts-mode imenu. The imenu index now creates indices for code sections defined by
"%% heading comments". In addition, the menu was updated to have structure:
- Class
- Function
- Section
Previously, imenu was a flat list without code sections index entries.
* Release 7.0.1 Sep 13, 2025
1. emacsrunregion fix, https://github.com/mathworks/Emacs-MATLAB-Mode/pull/55
* Release 7.0.0 Sep 12, 2025
1. New matlab-ts-mode.
matlab-ts-mode is a [[https://tree-sitter.github.io/tree-sitter][tree-sitter]], based MATLAB mode using
https://github.com/acristoffers/tree-sitter-matlab. This new MATLAB mode is a replacement
for the matlab-mode.
+ Improved font-lock (semantic coloring) performance, making editing even more smooth.
- More accurate fontification, we now identify language elements accurately and use
more faces to color them.
- Fixes edge-case fontification issues when compared with matlab-mode
Create issue for this:
#+begin_src matlab-ts
x = [1 2; 3 4];
y = x'' % this is valid double transpose where matlab-mode gets it wrong
#+end_src
Function identification, see https://github.com/mathworks/Emacs-MATLAB-Mode/issues/48
- In comments, we now highlight =FIXME=, =TODO=, and =XXX= markers.
- Fixed fontification of "%% section" to require that the be the start of a comment and
on their own line.
- Variable creation/assignment will be semantically colored.
- Now fontify all MATLAB/Simulink factory builtin provided functions, class
methods/properties, enums, etc. Note, if you override a builtin function with a variable,
the variable creation/assignment will be colored as a variable, but the use will continue to
be a function. To avoid this confusing state, use variable names that collide with builtin
items.
+ Improved indent
- Simplified the semantics for indent. The indent rules are described in matlab-ts-mode.el
for completeness.
- Improved indent performance, making editing very smooth.
- Fixes various edge-case indent issues, some are
+ Fixed indent of function definition when ellipsis continuations are used.
+ Auto-indentation of end, see https://github.com/mathworks/Emacs-MATLAB-Mode/issues/33
+ Fixed cell and matrices indent alignment problems
+ There's no longer prompting if you want functions to have end's. This is now computed
automatically.
+ Improved fill-paragraph, =M-q=, which will now fill comments and when not in a comment, indent
the current function or statement.
+ Accurate type of m-file detection, which improves matlab-sections-minor-mode.
+ Change Log command now work with MATLAB *.m files.
Running =C-x 4 a= (add-change-log-entry-other-window) will now insert the name of the function
or classdef for the current point.
+ Added support for =M-x outline-minor-mode=. Outline headings are =function='s, =classdef='s,
and "%% heading" comments.
+ On save fix of function/classdef name now handles buffer names that aren't valid MATLAB
identifiers. On save fix of function/classdef name handles buffers not associated with files
on disk. Also fixed cases where detection of scripts failed.
+ Improved handling of single quotes for =M-x electric-pair-mode=. These will automatically
pair
- Single quote when used to create a single-quoted string, but not when used elsewhere,
e.g. a matrix transpose.
- Double quotes for a double-quoted string.
- Parenthesis =()=, Vectors, =[]=, and Cells ={}=.
+ We now highlight starting and ending string quote when the point is on the start or end single
or double quote.
+ Improved (more predictable) s-expression commands
#+begin_example
C-M-f Move forward by s-expression, forward-sexp
- If point is on the start of an s-expression, move to the end.
- If point is on the end of an s-expression, move to the start of the next s-expression
at the same level. If there is no next s-expression, no movement occurs.
C-M-b Move backward by s-expression, backward-sexp
- If point is on the end of an s-expression, move to the start.
- If point is on the start of an s-expression, move to the start of the prior s-expression
at the same level. If there is no prior s-expression, no movement occurs.
C-M-SPC Mark s-expression, place point at beginning of sexp and mark at the end, mark-sexp
C-M-@ Same as C-M-SPC.
C-M-k Kill s-expression, kill-sexp
C-M-t Transpose s-expressions, transpose-sexp
#+end_example
+ Improved sentence commands. Also fixes bugs, e.g. M-a in old matlab-mode can result in error
"Wrong number of arguments: (0 . 0), 1" and now works in matlab-ts-mode.
#+begin_example
M-e Move forward to next end of sentence, forward-sentence
M-a Move backward to start of sentence, backward-sentence
M-k Kill from point to end of sentence, kill-sentence
C-x DEL Kill back from point to start of sentence, backward-kill-sentence
#+end_example
+ Some older matlab-mode menu items and keybindings have been removed because there are
standard replacements. Examples:
- To comment or uncomment code use select the code and type =M-;= which is the standard
way to do this in Emacs. The older =C-c ;= and =C-c :" matlab only comment and uncomment
commands no longer exist.
- Completion - we used to have =M-TAB= to complete symbol and this has been replaced by
using LSP mode.
+ matlab-shell now has one correct ways of running code sections, via menu =MATLAB -> Code
Sections -> Run Section (C-c C-<return>)= or and the older =MATLAB -> Run Code Section=
(matlab-shell-run-code-section) because it was duplication and wasn't correctly handling all
cases.
+ Builtin items such as namespaces, functions, classes, enumerations, etc. provided by the
MATLAB/Simulink products are shown in =font-lock-builtin-face=. Using a different face for
builtins vs items you created improves readability. It also helps to avoid mistakes where you
override a builtin with a variable. The number of builtin items in the MATLAB/Simulink
R2025a.update1 product family is 153,627.
+ When creating a variable that matches a builtin item
matlab-ts-mode-variable-override-builtin-face. This makes it easy to see when you are
accidently shadowing a builtin function, class, etc. For example, in the following
we create a lines variable that shadows the MATLAB built-in lines function:
#+begin_src matlab
lines = ['line1', 'line2']
#+end_src
Using a non-builtin name for a variable results in the standard =font-lock-variable-name-face=
being used:
#+begin_src matlab
myLines = ['line1', 'line2']
#+end_src
+ MLint MATLAB code analyzer integration via flycheck. Flycheck is an improved on-the-fly
error reporting system when compared with the mlint integration in the older matlab-mode.
+ New "MATLAB -> View mlint code analyzer messages" menu item.
+ New "MATLAB -> View tree-sitter parse errors" menu item that lets one inspect
the parse errors found by the MATLAB tree-sitter backing the new matlab-ts-mode.
+ New "MATLAB -> Jump to function" menu item.
+ New "MATLAB -> Check setup" menu item that helps validate flycheck and lsp-mode are
setup correctly.
+ New "MATLAB -> Editing -> ..." submenu that contains helpful editing commands.
2. Added [[file:doc/matlab-netshell-for-windows.org][doc/matlab-netshell-for-windows.org]]. Commit [[https://github.com/mathworks/Emacs-MATLAB-Mode/commit/b0222ac2c067292b43fba91a60b39a262c6149d3][b0222ac]].
#+begin_example
+--------------- Emacs ----------------+ +------------ MATLAB ------------+
| | | |
| (1) M-x matlab-netshell-server-start | | (2) connect to Emacs |
| |<=======>| >> addpath <matlab-mode>/toolbox |
| (3) Visit script *.m files and use | | >> emacsinit |
| "MATLAB -> Code Sections" menu | | >> |
| or the key bindings | | |
+--------------------------------------+ +----------------------------------+
#+end_example
3. Setup imenu for *.tlc files. Commit [[https://github.com/mathworks/Emacs-MATLAB-Mode/commit/7d0d26a0312cf3a7b0cb07ff982f1b5274f96424][7d0d26a]] and [[https://github.com/mathworks/Emacs-MATLAB-Mode/commit/e3e6952d57955764d48e9f9432247903672297dc][e3e6952]].
4. Fix imenu for ~*.m~ files and added [[file:doc/matlab-imenu.org][doc/matlab-imenu.org]] on using it. Commit [[https://github.com/mathworks/Emacs-MATLAB-Mode/commit/a54d2061bd31c9cba32fc5e0e0ecf34b900e26d1][a54d206]].
Now typing ~M-g i~ (or ~M-x imenu~) when visiting a ~*.m~ file will let you quickly jump to
function declarations.
5. Indent first non-help comment. Commit [[https://github.com/mathworks/Emacs-MATLAB-Mode/commit/a63e0fe398fa0e49ef0ca71eb1371a0b45ce62cd][a63e0fe]].
#+begin_src matlab
function b = foo
% This is the help for function foo
% which can span multiple lines.
% This is a non-help comment for the following code
b = 1;
end
#+end_src
6. [[https://github.com/mathworks/MATLAB-language-server][MATLAB Language Server]], matlabls, for code navigation, code completion, go to definition,
find references, and more. See [[file:doc/matlab-language-server-lsp-mode.org][doc/matlab-language-server-lsp-mode.org]]. Commit [[https://github.com/mathworks/Emacs-MATLAB-Mode/commit/e9ab4fb8b0fedc0e769f4c7e0d86bd26a08567f8][e9ab4fb]].
7. Improved Emacs tramp remote *M-x matlab-shell*. Commit [[https://github.com/mathworks/Emacs-MATLAB-Mode/commit/64e1805d36a362111ac3518a4fd7428c60483079][64e1805]].
Prior to this commit, matlab-shell running through Emacs tramp partially. This commit enables
remote matlab-shell and enables remote debugging, hyperlinks, etc. See [[https://github.com/mathworks/Emacs-MATLAB-Mode/blob/default/doc/remote-matlab-shell.org][remote-matlab-shell.org]]
documentation.
8. Remove font-lock-constant-face from help comments. Commit [[https://github.com/mathworks/Emacs-MATLAB-Mode/commit/1d935b364dd90449a9dfa9a8743e275359096289][1d935b3]].
A general guideline for help comments is to capitalize functions such as PLOT as references and
matlab-mode used to make these a font-lock-constant-face inside of comments. However, often capital items are
not references and make comments look bad, so removed these. Likewise, there were other uses of
font-lock-constant-face that look odd, so removed these.
9. Revamped MATLAB code sections script support issues. Commit [[https://github.com/mathworks/Emacs-MATLAB-Mode/commit/e75ebf5a88b02833d700bcf9ee4419c5888caf12][e75ebf5]] and others.
- Added [[file:doc/matlab-code-sections.org][doc/matlab-code-sections.org]].
- MATLAB code sections is now a minor mode, *matlab-sections-minor-mode* which is automatically
enabled when in a MATLAB script. A MATLAB script contains one or more MATLAB commands or
function calls.
- When visiting a MATLAB *.m script, you now have *MATLAB -> Code Sections* menu which includes
all command and there's a help entry explaining how to use the code sections capabilities.
- The default key bindings for MATLAB code section functions are now ~C-c C-<KEY>~ and
~C-c M-<KEY>~, which means code sections key bindings work on system without the super
(aka Windows) key. Super key bindings can be added by customizing
~matlab-sections-use-super-key~.
: C-c C-SPC matlab-sections-mark-section
: C-c C-<up> matlab-sections-backward-section
: C-c C-<down> matlab-sections-forward-section
: C-c C-<left> matlab-sections-beginning-of-section
: C-c C-<right> matlab-sections-end-of-section
: C-c M-<up> matlab-sections-move-section-up
: C-c M-<down> matlab-sections-move-section-down
: C-c C-<return> matlab-sections-run-section
: C-c M-<return> matlab-sections-run-prior-sections
- Improved performance in detecting MATLAB *.m file type, which gives a small speedup to
matlab-mode.
- MATLAB code sections are now identified by header comments of form "%% description" and no
longer get confused with "%%%%%" comment blocks.
- Fixed [[https://github.com/mathworks/Emacs-MATLAB-Mode/issues/14][issue #14]] and many other fixes.
- Added tests, [[https://github.com/mathworks/Emacs-MATLAB-Mode/issues/8][issue 8]].
10. Enhanced *M-x matlab-shell* to search for MATLAB in standard installation locations if it is not
on the path. If we are unable to find MATLAB, we now generate an error explaining how to setup
your system to make matlab-shell work. Commit [[https://github.com/mathworks/Emacs-MATLAB-Mode/commit/9773232626919a6319e3ac36bc7e0cdd99c46585][9773232]].
11. Improved fill-paragraph to work when point is before a comment. Commit [[https://github.com/mathworks/Emacs-MATLAB-Mode/commit/8686c85cf376f90549d3aaf8478ed381f22282aa][8686c85]].
12. Add TAB completion in matlab-shell for MATLAB R2025a. Commit [[https://github.com/mathworks/Emacs-MATLAB-Mode/commit/e92fe818acd71c4bead7bdf837e791b5aa456d11][e92fe81]] and several followup
commits.
13. Fixed Emacs 30 lisp compiler warnings. Commit [[https://github.com/mathworks/Emacs-MATLAB-Mode/commit/89b585e6d935fd36176791caa66d4dad0405407b][89b585e]].
14. Fixed [[https://github.com/mathworks/Emacs-MATLAB-Mode/issues/56][issue #56]], *.m files within archives, e.g. foo.zip containing bar.m
* Release 6.3 Dec 8, 2024
This is the first [[https://elpa.gnu.org/packages//matlab-mode.html][ELPA matlab-mode]] release (commit [[https://github.com/mathworks/Emacs-MATLAB-Mode/tree/935137844e16551a5369f928d2591556be7fb9c2][9351378]]). This release provides:
1. *matlab-mode* for editing *.m MATLAB files
2. *M-x matlab-shell* for running and debugging MATLAB within Emacs (Unix-only)
3. *M-x matlab-netsell* for interacting with a separate MATLAB from Emacs on Microsoft Windows.
4. *Code sections* for working with MATLAB script code files.
5. *Org-mode* support for creating scientific papers using MATLAB and org babel.
6. *tlc-mode* for editing ~*.tlc~ files
* Older releases
matlab-mode was created in 1991. Change history from 2005 till now
can be found in https://github.com/mathworks/Emacs-MATLAB-Mode.
The prior location for matlab-mode was [[https://sourceforge.net/projects/matlab-emacs/][https://sourceforge.net/projects/matlab-emacs/]]. Locations
prior to sourceforge no longer exist.
See older history [[https://github.com/mathworks/Emacs-MATLAB-Mode/blob/2ff6f96294353f3f17757a2522a64c427929ff01/ChangeLog][ChangeLog]], [[https://github.com/mathworks/Emacs-MATLAB-Mode/blob/528a4fc79426adc7cf9a484d231dec7defd9c5f4/ChangeLog.old1][ChangeLog.old1]], [[https://github.com/mathworks/Emacs-MATLAB-Mode/blob/528a4fc79426adc7cf9a484d231dec7defd9c5f4/ChangeLog.old2][ChangeLog.old2]], and older [[https://github.com/mathworks/Emacs-MATLAB-Mode/blob/b7e170ee37a23b6852e461772de1c4e986bb6833/NEWS.org][NEWS.org]].
# LocalWords: showall ELPA MELPA fontification fontify sexp SPC LSP builtins MLint flycheck lsp
# LocalWords: netshell emacsinit imenu matlabls netsell sourceforge MMM YYYY emacsrunregion
|