From 5d60bc1e1e28aceb538a4624fd6c23580db974d0 Mon Sep 17 00:00:00 2001 From: Lucien Cartier-Tilet Date: Fri, 3 Nov 2023 19:55:42 +0100 Subject: [PATCH] docs(emacs/custom elisp): generate passwords in Emacs --- docs/emacs/custom-elisp.org | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) 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