Function: kotl-mode:transpose-cells
kotl-mode:transpose-cells is an interactive and byte-compiled function
defined in kotl-mode.el.
Signature
(kotl-mode:transpose-cells ARG)
Documentation
Exchange current and previous visible cells, leaving point after both.
If no previous cell, exchange current with next cell. With prefix ARG = 0, interchange the cell that contains point with the cell that contains mark. With any other non-nil prefix ARG, take the current tree and move it past ARG visible cells.
Key Bindings
Source Code
;; Defined in ~/.emacs.d/elpa/hyperbole-20260414.325/kotl/kotl-mode.el
(defun kotl-mode:transpose-cells (arg)
"Exchange current and previous visible cells, leaving point after both.
If no previous cell, exchange current with next cell.
With prefix ARG = 0, interchange the cell that contains point with the cell
that contains mark.
With any other non-nil prefix ARG, take the current tree and move it past
ARG visible cells."
(interactive "*p")
(let ((lbl-sep-len (kview:label-separator-length kotl-kview)))
(cond
((save-excursion (not (or (kcell-view:next t lbl-sep-len)
(kcell-view:previous t lbl-sep-len))))
(error "(kotl-mode:transpose-cells): Only one visible cell in outline"))
;;
;; Transpose current and previous cells or current and next cells, if no
;; previous cell. Leave point after both exchanged cells or within last
;; visible cell.
((= arg 1)
(let ((label-1 (kcell-view:label))
(prev (kcell-view:previous t lbl-sep-len))
label-2)
(unless prev (kcell-view:next t lbl-sep-len))
(setq label-2 (kcell-view:label))
(kotl-mode:exchange-cells label-1 label-2)
(kcell-view:next t lbl-sep-len)
(when prev (kcell-view:next t lbl-sep-len))))
;;
;; Transpose point and mark cells, moving point to the new location of the
;; cell which originally contained point.
((= arg 0)
(let ((label-1 (kcell-view:label))
label-2)
(kotl-mode:exchange-point-and-mark)
(setq label-2 (kcell-view:label))
(kotl-mode:exchange-cells label-1 label-2)))
;;
;; Move current tree past ARG next visible cells and leave point after
;; original cell text.
(t
(let ((mark (set-marker (make-marker)
(save-excursion (kotl-mode:next-line arg)))))
(kotl-mode:move-after
(kcell-view:label)
(progn (while (and (> arg 0) (kcell-view:next t lbl-sep-len))
(setq arg (1- arg)))
(kcell-view:label))
nil)
(goto-char mark)
(set-marker mark nil))))))