From 817c0ae001a1ea6cc2775e1e2898931b3ff12d8a Mon Sep 17 00:00:00 2001 From: Case Duckworth Date: Tue, 4 Jan 2022 00:41:12 -0600 Subject: Add +crux.el Oops, missed this with a previous commit --- lisp/+crux.el | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 lisp/+crux.el (limited to 'lisp/+crux.el') diff --git a/lisp/+crux.el b/lisp/+crux.el new file mode 100644 index 0000000..b87ec7e --- /dev/null +++ b/lisp/+crux.el @@ -0,0 +1,46 @@ +;;; +crux.el -*- lexical-binding: t; -*- + +;;; Code: + +(require 'crux) + +(defgroup +crux nil + "Extra crux customizations." + :group 'crux + :prefix "+crux-") + +(defun +crux-kill-ring-save (begin end arg) + "Copy region to the kill-ring, possibly indenting it first. +Copy from BEGIN to END using `kill-ring-save' if no argument was +passed, or with `crux-indent-rigidly-and-copy-to-clipboard' if +one was." + (interactive "r\nP") + (call-interactively (if arg #'kill-ring-save + #'crux-indent-rigidly-and-copy-to-clipboard))) + +(defcustom +crux-default-date-format "%c" + "Default date format to use for `+crux-insert-date-or-time'. +Should be a format parsable by `format-time-string'." + :type 'string) + +(defcustom +crux-alternate-date-format "%FT%T%z" + "Alternate date format to use for `+crux-insert-date-or-time'. +Should be a format parsable by `format-time-string'." + :type 'string) + +(defun +crux-insert-date-or-time (arg) + "Insert current date or time. +Called without a prefix ARG, insert the time formatted by +`+crux-default-date-format'. When called with \\[universal-argument], +format the time with `+crux-alternate-date-format'. Otherwise, +prompt for the time format." + (interactive "*P") + (let ((time (current-time))) + (insert (cond + ((null arg) (format-time-string +crux-default-date-format time)) + ((eq (car-safe arg) 4) + (format-time-string +crux-alternate-date-format time)) + (t (format-time-string (read-string "Time Format: ") time)))))) + +(provide '+crux) +;;; +crux.el ends here -- cgit 1.4.1-21-gabe81