diff options
Diffstat (limited to 'bard-elisp/bard-ryo.el')
| -rw-r--r-- | bard-elisp/bard-ryo.el | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/bard-elisp/bard-ryo.el b/bard-elisp/bard-ryo.el index 6fea20d..782aab8 100644 --- a/bard-elisp/bard-ryo.el +++ b/bard-elisp/bard-ryo.el @@ -2,4 +2,48 @@ "Return t if `ryo-modal-mode` is not bound or not active." (not (bound-and-true-p ryo-modal-mode))) +(defun xah-beginning-of-line-or-block () + "Move cursor to beginning of indent or line, end of previous block, in that order. + +If `visual-line-mode' is on, beginning of line means visual line. + +URL `http://xahlee.info/emacs/emacs/emacs_move_by_paragraph.html' +Created: 2018-06-04 +Version: 2024-10-30" + (interactive) + (let ((xp (point))) + (if (or (eq (point) (line-beginning-position)) + (eq last-command this-command)) + (when (re-search-backward "\n[\t\n ]*\n+" nil :move) + (skip-chars-backward "\n\t ") + ;; (forward-char) + ) + (if visual-line-mode + (beginning-of-visual-line) + (if (eq major-mode 'eshell-mode) + (progn + (declare-function eshell-bol "esh-mode.el" ()) + (eshell-bol)) + (back-to-indentation) + (when (eq xp (point)) + (beginning-of-line))))))) + +(defun xah-end-of-line-or-block () + "Move cursor to end of line or next block. + +• When called first time, move cursor to end of line. +• When called again, move cursor forward by jumping over any sequence of whitespaces containing 2 blank lines. +• if `visual-line-mode' is on, end of line means visual line. + +URL `http://xahlee.info/emacs/emacs/emacs_move_by_paragraph.html' +Created: 2018-06-04 +Version: 2024-10-30" + (interactive) + (if (or (eq (point) (line-end-position)) + (eq last-command this-command)) + (re-search-forward "\n[\t\n ]*\n+" nil :move) + (if visual-line-mode + (end-of-visual-line) + (end-of-line)))) + (provide 'bard-ryo) |
