[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master 81d0909 12/17: Restore former eudc-expand-inline se
From: |
Stefan Monnier |
Subject: |
[Emacs-diffs] master 81d0909 12/17: Restore former eudc-expand-inline settings after a nonlocal exit |
Date: |
Fri, 23 Jan 2015 22:20:34 +0000 |
branch: master
commit 81d0909b70991e95be2993d7793c11a9e8a535ee
Author: Thomas Fitzsimmons <address@hidden>
Commit: Thomas Fitzsimmons <address@hidden>
Restore former eudc-expand-inline settings after a nonlocal exit
* net/eudc.el (eudc-expand-inline): Always restore former server
and protocol.
---
lisp/ChangeLog | 5 ++
lisp/net/eudc.el | 146 ++++++++++++++++++++++++++---------------------------
2 files changed, 77 insertions(+), 74 deletions(-)
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index d7bef51..d395f2e 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,5 +1,10 @@
2014-11-13 Thomas Fitzsimmons <address@hidden>
+ * net/eudc.el (eudc-expand-inline): Always restore former server
+ and protocol.
+
+2014-11-13 Thomas Fitzsimmons <address@hidden>
+
* net/eudcb-ldap.el: Don't nag the user in case a default base is
provided by the LDAP system configuration file.
diff --git a/lisp/net/eudc.el b/lisp/net/eudc.el
index 2a21581..352ce74 100644
--- a/lisp/net/eudc.el
+++ b/lisp/net/eudc.el
@@ -856,80 +856,78 @@ see `eudc-inline-expansion-servers'"
(> (length servers) eudc-max-servers-to-query))
(setcdr (nthcdr (1- eudc-max-servers-to-query) servers) nil))
- (condition-case signal
- (progn
- (setq response
- (catch 'found
- ;; Loop on the servers
- (while servers
- (eudc-set-server (eudc-caar servers) (eudc-cdar servers) t)
-
- ;; Determine which formats apply in the query-format list
- (setq query-formats
- (or
- (eudc-extract-n-word-formats eudc-inline-query-format
- (length query-words))
- (if (null eudc-protocol-has-default-query-attributes)
- '(name))))
-
- ;; Loop on query-formats
- (while query-formats
- (setq response
- (eudc-query
- (eudc-format-query query-words (car query-formats))
- (eudc-translate-attribute-list
- (cdr eudc-inline-expansion-format))))
- (if response
- (throw 'found response))
- (setq query-formats (cdr query-formats)))
- (setq servers (cdr servers)))
- ;; No more servers to try... no match found
- nil))
-
-
- (if (null response)
- (error "No match")
-
- ;; Process response through eudc-inline-expansion-format
- (while response
- (setq response-string (apply 'format
- (car eudc-inline-expansion-format)
- (mapcar (function
- (lambda (field)
- (or (cdr (assq field (car
response)))
- "")))
-
(eudc-translate-attribute-list
- (cdr
eudc-inline-expansion-format)))))
- (if (> (length response-string) 0)
- (setq response-strings
- (cons response-string response-strings)))
- (setq response (cdr response)))
-
- (if (or
- (and replace (not eudc-expansion-overwrites-query))
- (and (not replace) eudc-expansion-overwrites-query))
- (kill-ring-save beg end))
- (cond
- ((or (= (length response-strings) 1)
- (null eudc-multiple-match-handling-method)
- (eq eudc-multiple-match-handling-method 'first))
- (delete-region beg end)
- (insert (car response-strings)))
- ((eq eudc-multiple-match-handling-method 'select)
- (eudc-select response-strings beg end))
- ((eq eudc-multiple-match-handling-method 'all)
- (delete-region beg end)
- (insert (mapconcat 'identity response-strings ", ")))
- ((eq eudc-multiple-match-handling-method 'abort)
- (error "There is more than one match for the query"))))
- (or (and (equal eudc-server eudc-former-server)
- (equal eudc-protocol eudc-former-protocol))
- (eudc-set-server eudc-former-server eudc-former-protocol t)))
- (error
- (or (and (equal eudc-server eudc-former-server)
- (equal eudc-protocol eudc-former-protocol))
- (eudc-set-server eudc-former-server eudc-former-protocol t))
- (signal (car signal) (cdr signal))))))
+ (unwind-protect
+ (condition-case signal
+ (progn
+ (setq response
+ (catch 'found
+ ;; Loop on the servers
+ (while servers
+ (eudc-set-server (eudc-caar servers) (eudc-cdar
servers) t)
+
+ ;; Determine which formats apply in the query-format
list
+ (setq query-formats
+ (or
+ (eudc-extract-n-word-formats
eudc-inline-query-format
+ (length
query-words))
+ (if (null
eudc-protocol-has-default-query-attributes)
+ '(name))))
+
+ ;; Loop on query-formats
+ (while query-formats
+ (setq response
+ (eudc-query
+ (eudc-format-query query-words (car
query-formats))
+ (eudc-translate-attribute-list
+ (cdr eudc-inline-expansion-format))))
+ (if response
+ (throw 'found response))
+ (setq query-formats (cdr query-formats)))
+ (setq servers (cdr servers)))
+ ;; No more servers to try... no match found
+ nil))
+
+
+ (if (null response)
+ (error "No match")
+
+ ;; Process response through eudc-inline-expansion-format
+ (while response
+ (setq response-string (apply 'format
+ (car
eudc-inline-expansion-format)
+ (mapcar (function
+ (lambda (field)
+ (or (cdr (assq field
(car response)))
+ "")))
+
(eudc-translate-attribute-list
+ (cdr
eudc-inline-expansion-format)))))
+ (if (> (length response-string) 0)
+ (setq response-strings
+ (cons response-string response-strings)))
+ (setq response (cdr response)))
+
+ (if (or
+ (and replace (not eudc-expansion-overwrites-query))
+ (and (not replace) eudc-expansion-overwrites-query))
+ (kill-ring-save beg end))
+ (cond
+ ((or (= (length response-strings) 1)
+ (null eudc-multiple-match-handling-method)
+ (eq eudc-multiple-match-handling-method 'first))
+ (delete-region beg end)
+ (insert (car response-strings)))
+ ((eq eudc-multiple-match-handling-method 'select)
+ (eudc-select response-strings beg end))
+ ((eq eudc-multiple-match-handling-method 'all)
+ (delete-region beg end)
+ (insert (mapconcat 'identity response-strings ", ")))
+ ((eq eudc-multiple-match-handling-method 'abort)
+ (error "There is more than one match for the query")))))
+ (error
+ (signal (car signal) (cdr signal))))
+ (or (and (equal eudc-server eudc-former-server)
+ (equal eudc-protocol eudc-former-protocol))
+ (eudc-set-server eudc-former-server eudc-former-protocol t)))))
;;;###autoload
(defun eudc-query-form (&optional get-fields-from-server)
- [Emacs-diffs] master 0dee070 02/17: Support new-style LDAP URIs in ldap-search-internal, (continued)
- [Emacs-diffs] master 0dee070 02/17: Support new-style LDAP URIs in ldap-search-internal, Stefan Monnier, 2015/01/23
- [Emacs-diffs] master 090cbf9 01/17: Change eudc-server-hotlist from a defvar to a defcustom, Stefan Monnier, 2015/01/23
- [Emacs-diffs] master fa9a3ca 04/17: Improve eudc-inline-expansion-format's default value, Stefan Monnier, 2015/01/23
- [Emacs-diffs] master 6dda29f 03/17: Improve eudc-inline-query-format's default value, Stefan Monnier, 2015/01/23
- [Emacs-diffs] master c8d2553 05/17: Ignore text properties in eudc-expand-inline, Stefan Monnier, 2015/01/23
- [Emacs-diffs] master b7d2dfa 06/17: Change eudc-expansion-overwrites-query default to nil, Stefan Monnier, 2015/01/23
- [Emacs-diffs] master 6a3a3b0 09/17: Downcase field names in LDAP results, Stefan Monnier, 2015/01/23
- [Emacs-diffs] master 87ff9ae 07/17: Add password-cache support to ldap.el, Stefan Monnier, 2015/01/23
- [Emacs-diffs] master ea0ea90 08/17: ldap-search-internal: Send password to ldapsearch through a pipe, Stefan Monnier, 2015/01/23
- [Emacs-diffs] master 1e1f5b9 10/17: Append LDAP wildcard character to end of search string, Stefan Monnier, 2015/01/23
- [Emacs-diffs] master 81d0909 12/17: Restore former eudc-expand-inline settings after a nonlocal exit,
Stefan Monnier <=
- [Emacs-diffs] master 7860227 11/17: Do not ask the user for an LDAP base if a default has been provided, Stefan Monnier, 2015/01/23
- [Emacs-diffs] master 9006ccd 13/17: Handle nil password-cache in ldap-password-read, Stefan Monnier, 2015/01/23
- [Emacs-diffs] master 4a77d69 14/17: ldap-password-read: Validate password before caching it, Stefan Monnier, 2015/01/23
- [Emacs-diffs] master e56e1b9 16/17: Mention binddn in LDAP credentials error message, Stefan Monnier, 2015/01/23
- [Emacs-diffs] master a6d4651 15/17: Update LDAP configuration section of EUDC manual, Stefan Monnier, 2015/01/23
- [Emacs-diffs] master ac5475d 17/17: lisp/net/{eudc, ldap}: Merge branch streamline-eudc-configuration, Stefan Monnier, 2015/01/23