aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bard-elisp/bard-ryo.el44
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)