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
[email protected] wrote on 13/06/15 17:53:
>
> Message: 2
> Date: Sun, 7 Jun 2015 19:47:35 +0000
> From: Eric Ludlam <[email protected]>
> Subject: Re: [Matlab-emacs-discuss] recognizing comments
> To: "Van Zandt, Jim" <[email protected]>,
> "[email protected]"
> <[email protected]>
> Message-ID:
> <[email protected]>
> 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:[email protected]]
> Sent: Monday, May 11, 2015 3:37 PM
> To: [email protected]
> 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/matlab-emacs-discuss