unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
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: Tue, 06 Mar 2018 18:36:25 +0200	[thread overview]
Message-ID: <834lltrwja.fsf@gnu.org> (raw)
In-Reply-To: <087fdedd-a7c5-f7f6-f3a5-b1700fb6e516@gmail.com> (message from Clément Pit-Claudel on Mon, 5 Mar 2018 20:40:14 -0500)

> From: Clément Pit-Claudel <cpitclaudel@gmail.com>
> Date: Mon, 5 Mar 2018 20:40:14 -0500
> 
> The following code gives a preview of what the algorithm that we've been discussing produces:

Thanks, but I still don't see why we couldn't simply "adjust" the
width of white space using the 'space' display property.

Your implementation has a few issues.  First, if you move the cursor
vertically at column zero, do you see "ghost" characters displayed at
cursor position?  Hiding characters by displaying them with foreground
color identical to the background color has its limits ;-)

Also, with this implementation, the braces in the 'if' and 'else'
blocks no longer align.  E.g., try to indent this snippet:

foo ()
{
  if (something)
    {
      do (anything);
    }
  else
    {
      do (something-else);
    }
}

I think this misalignment will be annoying.

> I do agree that it doesn't look too bad, and presumably a C implementation of the algorithm above would be very fast, since it could build the "spine" above during redisplay.

Indenting during redisplay is a bad idea, because it will disable
almost every redisplay optimization.

I actually don't understand why you worry about performance: the
function you wrote is the morel equivalent of C-\, and that one is not
fast with the current implementation.  We never modify indentation of
non-current lines anyway, we expect the user to type TAB or some
electric character to reindent a line, and we expect them to use C-\
to reindent more than one line.  Automatic adjustment of indentation
might be a good feature, but it would be a separate feature.

In any case, I'd suggest to reindent via buffer-modification hooks,
not as part of redisplay.



  parent reply	other threads:[~2018-03-06 16:36 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 [this message]
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
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=834lltrwja.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).