Hi Eric, I have tried the tweaked version, but found that it doesn't work with a line which contains a % as part of the code, e.g.
title(sprintf('Q_o(1) %.2e; Q_o(2) %.2e',mean(Q_o))) % test With the original version, M-; jumps to "% test", but with the new version it treats the "%.2e...." as a comment and moves it to the preferred start column. Henrik matlab-emacs-discuss-requ...@lists.sourceforge.net wrote on 13/06/15 17:53: > > Message: 2 > Date: Sun, 7 Jun 2015 19:47:35 +0000 > From: Eric Ludlam <eric.lud...@mathworks.com> > Subject: Re: [Matlab-emacs-discuss] recognizing comments > To: "Van Zandt, Jim" <j...@mitre.org>, > "matlab-emacs-discuss@lists.sourceforge.net" > <matlab-emacs-discuss@lists.sourceforge.net> > Message-ID: > <907ab180cc324a53bb96c56e22a9a...@ex13amer-01-ah.ad.mathworks.com> > Content-Type: text/plain; charset="us-ascii" > > Hi Jim, > > Here is a tweaked version of the Matlab-comment function that should fix the > problem you found. If it works for you let me know and I can update it. > > Enjoy > Eric > > (defun matlab-comment () > "Add a comment to the current line." > (interactive) > (cond ((matlab-ltype-empty) ; empty line > (matlab-comm-from-prev) > (if (matlab-lattr-comm) > (skip-chars-forward " \t%") > (insert matlab-comment-line-s) > (matlab-indent-line))) > ((matlab-ltype-comm) ; comment line > (matlab-comm-from-prev) > (skip-chars-forward " \t%")) > ((matlab-lattr-comm) ; code line w/ > comment > (beginning-of-line) > (re-search-forward "[^%]%") > (forward-char -1) > (if (> (current-column) comment-column) > (delete-horizontal-space)) > (if (< (current-column) comment-column) (indent-to > comment-column)) > (skip-chars-forward "% \t")) > (t > ; code line w/o comment > (end-of-line) > (re-search-backward "[^ \t\n^]" 0 t) > (forward-char) > (delete-horizontal-space) > (if (< (current-column) comment-column) > (indent-to comment-column) > (insert " ")) > (insert matlab-comment-on-line-s)))) > > From: Van Zandt, Jim [mailto:j...@mitre.org] > Sent: Monday, May 11, 2015 3:37 PM > To: matlab-emacs-discuss@lists.sourceforge.net > Subject: [Matlab-emacs-discuss] recognizing comments > > I have noticed a small problem in the recognition of comments. I can use M-; > to insert a comment on the current line. I should be able to use the same > command to move point to an existing comment on the current line, with the > side effect of moving that comment to the preferred start column. Actually > that does work if the comment starts with "% ", but fails if the percent is > followed by something other than a space. > > Suppose I am editing this file with point anywhere on the third line: > > function foo > a = 3; > b = 4; %first comment > c = 5; > d = 6; > e = 7; % second comment > f = 8; > > If I press M-; I get: > > function foo > a = 3; > b = 4; %first comment > c = 5; > d = 6; > e = 7; % second comment > f = 8; > > With point on any other line, I get the expected result. > > I expect this could be fixed by adjusting a regular expression, but I could > not follow the logic well enough to find it. > > > - Jim Van Zandt > ------------------------------------------------------------------------------ _______________________________________________ Matlab-emacs-discuss mailing list Matlab-emacs-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matlab-emacs-discuss