mirror of
https://github.com/vale981/boon
synced 2025-03-04 09:01:39 -05:00
83 lines
2.4 KiB
EmacsLisp
83 lines
2.4 KiB
EmacsLisp
;;; boon-utils.el --- An Ergonomic Command Mode -*- lexical-binding: t -*-
|
|
|
|
;;; Commentary:
|
|
|
|
;; This file contains several utilities, which shoud probably be part
|
|
;; of Emacs. (Maybe they are and I did not find them.)
|
|
|
|
;;; Code:
|
|
|
|
(defmacro boon-with-ordered-region (body)
|
|
"Run the BODY, ensuring that the point is before the mark."
|
|
(declare (obsolete "Used only by obsolete code" "20160904"))
|
|
`(if (< (point) (mark))
|
|
,body
|
|
(progn (exchange-point-and-mark) ,body (exchange-point-and-mark))))
|
|
|
|
(defcustom boon-hints-enabled 't "Display hints." :group 'boon :type 'boolean)
|
|
|
|
(defun boon-hint (msg)
|
|
"Provide MSG as a hint."
|
|
(when boon-hints-enabled
|
|
(message msg)))
|
|
|
|
(defun boon-current-line-indentation ()
|
|
"Return the indentation of the curent line."
|
|
(save-excursion
|
|
(back-to-indentation)
|
|
(current-column)))
|
|
|
|
(defun boon-line-prefix ()
|
|
"Return the text between beginning of line and point."
|
|
(buffer-substring-no-properties
|
|
(line-beginning-position)
|
|
(point)))
|
|
|
|
(defun boon-line-suffix ()
|
|
"Return the text between end of line and point."
|
|
(buffer-substring-no-properties
|
|
(line-end-position)
|
|
(point)))
|
|
|
|
(defun boon-col-relative-to-indent ()
|
|
"Return the position of the cursor relative to indentation.
|
|
Can be negative."
|
|
(- (point) (save-excursion (back-to-indentation) (point))))
|
|
|
|
(defun boon-looking-at-comment (how-many)
|
|
"Is the current point looking at HOW-MANY comments? (negative for backwards)?"
|
|
(save-excursion (forward-comment how-many)))
|
|
|
|
(defun boon-in-string-p ()
|
|
"Determine if the point is inside a string."
|
|
(nth 3 (syntax-ppss)))
|
|
|
|
(defun boon-looking-at-line-comment-start-p ()
|
|
"Are we looking at a comment-start?"
|
|
(interactive)
|
|
(and (bound-and-true-p comment-start)
|
|
(looking-at comment-start)
|
|
(not (boon-in-string-p))))
|
|
|
|
(defun boon-stuff-at-point ()
|
|
"Return a meaningful piece of text around at point.
|
|
If no such text exists, throw an error."
|
|
(interactive)
|
|
(if (use-region-p)
|
|
(buffer-substring-no-properties (region-beginning) (region-end))
|
|
(or (thing-at-point 'symbol)
|
|
(error "Nothing relevant at point; move to a symbol or select a region"))))
|
|
|
|
(defun boon-jump-over-blanks-forward ()
|
|
"Jump over blanks, forward."
|
|
(interactive)
|
|
(skip-chars-forward "\n\t "))
|
|
|
|
(defun boon-jump-over-blanks-backward ()
|
|
"Jump over blanks, backward."
|
|
(interactive)
|
|
(skip-chars-backward "\n\t "))
|
|
|
|
(provide 'boon-utils)
|
|
|
|
;;; boon-utils.el ends here
|