From: Eli Zaretskii <eliz@gnu.org>
To: "Clément Pit-Claudel" <cpitclaudel@gmail.com>
Cc: eggert@cs.ucla.edu, emacs-devel@gnu.org
Subject: Re: Variable-width font indentation
Date: Thu, 08 Mar 2018 15:21:55 +0200 [thread overview]
Message-ID: <83h8pqpurw.fsf@gnu.org> (raw)
In-Reply-To: <50a23cc7-9404-0fdb-32fa-08d77782cbc9@gmail.com> (message from Clément Pit-Claudel on Wed, 7 Mar 2018 17:13:09 -0500)
> From: Clément Pit-Claudel <cpitclaudel@gmail.com>
> Date: Wed, 7 Mar 2018 17:13:09 -0500
>
> This version is a bit faster, and it uses 'display (space …) instead of ghost strings:
>
> (defun ~/variable-pitch-indent ()
> (interactive)
> (save-excursion
> (let ((spine [])
> (prev-bol nil)
> (prev-eol nil))
> (goto-char (point-min))
> (while (not (eobp))
> (let ((bol (point)))
> (back-to-indentation)
> (unless (eolp)
> (let* ((indentation-amount (current-column))
> (trunc-spine-to (min (length spine) indentation-amount)))
> (setq spine (seq-subseq spine 0 trunc-spine-to))
> ;; Extend spine based on previous line
> (when (and prev-bol (< (length spine) indentation-amount))
> (let ((beg (+ prev-bol (length spine)))
> (end (min prev-eol (+ prev-bol indentation-amount))))
> (setq spine (vconcat spine (~/measure-px-widths beg end)))))
> (setq prev-bol bol prev-eol (point-at-eol))))
> (dotimes (idx (min (length spine) (- (point) bol)))
> (let ((w (aref spine idx)))
> (put-text-property (+ bol idx) (+ bol idx 1)
> 'display `(space :width (,w)))))
> (forward-line 1))))))
It seems you forgot to post ~/measure-px-widths.
next prev parent reply other threads:[~2018-03-08 13:21 UTC|newest]
Thread overview: 196+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <87inaiss6l.fsf@web.de>
[not found] ` <6FCF6ACA-4F29-4B6B-BE9D-D7130C6E9495@gnu.org>
[not found] ` <87fu5moe4c.fsf@web.de>
[not found] ` <877eqyocro.fsf@web.de>
[not found] ` <83zi3uz4nb.fsf@gnu.org>
2018-03-01 23:22 ` Let's make the GC safe and iterative (Was: Re: bug#30626) Daniel Colascione
2018-03-01 23:29 ` Paul Eggert
2018-03-05 6:31 ` Ken Raeburn
2018-03-05 13:11 ` What improvements would be truly useful? Richard Stallman
2018-03-05 14:02 ` John Yates
2018-03-05 17:21 ` Paul Eggert
2018-03-05 16:33 ` Stefan Monnier
2018-03-05 17:32 ` Rostislav Svoboda
2018-03-05 18:04 ` Eli Zaretskii
2018-03-05 19:18 ` Daniel Colascione
2018-03-05 20:00 ` Eli Zaretskii
2018-03-05 23:05 ` Richard Stallman
2018-03-05 23:16 ` dancol
2018-03-06 20:54 ` Richard Stallman
2018-03-06 21:15 ` Daniel Colascione
2018-03-08 4:45 ` Stefan Monnier
2018-03-08 9:16 ` Jefferson Carpenter
2018-03-08 9:17 ` Yuri Khan
2018-03-08 13:40 ` Eli Zaretskii
2018-03-08 20:07 ` Richard Stallman
2018-03-08 20:29 ` Marcin Borkowski
2018-03-09 4:43 ` Stefan Monnier
2018-03-09 22:20 ` Richard Stallman
2018-03-09 22:42 ` Karl Fogel
2018-03-11 17:02 ` Marcin Borkowski
2018-03-06 20:01 ` Marcin Borkowski
2018-03-06 20:32 ` Eli Zaretskii
2018-03-06 20:41 ` Marcin Borkowski
2018-03-07 17:13 ` Eli Zaretskii
2018-03-07 18:30 ` Marcin Borkowski
2018-03-07 19:36 ` Eli Zaretskii
2018-03-07 20:49 ` Marcin Borkowski
2018-03-07 23:00 ` Richard Stallman
2018-03-09 10:56 ` Phillip Lord
2018-03-09 13:53 ` Eli Zaretskii
2018-03-10 16:02 ` Phillip Lord
2018-03-10 18:56 ` Eli Zaretskii
2018-03-09 22:20 ` Richard Stallman
2018-03-06 15:48 ` Dmitry Gutov
2018-03-05 19:05 ` Aaron Ecay
2018-03-05 20:55 ` Ricardo Wurmus
2018-03-05 23:05 ` Richard Stallman
2018-03-09 11:02 ` Phillip Lord
2018-03-09 22:20 ` Richard Stallman
2018-03-10 20:23 ` Phillip Lord
2018-03-11 23:26 ` Richard Stallman
2018-03-05 17:57 ` Variable-width font indentation (was: What improvements would be truly useful?) Eli Zaretskii
2018-03-05 19:32 ` dancol
2018-03-05 19:49 ` Variable-width font indentation Paul Eggert
2018-03-06 15:15 ` Dmitry Gutov
2018-03-06 15:34 ` Clément Pit-Claudel
2018-03-06 17:09 ` Eli Zaretskii
2018-03-05 19:58 ` Variable-width font indentation (was: What improvements would be truly useful?) Eli Zaretskii
2018-03-05 20:28 ` Variable-width font indentation Clément Pit-Claudel
2018-03-05 22:30 ` Paul Eggert
2018-03-05 22:53 ` Daniel Colascione
2018-03-06 1:06 ` Clément Pit-Claudel
2018-03-06 1:30 ` Paul Eggert
2018-03-06 1:40 ` Clément Pit-Claudel
2018-03-06 2:04 ` Paul Eggert
2018-03-06 3:36 ` Clément Pit-Claudel
2018-03-06 16:47 ` Eli Zaretskii
2018-03-06 19:50 ` Clément Pit-Claudel
2018-03-06 5:48 ` Daniel Colascione
2018-03-06 13:18 ` Clément Pit-Claudel
2018-03-06 16:36 ` Eli Zaretskii
2018-03-06 20:11 ` Clément Pit-Claudel
2018-03-06 20:40 ` Eli Zaretskii
2018-03-07 13:15 ` Clément Pit-Claudel
2018-03-07 18:26 ` Eli Zaretskii
2018-03-09 16:07 ` Clément Pit-Claudel
2018-03-07 22:13 ` Clément Pit-Claudel
2018-03-08 13:21 ` Eli Zaretskii [this message]
2018-03-08 14:05 ` Clément Pit-Claudel
2018-03-06 16:16 ` Eli Zaretskii
2018-03-06 16:38 ` Daniel Colascione
2018-03-06 17:49 ` Eli Zaretskii
2018-03-06 17:55 ` dancol
2018-03-06 20:18 ` Eli Zaretskii
2018-03-06 20:20 ` Daniel Colascione
2018-03-06 18:53 ` Sam Steingold
2018-03-06 22:43 ` Ricardo Wurmus
2018-03-07 17:12 ` Eli Zaretskii
2018-03-07 19:38 ` Daniel Colascione
2018-03-07 20:11 ` Eli Zaretskii
2018-03-07 23:01 ` Richard Stallman
2018-03-08 12:33 ` Robert Pluim
2018-03-08 13:50 ` Eli Zaretskii
2018-03-08 15:15 ` Robert Pluim
2018-03-06 20:52 ` Richard Stallman
2018-03-06 4:05 ` Herring, Davis
2018-03-06 13:33 ` Clément Pit-Claudel
2018-03-06 14:18 ` Herring, Davis
2018-03-06 15:02 ` Clément Pit-Claudel
2018-03-06 16:11 ` Eli Zaretskii
2018-03-06 19:59 ` Clément Pit-Claudel
2018-03-06 20:31 ` Eli Zaretskii
2018-03-06 21:15 ` Paul Eggert
2018-03-06 21:47 ` Clément Pit-Claudel
2018-03-07 17:22 ` Eli Zaretskii
2018-03-07 18:27 ` Clément Pit-Claudel
2018-03-07 20:09 ` Eli Zaretskii
2018-03-07 20:32 ` Clément Pit-Claudel
2018-03-08 15:39 ` Eli Zaretskii
2018-03-08 16:30 ` Clément Pit-Claudel
2018-03-08 19:07 ` Eli Zaretskii
2018-03-08 19:55 ` Clément Pit-Claudel
2018-03-09 8:30 ` Eli Zaretskii
2018-03-09 17:52 ` Paul Eggert
2018-03-09 18:35 ` Eli Zaretskii
2018-03-09 20:16 ` Paul Eggert
2018-03-09 21:19 ` Eli Zaretskii
2018-03-09 21:55 ` Paul Eggert
2018-03-10 0:09 ` James Cloos
2018-03-10 8:20 ` Eli Zaretskii
2018-03-10 19:48 ` James Cloos
2018-03-10 20:00 ` Eli Zaretskii
2018-03-10 22:18 ` James Cloos
2018-03-11 3:43 ` Eli Zaretskii
2018-03-09 19:48 ` Clément Pit-Claudel
2018-03-09 21:18 ` Eli Zaretskii
2018-03-09 22:54 ` Clément Pit-Claudel
2018-03-10 8:04 ` Eli Zaretskii
2018-03-10 4:27 ` Yuri Khan
2018-03-10 8:39 ` Eli Zaretskii
2018-03-10 11:42 ` Yuri Khan
2018-03-10 14:28 ` Eli Zaretskii
2018-03-10 13:49 ` Clément Pit-Claudel
2018-03-08 4:50 ` Stefan Monnier
2018-03-08 13:44 ` Eli Zaretskii
2018-03-08 22:03 ` Paul Eggert
2018-03-09 8:34 ` Eli Zaretskii
2018-03-09 16:05 ` Clément Pit-Claudel
2018-03-09 16:21 ` Eli Zaretskii
2018-03-10 8:12 ` Variable-width font alignment Stephen Leake
2018-03-10 8:56 ` Eli Zaretskii
2018-03-10 17:30 ` Stephen Leake
2018-03-10 19:02 ` Eli Zaretskii
2018-03-10 7:42 ` Variable-width font indentation Stephen Leake
2018-03-06 16:35 ` Stefan Monnier
2018-03-06 19:59 ` Clément Pit-Claudel
2018-03-05 23:05 ` Variable-width font indentation (was: What improvements would be truly useful?) Richard Stallman
2018-03-06 16:04 ` Variable-width font indentation Stefan Monnier
2018-03-06 17:43 ` Eli Zaretskii
2018-03-06 18:14 ` Stefan Monnier
2018-03-06 20:56 ` Richard Stallman
2018-03-06 20:55 ` Richard Stallman
2018-03-07 7:05 ` Yuri Khan
2018-03-06 16:14 ` Variable-width font indentation (was: What improvements would be truly useful?) Eli Zaretskii
2018-03-06 20:55 ` Richard Stallman
2018-03-05 18:51 ` What improvements would be truly useful? Daniele Nicolodi
2018-03-05 19:22 ` Eli Zaretskii
2018-03-06 6:32 ` Daniele Nicolodi
2018-03-06 16:52 ` Eli Zaretskii
2018-03-06 17:01 ` Daniel Colascione
2018-03-07 5:45 ` Daniele Nicolodi
2018-03-07 17:45 ` Eli Zaretskii
2018-03-07 17:49 ` Daniele Nicolodi
2018-03-07 18:06 ` Eli Zaretskii
2018-03-07 21:45 ` Philipp Stephani
2018-03-08 13:20 ` Eli Zaretskii
2018-03-08 16:24 ` Alan Third
2018-03-08 18:02 ` Daniel Colascione
2018-03-06 7:48 ` Yuri Khan
2018-03-06 17:08 ` Eli Zaretskii
2018-03-05 21:15 ` Juri Linkov
2018-03-05 23:46 ` Óscar Fuentes
2018-03-06 3:36 ` Eli Zaretskii
2018-04-02 20:40 ` Continuous image scrolling (was: What improvements would be truly useful?) Juri Linkov
2018-04-03 1:59 ` Continuous image scrolling Óscar Fuentes
2018-04-03 7:01 ` Eli Zaretskii
2018-04-03 19:59 ` Juri Linkov
2018-04-03 20:20 ` Drew Adams
2018-04-04 19:54 ` Juri Linkov
2018-04-03 21:08 ` Stefan Monnier
2018-04-03 21:57 ` Clément Pit-Claudel
2018-04-04 6:27 ` Eli Zaretskii
2018-04-04 19:50 ` Juri Linkov
2018-04-05 6:04 ` Eli Zaretskii
2018-04-04 23:31 ` Tak Kunihiro
2018-04-05 2:45 ` Clément Pit-Claudel
2018-04-05 3:54 ` Tak Kunihiro
2018-04-05 19:56 ` Clément Pit-Claudel
2018-04-05 22:59 ` Tak Kunihiro
2018-04-06 4:36 ` Clément Pit-Claudel
2018-04-06 9:35 ` Tak Kunihiro
2018-04-04 19:19 ` John Wiegley
2018-03-05 22:09 ` What improvements would be truly useful? John Wiegley
2018-03-05 23:04 ` daniel sutton
2018-03-06 20:51 ` Richard Stallman
2018-03-08 11:44 ` Toon Claes
2018-03-08 20:08 ` Richard Stallman
2018-03-12 21:53 ` Dmitry Gutov
2018-03-01 23:38 ` Let's make the GC safe and iterative Stefan Monnier
2018-03-02 0:05 ` Daniel Colascione
2018-03-02 13:47 ` Stefan Monnier
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=83h8pqpurw.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=cpitclaudel@gmail.com \
--cc=eggert@cs.ucla.edu \
--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).