49 lines
1.5 KiB
EmacsLisp
49 lines
1.5 KiB
EmacsLisp
(defun cp-get-buffer-regexp (regexp &optional all)
|
|
"Returns the name of the first buffer in the buffer list which matches REGEXP.
|
|
|
|
If ALL is non-nil, multiple matches will be returned as a list."
|
|
(let ((results (cl-remove-if-not (lambda (a)
|
|
(string-match regexp a))
|
|
(mapcar #'buffer-name (buffer-list)))))
|
|
(if all results (car results))))
|
|
|
|
(cl-defun cp-buffer-name-match-p (regexp &optional (string (buffer-name)))
|
|
"Checks if STRING matches REGEXP.
|
|
If STRING is not provided, uses the current buffer name."
|
|
(if (string-match regexp string) t nil))
|
|
|
|
(defun cp/random-elt (list)
|
|
"Retun a random element from LIST."
|
|
(nth (random (length list)) list))
|
|
|
|
(defun cp/map-two (fn list)
|
|
"Apply FN to the first two elements of LIST, then the second two, and so on."
|
|
(let ((newlist '()))
|
|
(while (not (= 0 (- (length list) 1)))
|
|
(setq newlist
|
|
(append
|
|
newlist (list
|
|
(funcall fn (car list) (cadr list)))))
|
|
(pop list))
|
|
newlist))
|
|
|
|
(defun cp/average (numbers)
|
|
(/ (-reduce '+ numbers)
|
|
(length numbers)))
|
|
|
|
(defun cp/pastebinit ()
|
|
(interactive)
|
|
(-> (shell-command-on-region
|
|
(if (region-active-p) (region-beginning) (point-min))
|
|
(if (region-active-p) (region-end) (point-max))
|
|
"pastebinit")
|
|
(kill-new)))
|
|
|
|
(defun ^ (base pwr)
|
|
(while (not (zerop pwr))
|
|
(setq base (* base base)
|
|
pwr (- pwr 1)))
|
|
base)
|
|
|
|
(provide 'cp)
|