diff --git a/docs/emacs/custom-elisp.org b/docs/emacs/custom-elisp.org index f33d3fe..9f0adb3 100644 --- a/docs/emacs/custom-elisp.org +++ b/docs/emacs/custom-elisp.org @@ -119,3 +119,33 @@ APPEND and COMPARE-FN, see `add-to-list'." (dolist (elt elements return) (setq return (add-to-list list-var elt append compare-fn))))) #+end_src + +** Generate and insert random passwords +#+begin_src emacs-lisp +(defun my/generate-password (nb-chars) + "Generate an alphanumeric password of NB-CHARS." + (shell-command-to-string + (concat "tr -dc 'A-Za-z0-9!@#$%^&*' < /dev/urandom | head -c " + (number-to-string nb-chars)))) +#+end_src + +#+begin_src emacs-lisp +(defun my/copy-generated-password (&optional prefix) + (interactive "P") + (kill-new + (my/generate-password (if prefix + (string-to-number + (completing-read "Amount of characters: " nil)) + 32)))) +#+end_src + +#+begin_src emacs-lisp +(defun my/insert-generated-password (&optional prefix) + (interactive "P") + (insert + (my/generate-password (if prefix + (string-to-number + (completing-read "Amount of characters: " + nil)) + 32)))) +#+end_src