; ; gpg-decode.l ; 4th July 2020 by Teruyoshi FUJIWARA ; ; This script decodes your encoded GPG file on xyzzy. You need GPG (GNU Privacy Guard) to ; use this script. (defvar *gpg-command* "c:\\cygwin64\\bin\\gpg.exe --batch -d --passphrase") (defvar *gpg-encoded-file* "c:\\path\\to\\your\\gpg\\file.gpg") (defun gpg-decode () (interactive) (set-buffer (get-buffer-create "*gpg-encoded*")) ; set buffer attributes (toggle-read-only nil) (set-buffer-eol-code 1) (gpg-decode-mode) (set-buffer-fileio-encoding *encoding-sjis*) (execute-shell-command (concat *gpg-command* " " (minibuffer-input-password "Enter password:") " " *gpg-encoded-file*) t (selected-buffer)) (replace-buffer "^gpg:.*\n" "" :regexp t) (goto-char (point-min)) (replace-buffer " " "") (goto-char (point-min)) (delete-char 2) (toggle-read-only t) ) (defun minibuffer-input-password (prompt) (interactive) (let ((ans "")) (loop (minibuffer-prompt (concat prompt (repeat-string "." (length ans)))) (let ((c (read-char *keyboard*))) (case c (#\RET (return ans)) (#\C-g (quit)) (#\C-h (setq ans (if (> (length ans) 0) (subseq ans 0 (- (length ans) 1)) ans))) (t (setq ans (format nil "~a~c" ans c)))))))) (defun gpg-decode-mode () (kill-all-local-variables) (setq buffer-mode 'gpg-decode-mode) (setq mode-name "Gpg-decode") ; keymap (use-keymap *gpg-decode-mode-map*) (make-local-variable 'need-not-save) (setq need-not-save t) (make-local-variable 'auto-save) (setq auto-save nil) (make-local-variable 'regexp-keyword-list) (setq regexp-keyword-list (compile-regexp-keyword-list '( ;見出し ("^・.+$" t (:keyword 0 :bold) t))))) (defvar *gpg-decode-mode-map* nil) (unless *gpg-decode-mode-map* (setq *gpg-decode-mode-map* (make-sparse-keymap)) (define-key *gpg-decode-mode-map* #\SPC 'gpg-decode-next-page) (define-key *gpg-decode-mode-map* #\C-h 'gpg-decode-prev-page) (define-key *gpg-decode-mode-map* #\n 'gpg-decode-next-item) (define-key *gpg-decode-mode-map* #\p 'gpg-decode-prev-item) (define-key *gpg-decode-mode-map* #\q 'gpg-decode-quit)) (defun gpg-decode-prev-page () (interactive) (previous-page)) (defun gpg-decode-next-page () (interactive) (next-page)) (defun gpg-decode-next-item () (interactive) (forward-char) (or (scan-buffer "^・" :regexp t) (backward-char))) (defun gpg-decode-prev-item () (interactive) (backward-char) (or (scan-buffer "^・" :regexp t :reverse t) (forward-char))) (defun gpg-decode-quit () (interactive) (delete-buffer "*gpg-encoded*"))