boon/boon-regs.el

35 lines
1,014 B
EmacsLisp
Raw Normal View History

2015-10-16 14:29:28 +02:00
;;; boon --- An Ergonomic Command Mode -*- lexical-binding: t -*-
;;; Commentary:
;; A region list has the following form: ('region (begining . end) (begining . end) ...)
;;; Code:
(defun boon-normalize-reg (reg)
"Normalize the region REG by making sure beginning < end."
2015-10-24 22:33:03 +02:00
(cons (boon-reg-begin reg) (boon-reg-end reg)))
2015-10-16 14:29:28 +02:00
(defun boon-reg-to-markers (reg)
"Put copy the markers defining REG borders, and return that."
(cons (copy-marker (car reg)) (copy-marker (cdr reg))))
(defun boon-borders (reg how-much)
"Given a normalized region REG, return its borders, whose size is HOW-MUCH."
(list (cons (cdr reg) (- (cdr reg) how-much))
(cons (car reg) (+ (car reg) how-much))))
2015-10-24 22:33:03 +02:00
(defun boon-reg-begin (reg)
(min (cdr reg) (car reg)))
(defun boon-reg-end (reg)
(max (cdr reg) (car reg)))
2015-10-16 14:29:28 +02:00
(defun boon-content (reg)
"Given a normalized region REG, return its contents (crop the region by 1)."
(cons (+ (car reg) 1) (- (cdr reg) 1)))
(provide 'boon-regs)
;;; boon-regs.el ends here