GNU bug report logs - #78436
Koutliner M-x hyperbole k o vs C-h h k o error messaging

Previous Next

Package: hyperbole;

Reported by: Cena Mayo <cenazoic <at> gmail.com>

Date: Thu, 15 May 2025 05:43:05 UTC

Severity: wishlist

To reply to this bug, email your comments to 78436 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-hyperbole <at> gnu.org:
bug#78436; Package hyperbole. (Thu, 15 May 2025 05:43:06 GMT) Full text and rfc822 format available.

Acknowledgement sent to Cena Mayo <cenazoic <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-hyperbole <at> gnu.org. (Thu, 15 May 2025 05:43:06 GMT) Full text and rfc822 format available.

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

From: Cena Mayo <cenazoic <at> gmail.com>
To: bug-hyperbole <at> gnu.org
Subject: Koutliner M-x hyperbole k o vs C-h h k o error messaging
Date: Wed, 14 May 2025 19:19:38 -0500
[Message part 1 (text/plain, inline)]
This is another instance where I'm just doing it wrong, but noting as a
possible  ...I don't know what the right word is - usability issue, maybe?
UX?  Something along those lines.

Using:  GNU Emacs 31.0.50 (build 1, aarch64-apple-darwin23.6.0, NS
appkit-2487.70 Version 14.7.5 (Build 23H527)) of 2025-05-13

GNU Hyperbole 9.0.2pre (downloaded today)
====

In this case, attempting to perform Koutliner actions while the *scratch*
buffer is active:

a) *M-x hyperbole, k, o* =>

Debugger entered--Lisp error: (error "(kotl-mode:is-p): ’*scratch*’ is not
a valid Hyperbole koutline")
        error("(kotl-mode:is-p): '*scratch*' is not a valid Hyperbole
koutline")
        hypb:error("(kotl-mode:is-p): '%s' is not a valid Hyperbole
koutline" #<buffer *scratch*>)
        kotl-mode:is-p()
        kotl-mode:show-all()
        kotl-mode:overview(nil)
        funcall-interactively(kotl-mode:overview nil)
        hui:menu-act(hyperbole nil nil nil)
        hyperbole(nil nil nil nil)
        funcall-interactively(hyperbole nil nil nil nil)
        command-execute(hyperbole record)
        execute-extended-command(nil "hyperbole" "hyperbole")
        funcall-interactively(execute-extended-command nil "hyperbole"
"hyperbole")
        command-execute(execute-extended-command)

However,

b) *C-h h, k, o *=>
reports  "hypb:error: (kotl-mode:is-p): ’*scratch*’ is not a valid
Hyperbole koutline" in echo.

At the point I got these messages I was following along with the Info
manual (2.1 Invocation) and just randomly selected K , O to see what it
did.    I hadn't yet read the bit about o(vervw) "Show[ing] first line of
each cell", (9.1 Koutliner Menu Commands) so fair enough,  I tried to
perform an illegal action (attempted that action in a non-Koutliner
buffer).

Further confusion was had when I ran the commands in a .kotl buffer and it
(appropriately, although I didn't realize it at the time) showed me the
first line of each cell.   I assumed most of my existing text had been
deleted, so I tried a *C-/ *to undo.

That sent a rather inscrutable "Changes to be undone are outside visible
portion of buffer" message.   That error seems to be caused by attempting
to undo a narrowed region
<https://lists.gnu.org/archive/html/help-gnu-emacs/2014-04/msg00324.html>*.
*Which, unbeknownst to me, was turned on.  (Clear as day, there was
'Narrow' in my mode-line.) So I followed the advice in the linked thread
and invoked *M-x widen.*

Great, everything returned!  (I eventually figured out that *C-h h k a*
would do it too).   But M-x widen also inserted this at the bottom of my
.kotl buffer:

"ben" ;; kvspec:current
1 ;; id-counter
alpha ;; label-type
4 ;; label-min-width
". " ;; label-separator
3 ;; level-indent

;; depth-first kcell attributes
[[0
  (creator "cena <at> byzantium" create-time "20250514:19:33:49" id-counter 1)]
 [1
  (creator "cena <at> byzantium" create-time "20250514:19:33:49")]]

(C-h h k a did not insert the above).

I ASSume it's something to do with the cell properties, but I didn't make
any changes there - this is all from a fresh install and just typing in a
.kotl file using whatever the default settings are, then running commands.

Best,
Cena Mayo
[Message part 2 (text/html, inline)]

Information forwarded to bug-hyperbole <at> gnu.org:
bug#78436; Package hyperbole. (Thu, 15 May 2025 08:33:02 GMT) Full text and rfc822 format available.

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

From: Mats Lidell <matsl <at> gnu.org>
To: Cena Mayo <cenazoic <at> gmail.com>
Cc: 78436 <at> debbugs.gnu.org
Subject: Re: bug#78436: Koutliner M-x hyperbole k o vs C-h h k o error
 messaging
Date: Thu, 15 May 2025 10:32:25 +0200
> Cena Mayo writes:
> This is another instance where I'm just doing it wrong, but noting as a possible  ...I don't know what the right word is - usability issue, maybe? UX? 
> Something along those lines.
>
> Using:  GNU Emacs 31.0.50 (build 1, aarch64-apple-darwin23.6.0, NS appkit-2487.70 Version 14.7.5 (Build 23H527)) of 2025-05-13
>
> GNU Hyperbole 9.0.2pre (downloaded today)
> ====
>
> In this case, attempting to perform Koutliner actions while the *scratch* buffer is active:
>
> a) M-x hyperbole, k, o => 
>
> Debugger entered--Lisp error: (error "(kotl-mode:is-p): ’*scratch*’ is not a valid Hyperbole koutline")
>         error("(kotl-mode:is-p): '*scratch*' is not a valid Hyperbole koutline")
>         hypb:error("(kotl-mode:is-p): '%s' is not a valid Hyperbole koutline" #<buffer *scratch*>)
>         kotl-mode:is-p()
>         kotl-mode:show-all()
>         kotl-mode:overview(nil)
>         funcall-interactively(kotl-mode:overview nil)
>         hui:menu-act(hyperbole nil nil nil)
>         hyperbole(nil nil nil nil)
>         funcall-interactively(hyperbole nil nil nil nil)
>         command-execute(hyperbole record)
>         execute-extended-command(nil "hyperbole" "hyperbole")
>         funcall-interactively(execute-extended-command nil "hyperbole" "hyperbole")
>         command-execute(execute-extended-command)
>
> However, 
>
> b) C-h h, k, o => 
> reports  "hypb:error: (kotl-mode:is-p): ’*scratch*’ is not a valid Hyperbole koutline" in echo. 
>
> At the point I got these messages I was following along with the Info manual (2.1 Invocation) and just randomly selected K , O to see what it did.    I
> hadn't yet read the bit about o(vervw) "Show[ing] first line of each cell", (9.1 Koutliner Menu Commands) so fair enough,  I tried to perform an illegal
> action (attempted that action in a non-Koutliner buffer).  
>
> Further confusion was had when I ran the commands in a .kotl buffer and it (appropriately, although I didn't realize it at the time) showed me the first line
> of each cell.   I assumed most of my existing text had been deleted, so I tried a C-/ to undo. 
>
> That sent a rather inscrutable "Changes to be undone are outside visible portion of buffer" message.   That error seems to be caused by attempting to
> undo a narrowed region.  Which, unbeknownst to me, was turned on.  (Clear as day, there was 'Narrow' in my mode-line.) So I followed the advice in the
> linked thread and invoked M-x widen.
>
> Great, everything returned!  (I eventually figured out that C-h h k a would do it too).   But M-x widen also inserted this at the bottom of my .kotl buffer:
>
> "ben" ;; kvspec:current
> 1 ;; id-counter
> alpha ;; label-type
> 4 ;; label-min-width
> ". " ;; label-separator
> 3 ;; level-indent
>
> ;; depth-first kcell attributes
> [[0
>   (creator "cena <at> byzantium" create-time "20250514:19:33:49" id-counter 1)]
>  [1
>   (creator "cena <at> byzantium" create-time "20250514:19:33:49")]]
>
> (C-h h k a did not insert the above).  
>
> I ASSume it's something to do with the cell properties, but I didn't make any changes there - this is all from a fresh install and just typing in a .kotl file
> using whatever the default settings are, then running commands.
>
> Best,
> Cena Mayo

Thanks for the report and for trying out koutliner.

As you figured out the overview action is only valid for a kotline. Hence there is an error message when that is applied to another type of buffer. I suppose what this is telling us is that a more user friendly message could be displayed in this case.

For the narrowing issue. A koutline is not a text format but a binary format. Narrowing is used to hide parts of the buffer that is not meant for the user to edit directly. And if you do edit that the koutline might be broken. Se be careful. The take away is that we need to see if we can turn the error message into something that makes more sense for a koutline user.

Again, thanks for the report.

%% Mats




Severity set to 'wishlist' from 'normal' Request was from Mats Lidell <matsl <at> gnu.org> to control <at> debbugs.gnu.org. (Thu, 15 May 2025 08:35:01 GMT) Full text and rfc822 format available.

Information forwarded to bug-hyperbole <at> gnu.org:
bug#78436; Package hyperbole. (Thu, 15 May 2025 12:10:02 GMT) Full text and rfc822 format available.

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

From: Robert Weiner <rswgnu <at> gmail.com>
To: Lidell Mats <matsl <at> gnu.org>
Cc: 78436 <at> debbugs.gnu.org, Mayo Cena <cenazoic <at> gmail.com>
Subject: Re: bug#78436: Koutliner M-x hyperbole k o vs C-h h k o error
 messaging
Date: Thu, 15 May 2025 08:09:18 -0400
Yes, the Koutliner uses its own major mode that is automatically invoked when you visit a filename ending in .kotl.  This mode stores and hides read-only information at the beginning and end of the buffer, so just leave it narrowed as designed.  Use {C-h h k e} ti display your own copy of the Koutliner EXAMPLE.kotl file which walks you through all of the key bindings and link capabilities interactively.

There are no bugs in this report, all error messages are correct and meant to help guide you.  Please clise this bug repirt when you have a chance.  — rsw



This bug report was last modified 30 days ago.

Previous Next


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