emacs-devel
[Top][All Lists]
Advanced

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

Re: ruler support in hexl mode


From: Stefan Monnier
Subject: Re: ruler support in hexl mode
Date: 11 Mar 2004 12:43:40 -0500
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3.50

> You can drop all of that ruler-mode- stuff if you use the advanced
> pixel-alignment form of :align-to (see xdisp.c around line 17990):

Hey neat.  When was this added?

>   (let ((s " 87654321  0011 2233 4455 6677 8899 aabb ccdd eeff  
> 0123456789abcdef")
>         (pos 0))
>     ;; Turn spaces in the header into stretch specs so they work
>     ;; regardless of the header-line face.
>     (while (string-match "[ \t]+" s pos)
>       (setq pos (match-end 0))
>       (put-text-property (match-beginning 0) pos 'display
>                          ;; Assume fixed-size chars
>                          `(space :align-to (+ (scroll-bar . left)
>                                               left-fringe left-margin
>                                               ,(1- pos)))
>                          s))

Note that if there's no margin (i.e. 99% of the time) this will not align
things properly on a text terminal.  This is the reason why I do
a `make-string' for the leading space: the size of the string is used
for alignment in text-terminals while the `display' prop is used otherwise.

Of course, the text-terminal display engine should ideally be improved to
understand :align-to and such things, but I won't be the one to implement it.

Also, how about adding a `text-start' special case which would stand for
(+ (scroll-bar . left) left-fringe left-margin) so that we don't have to
remember all the possible display elements and so that when we decide to
add yet another display element we won't have to update the code.


        Stefan




reply via email to

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