unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Akib Azmain Turja via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
To: Eli Zaretskii <eliz@gnu.org>
Cc: gerd.moellmann@gmail.com, 57607@debbugs.gnu.org
Subject: bug#57607: Feature request: Use the character cell on bottom-right corner of a terminal
Date: Tue, 04 Oct 2022 13:22:51 +0600	[thread overview]
Message-ID: <87edvohx2s.fsf@disroot.org> (raw)
In-Reply-To: <83y1twwv7w.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 03 Oct 2022 22:41:39 +0300")

[-- Attachment #1: Type: text/plain, Size: 2568 bytes --]

Eli Zaretskii <eliz@gnu.org> writes:

>> Cc: gerd.moellmann@gmail.com
>> Date: Mon, 03 Oct 2022 14:31:53 +0600
>> From:  Akib Azmain Turja via "Bug reports for GNU Emacs,
>>  the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
>> 
>> I have implemented it.  Implementing it was easier than I thought.  Here
>> is the patch:
>
> Thanks.  But could you please describe the idea of the patch in some
> comment?  It is hard to follow the code, especially since the diff has
> many pure whitespace changes.

The idea is that you write the string just like before (for example, you
want to write "hello" in a five columns width terminal, so you write
only "hell", so that the line shows "hell "), then move a character
backward and write the last glyph (write "o", so that the line shows
"helo "), move a character backward again and arrange that after writing
the next glyph, the character on the current position will be pushed
towards right and write the glyph before the last one (write "l", now
the line shows "hello").

Should I add the explanation to the function as comment?

>
> Also, this:
>
>> +      /* Go to the previous position. */
>> +      cmgoto (tty, curY (tty), curX (tty) - 1);
>> +      cmplus (tty, 1);
>
> Seem to assume the last character takes just one column?  What about
> characters whose width is 2 columns?

Yes, I assume that.  I don't think any multi-char width glyph reach this
function (I think they are converted to single column width glyphs, for
example "^L" is converted to "^" and "L").  The reason of the assumption
is the following code:

--8<---------------cut here---------------start------------->8---
  if (AutoWrap (tty)
      && curY (tty) + 1 == FRAME_TOTAL_LINES (f)
      && (curX (tty) + len) == FRAME_COLS (f))
    len --;
--8<---------------cut here---------------end--------------->8---

Which also assumes the same.

>
> And finally, it would be nice to avoid so much code duplication
> between tty_write_glyphs and tty_write_glyphs_with_face.  Is that
> feasible?

Yes, I think so.  I think it possible to just add a new argument
"face_id" to tty_write_glyphs would the trick.  tty_write_glyph will try
to use "face_id" if it is specified, otherwise fallback to the face_id
in the string.  But how to "not" specify a face_id?  Would a NULL work?

-- 
Akib Azmain Turja

Find me on Mastodon at @akib@hostux.social.

This message is signed by me with my GnuPG key.  Its fingerprint is:

    7001 8CE5 819F 17A3 BBA6  66AF E74F 0EFA 922A E7F5

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

  reply	other threads:[~2022-10-04  7:22 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <87wnakl5md.fsf@disroot.org>
2022-09-06  6:59 ` bug#57607: Feature request: Use the character cell on bottom-right corner of a terminal Akib Azmain Turja via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-09-06  8:03   ` Gerd Möllmann
2022-09-06 10:07     ` Akib Azmain Turja via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-09-06 12:00       ` Gerd Möllmann
2022-09-06 15:10         ` Akib Azmain Turja via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-09-07  4:58           ` Gerd Möllmann
2022-09-07 12:46             ` Akib Azmain Turja via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-09-07 12:58               ` Gerd Möllmann
2022-09-07 15:39             ` Akib Azmain Turja via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-09-07 17:26             ` Akib Azmain Turja via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-09-08  5:49               ` Gerd Möllmann
2022-09-08 11:28                 ` Akib Azmain Turja via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-09-08 12:35                   ` Gerd Möllmann
2022-09-08 14:47                     ` Akib Azmain Turja via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-09-11  9:00                       ` Akib Azmain Turja via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-09-11 10:08                         ` Gerd Möllmann
2022-09-11 10:39                           ` Akib Azmain Turja via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-03  8:31                   ` Akib Azmain Turja via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-03 19:41                     ` Eli Zaretskii
2022-10-04  7:22                       ` Akib Azmain Turja via Bug reports for GNU Emacs, the Swiss army knife of text editors [this message]
2022-10-04  8:07                         ` Eli Zaretskii
2022-10-04 12:00                           ` Akib Azmain Turja via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-04 12:54                             ` Eli Zaretskii
2022-10-07 13:10                               ` Akib Azmain Turja via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-07 19:30                                 ` Eli Zaretskii
2022-10-04 13:05                             ` Akib Azmain Turja via Bug reports for GNU Emacs, the Swiss army knife of text editors

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

  List information: https://www.gnu.org/software/emacs/

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

  git send-email \
    --in-reply-to=87edvohx2s.fsf@disroot.org \
    --to=bug-gnu-emacs@gnu.org \
    --cc=57607@debbugs.gnu.org \
    --cc=akib@disroot.org \
    --cc=eliz@gnu.org \
    --cc=gerd.moellmann@gmail.com \
    /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 public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).