GNU bug report logs - #56838
28.1.90; `current-indentation' sometimes returns zero inside invisible text

Previous Next

Package: emacs;

Reported by: Ihor Radchenko <yantar92 <at> gmail.com>

Date: Sat, 30 Jul 2022 07:57:02 UTC

Severity: normal

Merged with 56837, 60692

Found in versions 28.1.90, 29.0.60

Full log


Message #9 received at control <at> debbugs.gnu.org (full text, mbox):

From: Juri Linkov <juri <at> linkov.net>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 60692 <at> debbugs.gnu.org
Subject: Re: bug#60692: 29.0.60; current-indentation wrong without outline
 ellipsis
Date: Tue, 10 Jan 2023 10:20:20 +0200
forcemerge 56837 60692
thanks

> About current-indentation: it skips invisible text, so it's unclear to
> me why you expected to see 2.  The doc string says:
>
>   Text that has an invisible property is considered as having width 0, unless
>   `buffer-invisibility-spec' specifies that it is replaced by an ellipsis.
>
> The "current indentation" on the line of buffer position 8 is entirely
> in invisible text, and current-indentation only accounts for _visible_
> whitespace, per the above documentation.

Thanks for the reference, it explains the problem.
But this is a very strange logic.  I don't get it.
Why it depends on the presence of the ellipsis
and fails without it?

Now I see this bug report is a duplicate of bug#56837.
This is a problem because modes use 'current-indentation'
to get an outline level in 'outline-level' function, e.g.

  (setq-local outline-level
              (lambda ()
                "`outline-level' function for Python mode."
                (1+ (/ (current-indentation) python-indent-offset))))

  (setq-local outline-level (lambda () (1+ (/ (current-indentation)
                                         ruby-indent-level))))

But this fails when users want to remove an ellipsis.




This bug report was last modified 2 years and 158 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.