emacs-devel
[Top][All Lists]
Advanced

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

Identifying the face between STRETCH and right fringe.


From: Keith David Bershatsky
Subject: Identifying the face between STRETCH and right fringe.
Date: Tue, 20 Nov 2018 08:39:16 -0800

Step 1:  Open a buffer and evaluate:

(fundamental-mode)
(setq word-wrap t)
(setq buffer-display-table (make-display-table))
(aset buffer-display-table
      ?\t
      (vector (make-glyph-code ?\u00BB 'font-lock-warning-face)
              (make-glyph-code ?\t 'highlight)))

Step 2:  On a new line, type C-q TAB and then hold down the semi-colon key ';' 
to repeat the semi-colon character until it carries over to the next line.

Step 3:  Observe that the result is different on Emacs --with-ns, versus 
--with-x and also on a Windows machine.  Specifically, the STRETCH on an NS 
platform is seen spanning all the way to the right fringe.  On an X11 and NT 
platform, the STRETCH is only visible for the width of the STRETCH (depicted in 
the dump-glyph-row for each platform below).

EXAMPLE NS (OSX):  https://www.lawlist.com/images/tab_stretch_ns__2018_11_20.png

EXAMPLE WINDOWS:  https://www.lawlist.com/images/tab_stretch_nt__2018_11_20.png

EXAMPLE X11:  https://www.lawlist.com/images/tab_stretch_x11__2018_11_20.png

QUESTION #1:  In terms of identifying the face between the STRETCH and the 
right fringe, how can I programmatically know the difference between the NS 
situation, versus the NT and X11 situation?

QUESTION #2:  Is the difference in behavior between the different platforms "a 
bug", and should the X11 and NT ports be "fixed" so that they behave like the 
NS port in this situation?

BACKGROUND:  In the context of feature request #17684 (crosshairs); I am 
drawing vertical/horizontal lines on the screen using the built-in draw cursor 
mechanisms.  When there is no glyph at the desired location, I simply 
draw/erase a vertical/horizontal line with the desired color.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(fundamental-mode)
(setq word-wrap t)
(setq buffer-display-table (make-display-table))
(aset buffer-display-table
      ?\t
      (vector (make-glyph-code ?\u00BB 'font-lock-warning-face)
              (make-glyph-code ?\t 'highlight)))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; NS

Row     Start       End Used oE><\CTZFesm     X    Y    W    H    V    A    P
==============================================================================
 11       384       385    2 010010101000     0  176   56   16   16   12   12
           -1        -1     0
           -1        -1
           -1        -1
 Glyph#  Type       Pos   O   W     Code      C Face LR
      0     C       384   B   7 0x0000bb      .   30 00
      1     S       384   B  49 0x000000          29 00

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; X11

Row     Start       End Used oE><\CTZFesm     X    Y    W    H    V    A    P
==============================================================================
 11       384       385    2 010010100000     0  165   64   15   15   12   12
           -1        -1     0
           -1        -1
           -1        -1
 Glyph#  Type       Pos   O   W     Code      C Face LR
      0     C       384   B   8 0x0000bb      .   33 00
      1     S       384   B  56 0x000000          26 00

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; NT

Row     Start       End Used oE><\CTZFesm     X    Y    W    H    V    A    P
==============================================================================
 12       385       386    2 010010100000     0  192   64   16   16   12   12
           -1        -1     0
           -1        -1
           -1        -1
 Glyph#  Type       Pos   O   W     Code      C Face LR
      0     C       385   B   8 0x0000bb      .   31 00
      1     S       385   B  56 0x000000          30 00

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;



reply via email to

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