[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#21072: Brave new mark-defun (and a testing tool)

From: npostavs
Subject: bug#21072: Brave new mark-defun (and a testing tool)
Date: Tue, 18 Apr 2017 20:04:35 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)

Marcin Borkowski <address@hidden> writes:

>> Oh, right, I thought it was doing backward-comment, but the difference
>> is that it stops at blank lines, thus the *non-redundant* looking-at
>> call.
>> I wonder if that's a sensible thing to do for languages that have
>> multiline comments though, e.g. Javascript:
>> /*
>> This function returns 0
>> */
>> function foo () {
>>     return 0;
>> }
>> Although we might say that such comments should have "*" on the empty lines.
> Definitely.  OTOH, what if they don't...?  I'm not sure how to detect
> such a situation.  Any ideas?

    (defun beginning-of-defun-comments (&optional arg)
      "Move to the beginning of ARGth defun, including comments."
      (interactive "^p")
      (unless arg (setq arg 1))
      (beginning-of-defun arg)
      (while (let ((pt (prog1 (point) (forward-line -1)))
                   (ppss (syntax-ppss)))
               (cond ((nth 4 ppss) (goto-char (nth 8 ppss)))
                     ((and (parse-partial-sexp
                            (point) (line-end-position) nil t ppss)
                           (not (bolp)) (eolp)))
                     (t (goto-char pt) nil)))))

However there will always be some comment style that doesn't work, e.g.

    // Some description followed by a blank.

    function name(arg) {


Another option is to give up the comment marking, it seems a bit
complicated to implement and explain to users.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]