Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
2026-03-29 Bob Weiner <rsw@gnu.org>

* kotl/kview.el (kview:id-counter-set): Add.
kotl/kotl-mode.el (kotl-mode:kill-tree): Add support for sending 0 as
the prefix arg to say kill from the root of the outline tree all the
way down, killing all cells and inserting a new blank #1 cell in
the buffer.

2026-03-29 Mats Lidell <matsl@gnu.org>

* hproperty.el: Remove defalias of display-color-p, defined since
Expand Down Expand Up @@ -51,6 +59,7 @@

2026-03-28 Bob Weiner <rsw@gnu.org>


* hypb.el (hypb:sqlite-p): Add to return non-nil when Emacs supports sqlite.
(hypb:advised-p): Add to test whether a function has been advised with
a specific function.
Expand Down
29 changes: 23 additions & 6 deletions kotl/kotl-mode.el
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
;; Author: Bob Weiner
;;
;; Orig-Date: 6/30/93
;; Last-Mod: 19-Feb-26 at 01:12:25 by Bob Weiner
;; Last-Mod: 29-Mar-26 at 12:53:49 by Bob Weiner
;;
;; SPDX-License-Identifier: GPL-3.0-or-later
;;
Expand Down Expand Up @@ -2780,12 +2780,28 @@ With prefix ARG, kill entire cell contents."

(defun kotl-mode:kill-tree (&optional arg)
"Kill ARG following trees starting with tree rooted at point.
If ARG is a non-positive number, nothing is done."
An ARG of 0 deletes the entire koutline and inserts an empty #1 cell,
restarting the outline fresh once you save it.

If ARG is a negative number, nothing is done."
(interactive "*p")
(or (integerp arg) (setq arg 1))
(let ((killed) (label (kcell-view:label))
(let ((killed)
(label (kcell-view:label))
(lbl-sep-len (kview:label-separator-length kotl-kview))
start end sib)
(when (zerop arg)
(setq start (point-min)
end (point-max)
sib nil
killed t)
;; Don't want to delete any prior cells, so if on last cell, ensure
;; this is the last one killed.
(if (kotl-mode:last-cell-p)
(progn (setq arg 0)
(kview:delete-region start end))
(kview:delete-region start end))
(kview:id-counter-set kotl-kview 0))
(while (> arg 0)
(setq start (kotl-mode:tree-start)
end (kotl-mode:tree-end)
Expand All @@ -2798,7 +2814,8 @@ If ARG is a non-positive number, nothing is done."
(progn (setq arg 0)
(kview:delete-region start end))
(kview:delete-region start end)
(kotl-mode:to-valid-position)))
(unless (kotl-mode:buffer-empty-p)
(kotl-mode:to-valid-position))))
(when killed
(cond (sib (klabel-type:update-labels label))
((kotl-mode:buffer-empty-p)
Expand Down Expand Up @@ -3224,7 +3241,7 @@ collapsed."
(kotl-mode:expand-tree all-flag)
(kotl-mode:collapse-tree all-flag)))

;;;
;;;
;;;###autoload
(defun kotl-mode:overview (&optional arg)
"Show the first line of each cell.
Expand Down Expand Up @@ -3264,7 +3281,7 @@ With optional prefix ARG, toggle display of blank lines between cells."
;; Restore buffer modification status
(set-buffer-modified-p modified-p)))

;;;
;;;
(defun kotl-mode:hide-sublevels (levels-to-keep)
"Hide all cells in outline at levels deeper than LEVELS-TO-KEEP (a number).
Shows any hidden cells within LEVELS-TO-KEEP. 1 is the first level. 0 means
Expand Down
7 changes: 6 additions & 1 deletion kotl/kview.el
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
;; Author: Bob Weiner
;;
;; Orig-Date: 6/30/93
;; Last-Mod: 1-Jan-26 at 18:18:36 by Mats Lidell
;; Last-Mod: 29-Mar-26 at 12:34:05 by Bob Weiner
;;
;; SPDX-License-Identifier: GPL-3.0-or-later
;;
Expand Down Expand Up @@ -848,6 +848,11 @@ On success, return t, else nil."
"Return the highest current idstamp (an integer) used by KVIEW."
(kcell:get-attr (kview:get-attr kview 'top-cell) 'id-counter))

(defun kview:id-counter-set (kview id-counter)
"Reset the KVIEW ID-COUNTER for the current buffer.
Use this only after a Koutline has been created."
(kcell:set-attr (kview:get-attr kview 'top-cell) 'id-counter id-counter))

(defun kview:id-increment (kview)
"Return next idstamp (an integer) for KVIEW."
(let ((counter (1+ (kview:id-counter kview))))
Expand Down