X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/ab6511276ea156d3a47455e443edab49f8279c83..1adfb5ee55d16cd3d9d78998ae7bbb8e5708d9c5:/lisp/net/eudc-vars.el diff --git a/lisp/net/eudc-vars.el b/lisp/net/eudc-vars.el index 6df2393f5c..19da7ec153 100644 --- a/lisp/net/eudc-vars.el +++ b/lisp/net/eudc-vars.el @@ -1,17 +1,19 @@ ;;; eudc-vars.el --- Emacs Unified Directory Client -;; Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc. +;; Copyright (C) 1998-2016 Free Software Foundation, Inc. -;; Author: Oscar Figueiredo -;; Maintainer: Oscar Figueiredo +;; Author: Oscar Figueiredo +;; Pavel Janík +;; Maintainer: Thomas Fitzsimmons ;; Keywords: comm +;; Package: eudc ;; This file is part of GNU Emacs. -;; GNU Emacs is free software; you can redistribute it and/or modify +;; GNU Emacs is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -19,9 +21,7 @@ ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; along with GNU Emacs. If not, see . ;;; Commentary: @@ -39,16 +39,38 @@ :group 'comm) (defcustom eudc-server nil - "*The name or IP address of the directory server. + "The name or IP address of the directory server. A port number may be specified by appending a colon and a number to the name of the server. Use `localhost' if the directory -server resides on your computer (BBDB backend)." - :type '(choice (string :tag "Server") (const :tag "None" nil)) - :group 'eudc) +server resides on your computer (BBDB backend). + +To specify multiple servers, customize eudc-server-hotlist +instead." + :type '(choice (string :tag "Server") (const :tag "None" nil))) ;; Known protocols (used in completion) ;; Not to be mistaken with `eudc-supported-protocols' -(defvar eudc-known-protocols '(bbdb ph ldap)) +(defvar eudc-known-protocols '(bbdb ldap)) + +(defcustom eudc-server-hotlist nil + "Directory servers to query. +This is an alist of the form (SERVER . PROTOCOL). SERVER is the +host name or URI of the server, PROTOCOL is a symbol representing +the EUDC backend with which to access the server. + +The BBDB backend ignores SERVER; `localhost' can be used as a +placeholder string." + :tag "Directory Servers to Query" + :type `(repeat (cons :tag "Directory Server" + (string :tag "Server Host Name or URI") + (choice :tag "Protocol" + :menu-tag "Protocol" + ,@(mapcar (lambda (s) + (list 'const + ':tag (symbol-name s) s)) + eudc-known-protocols) + (const :tag "None" nil)))) + :version "25.1") (defvar eudc-supported-protocols nil "Protocols currently supported by EUDC. @@ -56,24 +78,22 @@ This variable is updated when protocol-specific libraries are loaded, *do not change manually*.") (defcustom eudc-protocol nil - "*The directory protocol to use to query the server. + "The directory protocol to use to query the server. Supported protocols are specified by `eudc-supported-protocols'." :type `(choice :menu-tag "Protocol" ,@(mapcar (lambda (s) (list 'const ':tag (symbol-name s) s)) eudc-known-protocols) - (const :tag "None" nil)) - :group 'eudc) + (const :tag "None" nil))) (defcustom eudc-strict-return-matches t - "*Ignore or allow entries not containing all requested return attributes. + "Ignore or allow entries not containing all requested return attributes. If non-nil, such entries are ignored." - :type 'boolean - :group 'eudc) + :type 'boolean) (defcustom eudc-default-return-attributes nil - "*A list of default attributes to extract from directory entries. + "A list of default attributes to extract from directory entries. If set to the symbol `all', return all attributes. A value of nil means return the default attributes as configured in the server." @@ -83,11 +103,10 @@ server." (repeat :menu-tag "Attribute list" :tag "Attribute name" :value (nil) - (symbol :tag "Attribute name"))) - :group 'eudc) + (symbol :tag "Attribute name")))) (defcustom eudc-multiple-match-handling-method 'select - "*What to do when multiple entries match an inline expansion query. + "What to do when multiple entries match an inline expansion query. Possible values are: `first' (equivalent to nil) which means keep the first match only, `select' pop-up a selection buffer, @@ -103,11 +122,10 @@ Possible values are: (const :menu-tag "Abort Operation" :tag "Abort Operation" abort) (const :menu-tag "Default (Use First)" - :tag "Default (Use First)" nil)) - :group 'eudc) + :tag "Default (Use First)" nil))) (defcustom eudc-duplicate-attribute-handling-method '((email . duplicate)) - "*A method to handle entries containing duplicate attributes. + "A method to handle entries containing duplicate attributes. This is either an alist (ATTR . METHOD) or a symbol METHOD. The alist form of the variable associates a method to an individual attribute, the second form specifies a method applicable to all attributes. @@ -131,12 +149,12 @@ different values." (const :menu-tag "List" list) (const :menu-tag "First" first) (const :menu-tag "Concat" concat) - (const :menu-tag "Duplicate" duplicate))))) - :group 'eudc) + (const :menu-tag "Duplicate" duplicate)))))) -(defcustom eudc-inline-query-format '((name) +(defcustom eudc-inline-query-format '((email) + (firstname) (firstname name)) - "*Format of an inline expansion query. + "Format of an inline expansion query. This is a list of FORMATs. A FORMAT is itself a list of one or more EUDC attribute names. A FORMAT applies if it contains as many attributes as there are individual words in the inline query string. @@ -161,15 +179,17 @@ must be set in a protocol/server-local fashion, see `eudc-server-set' and (const :menu-tag "Email Address" :tag "Email Address" email) (const :menu-tag "Phone" :tag "Phone" phone) (symbol :menu-tag "Other" :tag "Attribute name")))) - :group 'eudc) + :version "25.1") -(defcustom eudc-expansion-overwrites-query t - "*If non nil, expanding a query overwrites the query string." +;; Default to nil so that the most common use of eudc-expand-inline, +;; where replace is nil, does not affect the kill ring. +(defcustom eudc-expansion-overwrites-query nil + "If non-nil, expanding a query overwrites the query string." :type 'boolean - :group 'eudc) + :version "25.1") -(defcustom eudc-inline-expansion-format '("%s" email) - "*A list specifying the format of the expansion of inline queries. +(defcustom eudc-inline-expansion-format '("%s %s <%s>" firstname name email) + "A list specifying the format of the expansion of inline queries. This variable controls what `eudc-expand-inline' actually inserts in the buffer. First element is a string passed to `format'. Remaining elements are symbols indicating attribute names; the corresponding values @@ -186,10 +206,10 @@ are passed as additional arguments to `format'." (const :menu-tag "Phone" :tag "Phone" phone) (symbol :menu-tag "Other") (symbol :tag "Attribute name")))) - :group 'eudc) + :version "25.1") (defcustom eudc-inline-expansion-servers 'server-then-hotlist - "*Which servers to contact for the expansion of inline queries. + "Which servers to contact for the expansion of inline queries. Possible values are: `current-server': the EUDC current server. `hotlist': the servers of the hotlist in the order they appear, @@ -199,11 +219,10 @@ Possible values are: :menu-tag "Servers" (const :menu-tag "Current server" current-server) (const :menu-tag "Servers in the hotlist" hotlist) - (const :menu-tag "Current server then hotlist" server-then-hotlist)) - :group 'eudc) + (const :menu-tag "Current server then hotlist" server-then-hotlist))) (defcustom eudc-max-servers-to-query nil - "*Maximum number of servers to query for an inline expansion. + "Maximum number of servers to query for an inline expansion. If nil, query all servers available from `eudc-inline-expansion-servers'." :tag "Max Number of Servers to Query" :type '(choice :tag "Max. Servers" @@ -214,11 +233,10 @@ If nil, query all servers available from `eudc-inline-expansion-servers'." (const :menu-tag "3" 3) (const :menu-tag "4" 4) (const :menu-tag "5" 5) - (integer :menu-tag "Set")) - :group 'eudc) + (integer :menu-tag "Set"))) (defcustom eudc-query-form-attributes '(name firstname email phone) - "*A list of attributes presented in the query form." + "A list of attributes presented in the query form." :tag "Attributes in Query Forms" :type '(repeat (choice @@ -227,8 +245,7 @@ If nil, query all servers available from `eudc-inline-expansion-servers'." (const :menu-tag "Surname" :tag "Surname" name) (const :menu-tag "Email Address" :tag "Email Address" email) (const :menu-tag "Phone" :tag "Phone" phone) - (symbol :menu-tag "Other" :tag "Attribute name"))) - :group 'eudc) + (symbol :menu-tag "Other" :tag "Attribute name")))) (defcustom eudc-user-attribute-names-alist '((url . "URL") (callsign . "HAM Call Sign") @@ -249,7 +266,7 @@ If nil, query all servers available from `eudc-inline-expansion-servers'." (telephonenumber . "Phone") (uniqueidentifier . "ID") (objectclass . "Object Class")) - "*Alist of user-defined names for directory attributes. + "Alist of user-defined names for directory attributes. These names are used as prompt strings in query/response forms instead of the raw directory attribute names. Prompt strings for attributes that are not listed here @@ -258,18 +275,16 @@ at `_' characters and capitalizing the individual words." :tag "User-defined Names of Directory Attributes" :type '(repeat (cons :tag "Field" (symbol :tag "Directory attribute") - (string :tag "User friendly name "))) - :group 'eudc) + (string :tag "User friendly name ")))) (defcustom eudc-use-raw-directory-names nil - "*If non-nil, use attributes names as defined in the directory. + "If non-nil, use attributes names as defined in the directory. Otherwise, directory query/response forms display the user attribute names defined in `eudc-user-attribute-names-alist'." - :type 'boolean - :group 'eudc) + :type 'boolean) (defcustom eudc-attribute-display-method-alist nil - "*An alist specifying methods to display attribute values. + "An alist specifying methods to display attribute values. Each member of the list is of the form (NAME . FUNC) where NAME is a lowercased string naming a directory attribute (translated according to `eudc-user-attribute-names-alist' if `eudc-use-raw-directory-names' is @@ -278,12 +293,11 @@ attribute values for display." :tag "Attribute Decoding Functions" :type '(repeat (cons :tag "Attribute" (symbol :tag "Name") - (symbol :tag "Display Function"))) - :group 'eudc) + (symbol :tag "Display Function")))) (defcustom eudc-external-viewers '(("ImageMagick" "display" "-") ("ShowAudio" "showaudio")) - "*A list of viewer program specifications. + "A list of viewer program specifications. Viewers are programs which can be piped a directory attribute value for display or arbitrary processing. Each specification is a list whose first element is a string naming the viewer. The second element is the @@ -296,18 +310,17 @@ arguments that should be passed to the program." (repeat :tag "Arguments" :inline t - (string :tag "Argument")))) - :group 'eudc) + (string :tag "Argument"))))) -(defcustom eudc-options-file "~/.eudc-options" - "*A file where the `servers' hotlist is stored." +(defcustom eudc-options-file + (locate-user-emacs-file "eudc-options" ".eudc-options") + "A file where the `servers' hotlist is stored." :type '(file :Tag "File Name:") - :group 'eudc) + :version "25.1") (defcustom eudc-mode-hook nil - "*Normal hook run on entry to EUDC mode." - :type '(repeat (sexp :tag "Hook definition")) - :group 'eudc) + "Normal hook run on entry to EUDC mode." + :type 'hook) ;;}}} @@ -323,7 +336,7 @@ arguments that should be passed to the program." (address . (eudc-bbdbify-address address "Address")) (phone . ((eudc-bbdbify-phone phone "Phone") (eudc-bbdbify-phone office_phone "Office Phone")))) - "*A mapping from BBDB to PH/QI fields. + "A mapping from BBDB to PH/QI fields. This is a list of cons cells (BBDB-FIELD . SPEC-OR-LIST) where BBDB-FIELD is the name of a field that must be defined in your BBDB environment (standard field names are `name', `company', `net', `phone', @@ -342,8 +355,11 @@ BBDB fields. SPECs are sexps which are evaluated: :tag "BBDB to PH Field Name Mapping" :type '(repeat (cons :tag "Field Name" (symbol :tag "BBDB Field") - (sexp :tag "Conversion Spec"))) - :group 'eudc-ph) + (sexp :tag "Conversion Spec")))) + +(make-obsolete-variable 'eudc-ph-bbdb-conversion-alist + "the EUDC PH/QI backend is obsolete." + "25.1") ;;}}} @@ -357,8 +373,9 @@ BBDB fields. SPECs are sexps which are evaluated: '((name . cn) (net . mail) (address . (eudc-bbdbify-address postaladdress "Address")) - (phone . ((eudc-bbdbify-phone telephonenumber "Phone")))) - "*A mapping from BBDB to LDAP attributes. + (phone . (eudc-bbdbify-phone telephonenumber "Phone")) + (company . (eudc-bbdbify-company o))) + "A mapping from BBDB to LDAP attributes. This is a list of cons cells (BBDB-FIELD . SPEC-OR-LIST) where BBDB-FIELD is the name of a field that must be defined in your BBDB environment (standard field names are `name', `company', `net', `phone', @@ -377,8 +394,7 @@ BBDB fields. SPECs are sexps which are evaluated: :tag "BBDB to LDAP Attribute Names Mapping" :type '(repeat (cons :tag "Field Name" (symbol :tag "BBDB Field") - (sexp :tag "Conversion Spec"))) - :group 'eudc-ldap) + (sexp :tag "Conversion Spec")))) ;;}}} @@ -392,14 +408,12 @@ BBDB fields. SPECs are sexps which are evaluated: "If non-nil, BBDB address and phone locations are used as attribute names. This has no effect on queries (you can't search for a specific location) but influences the way records are displayed." - :type 'boolean - :group 'eudc-bbdb) + :type 'boolean) (defcustom eudc-bbdb-enable-substring-matches t "If non-nil, authorize substring match in the same way BBDB does. Otherwise records must match queries exactly." - :type 'boolean - :group 'eudc-bbdb) + :type 'boolean) ;;}}}