From: Stefan Monnier Date: Wed, 28 Aug 2013 19:28:30 +0000 (-0400) Subject: * lisp/epg.el (epg--process-filter): Use with-current-buffer, save-excursion X-Git-Tag: emacs-24.3.90~173^2^2~42^2~45^2~387^2~1686^2~73 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=b58969f78126587750c4938ef0f05da3f54fe133;p=emacs.git * lisp/epg.el (epg--process-filter): Use with-current-buffer, save-excursion and dynamic let binding. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index d7cb5532c5e..e2554cf04cc 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,8 @@ 2013-08-28 Stefan Monnier + * epg.el (epg--process-filter): Use with-current-buffer, save-excursion + and dynamic let binding. + * vc/smerge-mode.el: Remove redundant :group args. * emacs-lisp/package.el (package-activate-1): Don't add unnecessarily diff --git a/lisp/epg.el b/lisp/epg.el index 33c0443dd91..bcd91d8abba 100644 --- a/lisp/epg.el +++ b/lisp/epg.el @@ -1278,37 +1278,34 @@ This function is for internal use only." (defun epg--process-filter (process input) (if epg-debug - (save-excursion - (unless epg-debug-buffer - (setq epg-debug-buffer (generate-new-buffer " *epg-debug*"))) - (set-buffer epg-debug-buffer) + (with-current-buffer + (or epg-debug-buffer + (setq epg-debug-buffer (generate-new-buffer " *epg-debug*"))) (goto-char (point-max)) (insert input))) (if (buffer-live-p (process-buffer process)) (with-current-buffer (process-buffer process) - (goto-char (point-max)) - (insert input) - (unless epg-process-filter-running - (unwind-protect - (progn - (setq epg-process-filter-running t) - (goto-char epg-read-point) - (beginning-of-line) - (while (looking-at ".*\n") ;the input line finished - (if (looking-at "\\[GNUPG:] \\([A-Z_]+\\) ?\\(.*\\)") - (let* ((status (match-string 1)) - (string (match-string 2)) - (symbol (intern-soft (concat "epg--status-" - status)))) - (if (member status epg-pending-status-list) - (setq epg-pending-status-list nil)) - (if (and symbol - (fboundp symbol)) - (funcall symbol epg-context string)) - (setq epg-last-status (cons status string)))) - (forward-line) - (setq epg-read-point (point)))) - (setq epg-process-filter-running nil)))))) + (save-excursion + (goto-char (point-max)) + (insert input) + (unless epg-process-filter-running + (let ((epg-process-filter-running t)) + (goto-char epg-read-point) + (beginning-of-line) + (while (looking-at ".*\n") ;the input line finished + (if (looking-at "\\[GNUPG:] \\([A-Z_]+\\) ?\\(.*\\)") + (let* ((status (match-string 1)) + (string (match-string 2)) + (symbol (intern-soft (concat "epg--status-" + status)))) + (if (member status epg-pending-status-list) + (setq epg-pending-status-list nil)) + (if (and symbol + (fboundp symbol)) + (funcall symbol epg-context string)) + (setq epg-last-status (cons status string)))) + (forward-line) + (setq epg-read-point (point))))))))) (defun epg-read-output (context) "Read the output file CONTEXT and return the content as a string."