[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#67925: 29.1; delete-rectangle fails on multi-column characters
From: |
awrhygty |
Subject: |
bug#67925: 29.1; delete-rectangle fails on multi-column characters |
Date: |
Thu, 21 Dec 2023 23:26:05 +0900 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
Eli Zaretskii <eliz@gnu.org> writes:
>> From: awrhygty@outlook.com
>> Cc: 67925@debbugs.gnu.org
>> Date: Thu, 21 Dec 2023 16:30:39 +0900
>>
>> Eli Zaretskii <eliz@gnu.org> writes:
>>
>> > Thanks. Does the patch below give good results?
>> >
>> > diff --git a/lisp/rect.el b/lisp/rect.el
>> > index 8dc188b..9049e32 100644
>> > --- a/lisp/rect.el
>> > +++ b/lisp/rect.el
>> > @@ -212,7 +212,10 @@ rectangle-dimensions
>> > (cons width height))))
>> >
>> > (defun delete-rectangle-line (startcol endcol fill)
>> > - (when (= (move-to-column startcol (if fill t 'coerce)) startcol)
>> > + ;; We use >= here, not =, for characters that use more than one
>> > + ;; column on display, when STARTCOL is in the middle of such a
>> > + ;; character.
>> > + (when (>= (move-to-column startcol (if fill t 'coerce)) startcol)
>> > (delete-region (point)
>> > (progn (move-to-column endcol 'coerce)
>> > (point)))))
>>
>> This patch gives similar result of kill-rectangle.
>> In the example above, I want all '4' characters moved to same column.
>
> How can that be done, when the first character takes 2 or more
> columns? Deleting the first character is IMO wrong, since the other
> lines leave the first character intact. Adding SPC to other lines is
> also wrong, since delete-rectangle is not supposed to _add_ columns.
I think wide characters may be replaced with SPC like TAB.
>> And TAB characters crossing the end column are not edited correctly
>> with delete-rectangle if indent-tabs-mode is on.
>>
>> 012345678
>> 8(TAB at head)
>> 012345678
>>
>> The text above is edited to the text below.
>> 45678
>> 8(TAB at head)
>> 45678
>>
>> If indent-tabs-mode is off, the result is the text below.
>> 45678
>> 8(four SPCs)
>> 45678
>
> This is a separate issue with the original code. It also happens with
> kill-rectangle, btw. We could fix it by temporarily binding
> indent-tabs-mode to nil inside these commands -- would that be
> acceptable? The result will be that the killed rectangle includes
> spaces, not the leading TAB.
I prefer that the killed rectangle has same column for each line.
If TAB is included when yanking, the current column affects the width of
the yanked string for each line.
- bug#67925: 29.1; delete-rectangle fails on multi-column characters, awrhygty, 2023/12/20
- bug#67925: 29.1; delete-rectangle fails on multi-column characters, Eli Zaretskii, 2023/12/20
- bug#67925: 29.1; delete-rectangle fails on multi-column characters, awrhygty, 2023/12/21
- bug#67925: 29.1; delete-rectangle fails on multi-column characters, Eli Zaretskii, 2023/12/21
- bug#67925: 29.1; delete-rectangle fails on multi-column characters,
awrhygty <=
- bug#67925: 29.1; delete-rectangle fails on multi-column characters, Eli Zaretskii, 2023/12/21
- bug#67925: 29.1; delete-rectangle fails on multi-column characters, Stefan Monnier, 2023/12/21
- bug#67925: 29.1; delete-rectangle fails on multi-column characters, Juri Linkov, 2023/12/22
- bug#67925: 29.1; delete-rectangle fails on multi-column characters, Eli Zaretskii, 2023/12/22
- bug#67925: 29.1; delete-rectangle fails on multi-column characters, Stefan Monnier, 2023/12/22
- bug#67925: 29.1; delete-rectangle fails on multi-column characters, Juri Linkov, 2023/12/23
- bug#67925: 29.1; delete-rectangle fails on multi-column characters, Eli Zaretskii, 2023/12/23
- bug#67925: 29.1; delete-rectangle fails on multi-column characters, Juri Linkov, 2023/12/24
- bug#67925: 29.1; delete-rectangle fails on multi-column characters, Stefan Kangas, 2023/12/24
- bug#67925: 29.1; delete-rectangle fails on multi-column characters, Eli Zaretskii, 2023/12/28