;;; +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