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

Reply via email to