bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#31240: 26.1; mouse-save-then-kill does not kill rectangles


From: martin rudalics
Subject: bug#31240: 26.1; mouse-save-then-kill does not kill rectangles
Date: Mon, 01 Oct 2018 10:33:52 +0200

> The problem with using just (count-lines (point-min) position) is that
> the return value
> is different when the point is on column 0 and when it is on column 1
> or greater.

OK.  (count-lines (point-min) (point-min)) returns 0 because START and
END are equal so let's assume you want to special-case that.  Now the
problem with your code is that

+          (line (progn
+                  (forward-line 0)
+                  (count-lines (point-min) position))))

probably doesn't do what you expect: The value of POSITION in the call
of 'count-lines' is the _same_ it was before the 'forward-line' call
because 'forward-line' only changes the value of point but not that of
POSITION.  So if you want a possible return value of 0 you have to
write

+          (line (progn
+                  (forward-line 0)
+                  (count-lines (point-min) (point)))))

instead.

> I
> needed to be sure that if the position was anywhere on line N, the
> result was N (with
> N starting at 0).

Agreed, once more.  You want to special-case POSITION on the first
line of the buffer.  But go the ends of the following two forms and
type C-x C-e on each:

(let ((position 3))
  (save-excursion
    (goto-char position)
    (forward-line 0)
    (count-lines (point-min) position)))

(let ((position 3))
  (save-excursion
    (goto-char position)
    (forward-line 0)
    (count-lines (point-min) (point))))

Here the first evaluation gets me 1 and the second 0.  I suppose it's
the latter you want.

martin





reply via email to

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