[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: adaptive-fill-mode and auto-fill-mode
From: |
martin rudalics |
Subject: |
Re: adaptive-fill-mode and auto-fill-mode |
Date: |
Mon, 09 Oct 2006 14:35:31 +0200 |
User-agent: |
Mozilla Thunderbird 1.0 (Windows/20041206) |
> Then how 'bout the 100% guaranteed untested
> patch below.
Neat. I attached a 50% unguaranteed tested revision.
>>... but the string at compos is ";; >" ...
>
>
> Not necessarily. I may compute this in adaptive-fill-function straight from
> the first line, (when using auto-fill on the first line).
... no matter what you compute in `adaptive-fill-function' the string at
compos is the string at compos is the ...
>>... if compos is not at line beginning the prefix is rejected.
>
>
> Where? Why?
In my first patch. The current one doesn't reject it any more.
>>I fail to understand you here. If the comment at compos doesn't match
>>the prefix why should I want to insert the prefix on the next line?
>
>
> Why not?
Your own patch might impede you. If you manually change the
comment-start sequence at compos or the whitespace preceding it, the
prefix won't match the comment at compos any more and hence won't be
used.
>>>Have you tried
>>>comment-auto-fill-only-comments?
>
>
>>It doesn't fill doc-strings.
>
>
> But maybe it's the right place to introduce such a feature.
> Basically extend this var so you can say "fill in FOO" where FOO is the list
> of possible contexts, such as `comment', `string', `doc', `code'?
If someone is interested I'll write it.
*** newcomment.el.~1.96.~ Mon Aug 21 14:35:24 2006
--- newcomment.el Mon Oct 9 11:23:40 2006
***************
*** 238,244 ****
(defcustom comment-empty-lines nil
"If nil, `comment-region' does not comment out empty lines.
If t, it always comments out empty lines.
! if `eol' it only comments out empty lines if comments are
terminated by the end of line (i.e. `comment-end' is empty)."
:type '(choice (const :tag "Never" nil)
(const :tag "Always" t)
--- 238,244 ----
(defcustom comment-empty-lines nil
"If nil, `comment-region' does not comment out empty lines.
If t, it always comments out empty lines.
! If `eol' it only comments out empty lines if comments are
terminated by the end of line (i.e. `comment-end' is empty)."
:type '(choice (const :tag "Never" nil)
(const :tag "Always" t)
***************
*** 1124,1135 ****
:group 'comment)
(defun comment-valid-prefix-p (prefix compos)
! (or
! ;; Accept any prefix if the current comment is not EOL-terminated.
! (save-excursion (goto-char compos) (comment-forward) (not (bolp)))
! ;; Accept any prefix that starts with a comment-start marker.
! (string-match (concat "\\`[ \t]*\\(?:" comment-start-skip "\\)")
! prefix)))
;;;###autoload
(defun comment-indent-new-line (&optional soft)
--- 1124,1169 ----
:group 'comment)
(defun comment-valid-prefix-p (prefix compos)
! "Check that the adaptive-fill-prefix is consistent with the context.
! PREFIX is the prefix (presumably guessed by `adaptive-fill-mode').
! COMPOS is the position of the beginning of the comment we're in, or nil
! if we're not inside a comment."
! ;; This consistency checking is mostly needed to workaround the limitation
! ;; of auto-fill-mode whose paragraph-determination doesn't pay attention
! ;; to comment boundaries.
! (if (null compos)
! ;; We're not inside a comment: the prefix shouldn't match
! ;; a comment-starter.
! (not (and comment-start comment-start-skip
! (string-match comment-start-skip prefix)))
! (or
! ;; Accept any prefix if the current comment is not EOL-terminated.
! (save-excursion (goto-char compos) (comment-forward) (not (bolp)))
! ;; Accept any prefix that starts with the same comment-start marker
! ;; as the current one.
! (when (string-match (concat "\\`[ \t]*\\(?:" comment-start-skip "\\)")
! prefix)
! (let ((prefix-com (comment-string-strip (match-string 0 prefix) nil
t)))
! (string-match "\\`[ \t]*" prefix-com)
! (let* ((prefix-space (match-string 0 prefix-com))
! (prefix-indent (string-width prefix-space))
! (prefix-comstart (substring prefix-com (match-end 0))))
! (save-excursion
! (goto-char compos)
! ;; The comstart marker is the same.
! (and (looking-at comment-start-skip)
! (string-equal
! prefix-comstart
! (comment-string-strip (match-string 0) nil t))
! ;; The indentation as well.
! (or (= prefix-indent
! (- (current-column) (current-left-margin)))
! ;; Check the indentation in two different ways, just
! ;; to try and avoid most of the potential funny cases.
! (equal prefix-space
! (buffer-substring (point)
! (progn (move-to-left-margin)
! (point)))))))))))))
;;;###autoload
(defun comment-indent-new-line (&optional soft)
***************
*** 1179,1189 ****
(setq comin (point))))
(cond
! ;; If there's an adaptive prefix, use it unless we're inside
! ;; a comment and the prefix is not a comment starter.
! ((and fill-prefix
! (or (not compos)
! (comment-valid-prefix-p fill-prefix compos)))
(indent-to-left-margin)
(insert-and-inherit fill-prefix))
;; If we're not inside a comment, just try to indent.
--- 1213,1220 ----
(setq comin (point))))
(cond
! ;; If there's an adaptive prefix, use it provided it's valid.
! ((and fill-prefix (comment-valid-prefix-p fill-prefix compos))
(indent-to-left-margin)
(insert-and-inherit fill-prefix))
;; If we're not inside a comment, just try to indent.
- adaptive-fill-mode and auto-fill-mode, martin rudalics, 2006/10/07
- Re: adaptive-fill-mode and auto-fill-mode, Stefan Monnier, 2006/10/07
- Re: adaptive-fill-mode and auto-fill-mode, martin rudalics, 2006/10/07
- Re: adaptive-fill-mode and auto-fill-mode, Stefan Monnier, 2006/10/08
- Re: adaptive-fill-mode and auto-fill-mode, martin rudalics, 2006/10/08
- Re: adaptive-fill-mode and auto-fill-mode, Stefan Monnier, 2006/10/08
- Re: adaptive-fill-mode and auto-fill-mode, martin rudalics, 2006/10/08
- Re: adaptive-fill-mode and auto-fill-mode, Stefan Monnier, 2006/10/08
- Re: adaptive-fill-mode and auto-fill-mode,
martin rudalics <=
- Re: adaptive-fill-mode and auto-fill-mode, Stefan Monnier, 2006/10/09
- Re: adaptive-fill-mode and auto-fill-mode, martin rudalics, 2006/10/09
- Re: adaptive-fill-mode and auto-fill-mode, Stefan Monnier, 2006/10/09
- Re: adaptive-fill-mode and auto-fill-mode, Stefan Monnier, 2006/10/08