all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: awrhygty@outlook.com
To: Eli Zaretskii <eliz@gnu.org>
Cc: 67925@debbugs.gnu.org
Subject: bug#67925: 29.1; delete-rectangle fails on multi-column characters
Date: Thu, 21 Dec 2023 23:26:05 +0900	[thread overview]
Message-ID: <TYZPR01MB392074B6D4ED4843EBAB6FA1C395A@TYZPR01MB3920.apcprd01.prod.exchangelabs.com> (raw)
In-Reply-To: <831qbggd50.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 21 Dec 2023 03:42:50 -0500")

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.





  reply	other threads:[~2023-12-21 14:26 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-20 10:58 bug#67925: 29.1; delete-rectangle fails on multi-column characters awrhygty
2023-12-20 14:09 ` Eli Zaretskii
2023-12-21  7:30   ` awrhygty
2023-12-21  8:42     ` Eli Zaretskii
2023-12-21 14:26       ` awrhygty [this message]
2023-12-21 16:46         ` Eli Zaretskii
2023-12-21 21:12           ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-12-22  7:56           ` Juri Linkov
2023-12-22 11:45             ` Eli Zaretskii
2023-12-22 14:27             ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-12-23 17:30               ` Juri Linkov
2023-12-23 18:07                 ` Eli Zaretskii
2023-12-24  8:31                   ` Juri Linkov
2023-12-24 14:52                     ` Stefan Kangas
2023-12-28  9:01                       ` Eli Zaretskii
2024-01-03 19:00                         ` awrhygty
2024-01-03 19:31                           ` Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=TYZPR01MB392074B6D4ED4843EBAB6FA1C395A@TYZPR01MB3920.apcprd01.prod.exchangelabs.com \
    --to=awrhygty@outlook.com \
    --cc=67925@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.