[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: invisible
From: |
martin rudalics |
Subject: |
Re: invisible |
Date: |
Sun, 02 Dec 2007 10:47:21 +0100 |
User-agent: |
Mozilla Thunderbird 1.0 (Windows/20041206) |
> Obviously conflating the two variables into one is a change visible to
> the user. I'm just saying that it would fix your bug as well.
It's not my bug. Which means, I don't have a user perspective here and
everything I say is purely speculative in this regard.
> And I think it's a choice that might make a lot of sense.
Maybe. Just that people have to be aware that any character they insert
after rear-sticky invisible text will become invisible too.
>>Because I'm not allowed to disable point-adjustment for the normal
>>`line-move-ignore-invisible' t case.
>
>
> AFAICT the reason is not that you're not allowed but that you haven't
> needed to do it. If you needed to do it, I don't think it'd be a big
> problem since line-move already tries to avoid invisible text (so
> point-adjustment shouldn't make much difference if any).
`line-move-ignore-invisible' is about _invisibility_ only. Adjusting
point is about invisibility, composition, intangibility, fields ...
Now, if I set `line-move-ignore-invisible' to nil I might want to stop
at the next invisible newline but still respect the remaining
properties. I understand that's what "conflating" is all about and I
agree that there's no peculiar reason why we should just consider
invisibility and not the rest. Moreover `line-move-ignore-invisible'
seems broken anyway and hard to get right.
> So I now think that setting disable-point-adjustment only in the
> interactive case is actually incorrect: it should also be set in the
> non-interactive case.
Currently point-adjustment affects point-setting only _after_ a command
is executed. `line-move-ignore-invisible' affects point-setting for
every single line move, regardless of whether this happens in a command
or how often this happens in a command.
Anyway. Is the attached patch about what you have in mind?
*** simple.el.~1.888.~ Sat Nov 10 09:23:20 2007
--- simple.el Sun Dec 2 10:40:22 2007
***************
*** 3593,3603 ****
(end-of-line)
(insert (if use-hard-newlines hard-newline "\n")))
(line-move arg nil nil try-vscroll))
! (if (interactive-p)
! (condition-case nil
! (line-move arg nil nil try-vscroll)
! ((beginning-of-buffer end-of-buffer) (ding)))
! (line-move arg nil nil try-vscroll)))
nil)
(defun previous-line (&optional arg try-vscroll)
--- 3593,3602 ----
(end-of-line)
(insert (if use-hard-newlines hard-newline "\n")))
(line-move arg nil nil try-vscroll))
! ;; Disable point-adjustment with `line-move-ignore-invisible' nil.
! (unless line-move-ignore-invisible
! (setq disable-point-adjustment t))
! (line-move arg nil nil try-vscroll))
nil)
(defun previous-line (&optional arg try-vscroll)
***************
*** 3619,3629 ****
to use and more reliable (no dependence on goal column, etc.)."
(interactive "p\np")
(or arg (setq arg 1))
! (if (interactive-p)
! (condition-case nil
! (line-move (- arg) nil nil try-vscroll)
! ((beginning-of-buffer end-of-buffer) (ding)))
! (line-move (- arg) nil nil try-vscroll))
nil)
(defcustom track-eol nil
--- 3618,3627 ----
to use and more reliable (no dependence on goal column, etc.)."
(interactive "p\np")
(or arg (setq arg 1))
! ;; Disable point-adjustment with `line-move-ignore-invisible' nil.
! (unless line-move-ignore-invisible
! (setq disable-point-adjustment t))
! (line-move (- arg) nil nil try-vscroll)
nil)
(defcustom track-eol nil
***************
*** 3746,3753 ****
most-positive-fixnum
(current-column))))
! (if (not (or (integerp selective-display)
! line-move-ignore-invisible))
;; Use just newline characters.
;; Set ARG to 0 if we move as many lines as requested.
(or (if (> arg 0)
--- 3744,3751 ----
most-positive-fixnum
(current-column))))
! (if (and (not (integerp selective-display))
! disable-point-adjustment)
;; Use just newline characters.
;; Set ARG to 0 if we move as many lines as requested.
(or (if (> arg 0)
***************
*** 3862,3868 ****
(save-excursion
;; Like end-of-line but ignores fields.
(skip-chars-forward "^\n")
! (while (and (not (eobp)) (invisible-p (point)))
(goto-char (next-char-property-change (point)))
(skip-chars-forward "^\n"))
(point))))
--- 3860,3867 ----
(save-excursion
;; Like end-of-line but ignores fields.
(skip-chars-forward "^\n")
! (while (and (not disable-point-adjustment)
! (not (eobp)) (invisible-p (point)))
(goto-char (next-char-property-change (point)))
(skip-chars-forward "^\n"))
(point))))
***************
*** 3944,3950 ****
(beginning-of-line)
(move-to-column col))
! (when (and line-move-ignore-invisible
(not (bolp)) (invisible-p (1- (point))))
(let ((normal-location (point))
(normal-column (current-column)))
--- 3943,3949 ----
(beginning-of-line)
(move-to-column col))
! (when (and (not disable-point-adjustment)
(not (bolp)) (invisible-p (1- (point))))
(let ((normal-location (point))
(normal-column (current-column)))