From: Ergus <spacibba@aol.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: emacs-devel@gnu.org
Subject: Re: Fill column indicator functionality
Date: Fri, 5 Apr 2019 20:11:33 +0200 [thread overview]
Message-ID: <20190405181133.weuyq7yecuekolit@Ergus> (raw)
In-Reply-To: <83pnq0bhef.fsf@gnu.org>
Hi Eli:
On Fri, Apr 05, 2019 at 06:28:40PM +0300, Eli Zaretskii wrote:
>> Date: Fri, 05 Apr 2019 16:06:17 +0300
>> From: Eli Zaretskii <eliz@gnu.org>
>> Cc: emacs-devel@gnu.org
>>
>> Once you can reproduce the problem, I suggest to use the macro
>> FACE_FOR_CHAR to find the ID of a face suitable for displaying the
>> indicator character, instead of using DEFAULT_FACE_ID. You can find
>> examples of using this macro elsewhere in xdisp.c.
>
>On second thought, I think using FACE_FOR_CHAR would produce
>unpleasant results. If the font required to display U+2502 is not the
>default font, it could be higher than the default font, which will
>cause the line height become larger on those screen lines where the
>indicator is displayed. The result will cause complaints.
>
I have a version already implemented with this solution and I don't
like it for the reasons you expose.
>So I think we should insist on being able to display the indicator
>character by the default face's font. Whether this is possible could
>be tested by comparing the font returned by internal-char-font and the
>default face's font returned by face-font. Like this:
>
> (if (eq (aref (car (internal-char-font nil ?│)) 0)
> w(face-font 'default))
> ;; can use the default font for U+2502
>
>(But we should use the actual value of
>display-fill-column-indicator-char instead of the literal character.)
>
>WDYT?
Actually this is what we have now:
(define-minor-mode display-fill-column-indicator-mode
"Toggle display fill column indicator.
This uses `display-fill-column-indicator' internally.
To change the position of the column displayed by default,
customize `display-fill-column-indicator-column' you can change the
character for the indicator setting `display-fill-column-indicator-character'."
:lighter nil
(if display-fill-column-indicator-mode
(progn
(setq display-fill-column-indicator t)
(unless display-fill-column-indicator-character
(if (char-displayable-p ?\u2502)
(setq display-fill-column-indicator-character ?\u2502)
(setq display-fill-column-indicator-character ?|))))
(setq display-fill-column-indicator nil)))
I think we only need to extend the inner if with your condition, but I
got an error because (internal-char-font nil ?│) always return nil in a
terminal and aref has issues with that.
Debugger entered--Lisp error: (wrong-type-argument arrayp nil)
aref(nil 0)
eval((aref (car (internal-char-font nil 9474)) 0) nil)
elisp--eval-last-sexp(nil)
#f(compiled-function (eval-last-sexp-arg-internal) "Evaluate sexp before point; print value in the echo area.\nInteractively, with a non `-' prefix argument, print output into\ncurrent buffer.\n\nNormally, this function truncates long output according to the\nvalue of the variables `eval-expression-print-length' and\n`eval-expression-print-level'. With a prefix argument of zero,\nhowever, there is no such truncation.\nInteger values are printed in several formats (decimal, octal,\nand hexadecimal). When the prefix argument is -1 or the value\ndoesn't exceed `eval-expression-print-maximum-character', an\ninteger value is also printed as a character of that codepoint.\n\nIf `eval-expression-debug-on-error' is non-nil, which is the default,\nthis command arranges for all errors to enter t
he debugger." (interactive "P") #<bytecode 0x1fdfdd428807>)(nil)
apply(#f(compiled-function (eval-last-sexp-arg-internal) "Evaluate sexp before point; print value in the echo area.\nInteractively, with a non `-' prefix argument, print output into\ncurrent buffer.\n\nNormally, this function truncates long output according to the\nvalue of the variables `eval-expression-print-length' and\n`eval-expression-print-level'. With a prefix argument of zero,\nhowever, there is no such truncation.\nInteger values are printed in several formats (decimal, octal,\nand hexadecimal). When the prefix argument is -1 or the value\ndoesn't exceed `eval-expression-print-maximum-character', an\ninteger value is also printed as a character of that codepoint.\n\nIf `eval-expression-debug-on-error' is non-nil, which is the default,\nthis command arranges for all errors to e
nter the debugger." (interactive "P") #<bytecode 0x1fdfdd428807>) nil)
eval-last-sexp(nil)
funcall-interactively(eval-last-sexp nil)
call-interactively(eval-last-sexp nil nil)
command-execute(eval-last-sexp)
In a gui I get this error:
Debugger entered--Lisp error: (wrong-type-argument arrayp #<font-object "-1ASC-Liberation Mono-normal-normal-normal-*-15-*-*-*-*-0-iso10646-1">)
aref(#<font-object "-1ASC-Liberation Mono-normal-normal-normal-*-15-*-*-*-*-0-iso10646-1"> 0)
eval((aref (car (internal-char-font nil 9474)) 0) nil)
elisp--eval-last-sexp(nil)
eval-last-sexp(nil)
funcall-interactively(eval-last-sexp nil)
call-interactively(eval-last-sexp nil nil)
command-execute(eval-last-sexp)
Could we use something else?
next prev parent reply other threads:[~2019-04-05 18:11 UTC|newest]
Thread overview: 192+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-03-18 1:03 Fill column indicator functionality Ergus
2019-03-18 3:35 ` Eli Zaretskii
2019-03-18 11:42 ` Ergus
2019-03-18 17:10 ` Eli Zaretskii
2019-04-02 12:42 ` Ergus
2019-04-02 13:03 ` Óscar Fuentes
2019-04-02 13:25 ` Óscar Fuentes
2019-04-02 13:37 ` Ergus
2019-04-02 15:07 ` Eli Zaretskii
2019-04-02 15:35 ` Ergus
2019-04-02 15:44 ` Eli Zaretskii
2019-04-02 16:36 ` Ergus
2019-04-02 16:48 ` Eli Zaretskii
2019-04-02 17:00 ` Ergus
2019-04-02 17:26 ` Eli Zaretskii
2019-04-02 17:48 ` Ergus
2019-04-02 18:28 ` Eli Zaretskii
2019-04-02 21:22 ` Ergus
2019-04-03 5:20 ` Eli Zaretskii
2019-04-03 10:22 ` Ergus
2019-04-03 11:11 ` Eli Zaretskii
2019-04-05 9:10 ` Robert Pluim
2019-04-05 10:36 ` Ergus
2019-04-05 11:47 ` Eli Zaretskii
2019-04-05 12:13 ` Robert Pluim
2019-04-05 12:46 ` Eli Zaretskii
2019-04-05 14:09 ` Robert Pluim
2019-04-05 14:13 ` Eli Zaretskii
2019-04-05 14:38 ` Eli Zaretskii
2019-04-05 15:04 ` Ergus
2019-04-05 15:17 ` Eli Zaretskii
2019-04-05 17:30 ` Ergus
2019-04-05 19:05 ` Eli Zaretskii
2019-04-05 20:03 ` Ergus
2019-04-05 21:10 ` Óscar Fuentes
2019-04-05 22:01 ` Ergus
2019-04-05 22:20 ` Óscar Fuentes
2019-04-06 6:49 ` Eli Zaretskii
2019-04-06 11:06 ` Ergus
2019-04-06 12:53 ` Eli Zaretskii
2019-04-06 6:51 ` Eli Zaretskii
2019-04-06 13:21 ` Eli Zaretskii
2019-04-06 15:20 ` Ergus
2019-04-06 16:00 ` Eli Zaretskii
2019-04-06 18:59 ` Ergus
2019-04-06 19:07 ` Eli Zaretskii
2019-04-06 19:51 ` Ergus
2019-04-07 18:19 ` Ergus
2019-04-07 18:31 ` Eli Zaretskii
2019-04-07 18:35 ` Ergus
2019-04-07 18:38 ` Ergus
2019-04-07 19:02 ` Eli Zaretskii
2019-04-07 20:05 ` Ergus
2019-04-08 2:27 ` Eli Zaretskii
2019-04-08 8:51 ` Ergus
2019-04-08 14:57 ` Eli Zaretskii
2019-04-08 16:04 ` Ergus
2019-04-12 13:46 ` Ergus
2019-04-12 13:54 ` Eli Zaretskii
2019-05-01 11:08 ` Ergus
2019-05-03 13:19 ` Eli Zaretskii
2019-05-03 14:14 ` Basil L. Contovounesios
2019-05-03 15:10 ` Eli Zaretskii
2019-05-03 15:25 ` Basil L. Contovounesios
2019-05-03 16:21 ` Eli Zaretskii
2019-05-03 16:18 ` Ergus
2019-05-03 17:49 ` Ergus
2019-05-03 18:32 ` Eli Zaretskii
2019-05-03 18:39 ` Eli Zaretskii
2019-05-03 21:05 ` Ergus
2019-05-04 6:54 ` Eli Zaretskii
2019-05-04 9:37 ` Ergus
2019-05-04 11:04 ` Eli Zaretskii
2019-05-04 11:29 ` Óscar Fuentes
2019-05-04 15:44 ` Alp Aker
2019-05-04 15:59 ` Eli Zaretskii
2019-05-04 16:32 ` Eli Zaretskii
2019-05-04 16:32 ` Alp Aker
2019-05-04 16:36 ` Eli Zaretskii
2019-05-04 16:38 ` Alp Aker
2019-05-04 16:42 ` Eli Zaretskii
2019-05-05 14:40 ` Ergus
2019-05-04 16:42 ` Ergus
2019-05-03 14:34 ` Basil L. Contovounesios
2019-05-03 15:31 ` Alp Aker
2019-04-07 20:51 ` Ergus
2019-04-07 21:23 ` Stefan Monnier
2019-04-07 21:37 ` Ergus
2019-04-07 21:39 ` Stefan Monnier
2019-04-05 13:06 ` Eli Zaretskii
2019-04-05 15:28 ` Eli Zaretskii
2019-04-05 18:11 ` Ergus [this message]
2019-04-05 19:03 ` Eli Zaretskii
2019-04-05 21:15 ` Ergus
2019-04-06 10:13 ` Robert Pluim
2019-04-06 12:54 ` Eli Zaretskii
2019-04-05 11:44 ` Eli Zaretskii
2019-04-05 12:09 ` Robert Pluim
2019-04-05 12:44 ` Eli Zaretskii
2019-04-05 13:21 ` Eli Zaretskii
2019-04-05 13:47 ` Robert Pluim
2019-04-05 14:08 ` Robert Pluim
2019-04-03 12:13 ` Stefan Monnier
2019-04-02 23:11 ` Dmitry Gutov
2019-04-02 17:01 ` Robert Pluim
2019-04-02 17:26 ` Ergus
2019-04-02 17:50 ` Robert Pluim
-- strict thread matches above, loose matches on Subject: below --
2019-05-04 22:51 Keith David Bershatsky
2019-03-15 16:59 Drew Adams
2019-03-15 18:21 ` Eli Zaretskii
2019-03-15 19:18 ` Drew Adams
2019-03-15 19:30 ` Eli Zaretskii
2019-03-15 19:51 ` Ergus
2019-02-05 10:53 Ergus
2019-02-05 16:41 ` Eli Zaretskii
2019-02-05 18:47 ` Ergus
2019-02-05 19:56 ` Drew Adams
2019-02-05 23:32 ` Ergus
2019-02-06 16:08 ` Eli Zaretskii
2019-02-06 20:48 ` John Yates
2019-02-06 22:25 ` Ergus
2019-02-07 1:41 ` Basil L. Contovounesios
2019-02-07 14:31 ` Eli Zaretskii
2019-02-10 22:04 ` Ergus
2019-02-11 15:55 ` Eli Zaretskii
2019-02-11 16:56 ` Jimmy Aguilar Mena
2019-02-11 17:13 ` Eli Zaretskii
2019-03-08 18:57 ` Ergus
2019-03-08 20:06 ` Eli Zaretskii
2019-03-09 13:22 ` Ergus
2019-03-09 14:10 ` Eli Zaretskii
2019-03-11 10:48 ` Ergus
2019-03-11 15:30 ` Eli Zaretskii
2019-03-11 19:58 ` Andy Moreton
2019-03-11 20:24 ` Eli Zaretskii
2019-03-12 15:29 ` Ergus
2019-03-12 16:19 ` Eli Zaretskii
2019-03-12 19:20 ` Ergus
2019-03-13 16:19 ` Eli Zaretskii
2019-03-13 20:02 ` Ergus
2019-03-13 20:09 ` Eli Zaretskii
2019-03-14 3:02 ` Ergus
2019-03-14 6:40 ` Eli Zaretskii
2019-03-14 16:51 ` Ergus
2019-03-14 17:59 ` Andreas Schwab
2019-03-14 18:22 ` Eli Zaretskii
[not found] ` <20190314211313.giyz7p6jtmquabea@Ergus>
[not found] ` <83bm2c1smi.fsf@gnu.org>
2019-03-15 20:56 ` Ergus
2019-03-15 22:52 ` Óscar Fuentes
2019-03-15 23:22 ` Ergus
2019-03-15 23:47 ` Óscar Fuentes
2019-03-16 6:50 ` Ergus
2019-03-16 7:48 ` Eli Zaretskii
2019-03-16 7:42 ` Eli Zaretskii
2019-03-16 12:26 ` Eli Zaretskii
2019-03-17 17:28 ` Alp Aker
2019-03-17 18:03 ` Ergus
2019-03-17 18:40 ` Eli Zaretskii
2019-03-16 9:36 ` Ergus
2019-03-16 12:40 ` Eli Zaretskii
2019-03-14 21:28 ` Óscar Fuentes
2019-03-14 23:54 ` Ergus
2019-03-14 18:58 ` Clément Pit-Claudel
2019-03-15 7:30 ` Eli Zaretskii
2019-03-15 12:44 ` Clément Pit-Claudel
2019-03-15 14:07 ` Óscar Fuentes
2019-03-15 14:54 ` Clément Pit-Claudel
2019-03-15 15:15 ` Óscar Fuentes
2019-03-15 15:30 ` Clément Pit-Claudel
2019-03-15 14:12 ` Eli Zaretskii
2019-03-15 14:35 ` Clément Pit-Claudel
2019-03-15 16:13 ` Eli Zaretskii
2019-03-15 18:26 ` Clément Pit-Claudel
2019-03-15 19:14 ` Eli Zaretskii
2019-03-15 15:13 ` Stefan Monnier
2019-03-15 13:00 ` Alp Aker
2019-03-15 13:30 ` Mattias Engdegård
2019-03-15 14:24 ` Eli Zaretskii
2019-03-15 15:05 ` Mattias Engdegård
2019-03-15 15:54 ` Eli Zaretskii
2019-03-15 15:09 ` Stefan Monnier
2019-03-15 15:56 ` Eli Zaretskii
2019-03-15 13:54 ` Eli Zaretskii
2019-03-15 14:19 ` Alp Aker
2019-03-15 14:58 ` Clément Pit-Claudel
2019-03-16 15:07 ` Johan Bockgård
2019-03-16 15:22 ` Clément Pit-Claudel
2019-03-15 15:43 ` Eli Zaretskii
2019-03-15 17:24 ` Óscar Fuentes
2019-03-15 18:28 ` Clément Pit-Claudel
2019-03-15 14:35 ` Alp Aker
2019-03-09 18:02 ` John Yates
2019-03-09 18:23 ` 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
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=20190405181133.weuyq7yecuekolit@Ergus \
--to=spacibba@aol.com \
--cc=eliz@gnu.org \
--cc=emacs-devel@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 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).