From debbugs-submit-bounces@debbugs.gnu.org Thu May 26 11:53:04 2016 Received: (at submit) by debbugs.gnu.org; 26 May 2016 15:53:04 +0000 Received: from localhost ([127.0.0.1]:40716 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b5xao-0005xP-Qe for submit@debbugs.gnu.org; Thu, 26 May 2016 11:53:04 -0400 Received: from eggs.gnu.org ([208.118.235.92]:53873) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b5xam-0005wc-5o for submit@debbugs.gnu.org; Thu, 26 May 2016 11:53:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b5xac-0007Ip-Mb for submit@debbugs.gnu.org; Thu, 26 May 2016 11:52:55 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM, HTML_MESSAGE,T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:35834) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b5xac-0007IU-J3 for submit@debbugs.gnu.org; Thu, 26 May 2016 11:52:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44632) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b5xaX-0007Mi-EC for bug-gnu-emacs@gnu.org; Thu, 26 May 2016 11:52:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b5xaT-0007A5-26 for bug-gnu-emacs@gnu.org; Thu, 26 May 2016 11:52:45 -0400 Received: from mail-oi0-x232.google.com ([2607:f8b0:4003:c06::232]:33334) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b5xaS-00079p-Oq; Thu, 26 May 2016 11:52:40 -0400 Received: by mail-oi0-x232.google.com with SMTP id k23so131058735oih.0; Thu, 26 May 2016 08:52:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:from:date:message-id:subject:to; bh=SMA83oquWvIwrBP1vLLiIL7g5v1no3ciyoJVep/tU+E=; b=OxnENncpHkb90krCLhOioYmY+rhYZeLRrJouJKOLsnQi7i4WvDe+Gq0CvvRJTEMwS2 XjgXBg3Y2OQn64aW0wEQpdDiJgB6EqaW97mvCXgGHlWzcWVwDSQd0HBZYAjxCCZuKitY Wmk5wxBoyqlUMJsWJEIJRXVIFaJHsPzcPKZfp4jPxdxZELDce7lE/48jHiPDILTfOjmp 0G9J1rIZyhEOneH6HE/vMjW+0f80I2YOnPC2W24Bg+BLa6O3/+qSO4bxraN+UpfkA9bz h+dHnRdRMVxPJYHHwW+d8fsDSZWLXetanrgesVdVKEigILWWhky4LQL2ZBtUWKt10T/0 koSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=SMA83oquWvIwrBP1vLLiIL7g5v1no3ciyoJVep/tU+E=; b=VxWBHI6dLQ5HxBpXafYZ1XgQfQ/WgXNrz/peDvK2mpuPHTcCZbFflI1L9cIC7oLeJI iUnJfw27+CXWqpcToFM2fHE/Ui+728fJEoUMB3rJ3PGZZwdqsV+aXtW1FUKzjjrpOxEZ DfC5c1JxKmwPWwBwt5xqTkpAY3ZhfzouH44YLKMETsyscQlLD5fmgb7N8bzNNOFlKkei YFz93wqZ1J3R3eQ/eesq4z+qV+DQGlKTrTUsHQjTqUVRww/UKjJ5Mr9GIAlMPn/j18at 6xq2OKxM0egtAjwRi+wQc1xOFb0YQmsdNJWQHpkGKvee8YNboXsGUoZV0fpIO8SSFBcG JflA== X-Gm-Message-State: ALyK8tIwn+t/ktZ+Sedr9ort2imeXjQ8Tr4ZWeVV3UyvbjTkuXa244Ck8MPpST1XYlDUwF4/zAxCJjurrVYOPA== X-Received: by 10.157.10.20 with SMTP id 20mr6272631otg.13.1464277959370; Thu, 26 May 2016 08:52:39 -0700 (PDT) MIME-Version: 1.0 Received: by 10.202.205.17 with HTTP; Thu, 26 May 2016 08:52:09 -0700 (PDT) From: Robert Weiner Date: Thu, 26 May 2016 11:52:09 -0400 Message-ID: Subject: Patch to improve function options in find-func.el To: bug-gnu-emacs@gnu.org, emacs-devel Content-Type: multipart/alternative; boundary=001a113cd4e29ef0400533c0c7ad X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.0 (----) --001a113cd4e29ef0400533c0c7ad Content-Type: text/plain; charset=UTF-8 This patch does three things to find-func.el: 1. It allows its *-noselect functions to be called with an additional option argument of NO-ERROR, to suppress errors when a definition is not found and instead simply return nil, allowing them to be called with boolean results. Although these functions used to return a list of (buffer) in some cases of failure, any caller that tested for this result would test for a (cdr nil) which is still nil with the new code. Returning a buffer value in cases where the symbol definition was not found made no sense anyway since what buffer would that be and what use would it be. 2. Similarly, find-function-do-it returns a boolean value so you can tell if it succeeded or failed. 3. It improves many of the doc strings. Note that the one large patch section of one function is really just a change of a line at the end of the function but diff generated a large context patch for it, maybe the indentation changed. Please let me know if these changes are acceptable. They provide many benefits to potential callers of this package and make the *-noselect functions more straightforward to use. ----- In GNU Emacs 25.0.94.1 (x86_64-apple-darwin13.4.0, NS appkit-1265.21 Version 10.9.5 (Build 13F1603)) of 2016-05-17 built on builder10-9.local Windowing system distributor 'Apple', version 10.3.1404 Configured using: 'configure --with-ns '--enable-locallisppath=/Library/Application Support/Emacs/${version}/site-lisp:/Library/Application Support/Emacs/site-lisp'' Configured features: NOTIFY ACL LIBXML2 ZLIB TOOLKIT_SCROLL_BARS NS Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix ------------ diff -u find-func-orig.el find-func.el --- find-func-orig.el 2016-05-17 12:16:33.000000000 -0400 +++ find-func.el 2016-05-26 11:14:02.000000000 -0400 @@ -177,9 +177,11 @@ (setq name rel)))) (unless (equal name library) name))) -(defun find-library-name (library) +(defun find-library-name (library &optional no-error) "Return the absolute file name of the Emacs Lisp source of LIBRARY. -LIBRARY should be a string (the name of the library)." +LIBRARY should be a string (the name of the library). +Signals an error if the source location is not found, unless optional +NO-ERROR is non-nil, in which case nil is returned." ;; If the library is byte-compiled, try to find a source library by ;; the same name. (if (string-match "\\.el\\(c\\(\\..*\\)?\\)\\'" library) @@ -201,7 +203,8 @@ (locate-file rel (or find-function-source-path load-path) load-file-rep-suffixes))))) - (error "Can't find library %s" library))) + (unless no-error + (error "Can't find library %s" library)))) (defvar find-function-C-source-directory (let ((dir (expand-file-name "src" source-directory))) @@ -224,9 +227,11 @@ ofunc))) func)) -(defun find-function-C-source (fun-or-var file type) +(defun find-function-C-source (fun-or-var file type &optional no-error) "Find the source location where FUN-OR-VAR is defined in FILE. -TYPE should be nil to find a function, or `defvar' to find a variable." +TYPE should be nil to find a function, or `defvar' to find a variable. +Signals an error if the source location is not found, unless optional +NO-ERROR is non-nil, in which case nil is returned." (let ((dir (or find-function-C-source-directory (read-directory-name "Emacs C source dir: " nil nil t)))) (setq file (expand-file-name file dir)) @@ -242,7 +247,7 @@ (find-function-advised-original fun-or-var))))) (with-current-buffer (find-file-noselect file) (goto-char (point-min)) - (unless (re-search-forward + (cond ((re-search-forward (if type (concat "DEFVAR[A-Z_]*[ \t\n]*([ \t\n]*\"" (regexp-quote (symbol-name fun-or-var)) @@ -251,8 +256,10 @@ (regexp-quote (subr-name (advice--cd*r fun-or-var))) "\"")) nil t) - (error "Can't find source for %s" fun-or-var)) - (cons (current-buffer) (match-beginning 0)))) + (cons (current-buffer) (match-beginning 0))) + (no-error nil) + (t (error "Can't find source for %s" fun-or-var))))) + ;;;###autoload (defun find-library (library) @@ -286,63 +293,66 @@ (condition-case nil (switch-to-buffer buf) (error (pop-to-buffer buf))))) ;;;###autoload -(defun find-function-search-for-symbol (symbol type library) - "Search for SYMBOL's definition of type TYPE in LIBRARY. -Visit the library in a buffer, and return a cons cell (BUFFER . POSITION), -or just (BUFFER . nil) if the definition can't be found in the file. +(defun find-function-search-for-symbol (symbol type library &optional no-error) + "Search for SYMBOL's definition of TYPE in LIBRARY. +Visit the library in a buffer, and return a (buffer . position) pair, +or nil if the definition can't be found in the library. + +If the definition can't be found and optional NO-ERROR is non-nil, +return nil; otherwise, signal an error. If TYPE is nil, look for a function definition. Otherwise, TYPE specifies the kind of definition, and it is interpreted via `find-function-regexp-alist'. The search is done in the source for library LIBRARY." (if (null library) - (error "Don't know where `%s' is defined" symbol)) - ;; Some functions are defined as part of the construct - ;; that defines something else. - (while (and (symbolp symbol) (get symbol 'definition-name)) - (setq symbol (get symbol 'definition-name))) - (if (string-match "\\`src/\\(.*\\.\\(c\\|m\\)\\)\\'" library) - (find-function-C-source symbol (match-string 1 library) type) - (when (string-match "\\.el\\(c\\)\\'" library) - (setq library (substring library 0 (match-beginning 1)))) - ;; Strip extension from .emacs.el to make sure symbol is searched in - ;; .emacs too. - (when (string-match "\\.emacs\\(.el\\)" library) - (setq library (substring library 0 (match-beginning 1)))) - (let* ((filename (find-library-name library)) - (regexp-symbol (cdr (assq type find-function-regexp-alist)))) - (with-current-buffer (find-file-noselect filename) - (let ((regexp (if (functionp regexp-symbol) regexp-symbol - (format (symbol-value regexp-symbol) - ;; Entry for ` (backquote) macro in loaddefs.el, - ;; (defalias (quote \`)..., has a \ but - ;; (symbol-name symbol) doesn't. Add an - ;; optional \ to catch this. - (concat "\\\\?" - (regexp-quote (symbol-name symbol)))))) - (case-fold-search)) - (with-syntax-table emacs-lisp-mode-syntax-table - (goto-char (point-min)) - (if (if (functionp regexp) - (funcall regexp symbol) - (or (re-search-forward regexp nil t) - ;; `regexp' matches definitions using known forms like - ;; `defun', or `defvar'. But some functions/variables - ;; are defined using special macros (or functions), so - ;; if `regexp' can't find the definition, we look for - ;; something of the form "(SOMETHING ...)". - ;; This fails to distinguish function definitions from - ;; variable declarations (or even uses thereof), but is - ;; a good pragmatic fallback. - (re-search-forward - (concat "^([^ ]+" find-function-space-re "['(]?" - (regexp-quote (symbol-name symbol)) - "\\_>") - nil t))) - (progn - (beginning-of-line) - (cons (current-buffer) (point))) - (cons (current-buffer) nil)))))))) + (unless no-error + (error "Don't know where `%s' is defined" symbol)) + ;; Some functions are defined as part of the construct + ;; that defines something else. + (while (and (symbolp symbol) (get symbol 'definition-name)) + (setq symbol (get symbol 'definition-name))) + (if (string-match "\\`src/\\(.*\\.\\(c\\|m\\)\\)\\'" library) + (find-function-C-source symbol (match-string 1 library) type) + (when (string-match "\\.el\\(c\\)\\'" library) + (setq library (substring library 0 (match-beginning 1)))) + ;; Strip extension from .emacs.el to make sure symbol is searched in + ;; .emacs too. + (when (string-match "\\.emacs\\(.el\\)" library) + (setq library (substring library 0 (match-beginning 1)))) + (let* ((filename (find-library-name library)) + (regexp-symbol (cdr (assq type find-function-regexp-alist)))) + (with-current-buffer (find-file-noselect filename) + (let ((regexp (if (functionp regexp-symbol) regexp-symbol + (format (symbol-value regexp-symbol) + ;; Entry for ` (backquote) macro in loaddefs.el, + ;; (defalias (quote \`)..., has a \ but + ;; (symbol-name symbol) doesn't. Add an + ;; optional \ to catch this. + (concat "\\\\?" + (regexp-quote (symbol-name symbol)))))) + (case-fold-search)) + (with-syntax-table emacs-lisp-mode-syntax-table + (goto-char (point-min)) + (if (if (functionp regexp) + (funcall regexp symbol) + (or (re-search-forward regexp nil t) + ;; `regexp' matches definitions using known forms like + ;; `defun', or `defvar'. But some functions/variables + ;; are defined using special macros (or functions), so + ;; if `regexp' can't find the definition, we look for + ;; something of the form "(SOMETHING ...)". + ;; This fails to distinguish function definitions from + ;; variable declarations (or even uses thereof), but is + ;; a good pragmatic fallback. + (re-search-forward + (concat "^([^ ]+" find-function-space-re "['(]?" + (regexp-quote (symbol-name symbol)) + "\\_>") + nil t))) + (progn + (beginning-of-line) + (cons (current-buffer) (point))))))))))) (defun find-function-library (function &optional lisp-only verbose) "Return the pair (ORIG-FUNCTION . LIBRARY) for FUNCTION. @@ -362,9 +372,9 @@ aliases) ;; FIXME for completeness, it might be nice to print something like: ;; foo (which is advised), which is an alias for bar (which is advised). - (while (and def (symbolp def)) - (or (eq def function) - (not verbose) + ;; 5/26/2016 - fixed to not loop forever when (eq def function) + (while (and def (symbolp def) (not (eq def function))) + (or (not verbose) (setq aliases (if aliases (concat aliases (format-message @@ -386,25 +396,26 @@ ((symbol-file function 'defun)))))) ;;;###autoload -(defun find-function-noselect (function &optional lisp-only) - "Return a pair (BUFFER . POINT) pointing to the definition of FUNCTION. +(defun find-function-noselect (function &optional lisp-only no-error) + "Return a (buffer . point) pair pointing to the definition of FUNCTION or nil if not found. +Signals an error if FUNCTION is null. Finds the source file containing the definition of FUNCTION in a buffer and the point of the definition. The buffer is -not selected. If the function definition can't be found in -the buffer, returns (BUFFER). +not selected. -If FUNCTION is a built-in function, this function normally -attempts to find it in the Emacs C sources; however, if LISP-ONLY -is non-nil, signal an error instead. +Built-in functions are found within Emacs C sources unless +optional LISP-ONLY is non-nil, in which case an error is signaled +unless optional NO-ERROR is non-nil. If the file where FUNCTION is defined is not known, then it is searched for in `find-function-source-path' if non-nil, otherwise in `load-path'." (if (not function) - (error "You didn't specify a function")) + (error "You didn't specify a function")) (let ((func-lib (find-function-library function lisp-only t))) - (find-function-search-for-symbol (car func-lib) nil (cdr func-lib)))) + (find-function-search-for-symbol (car func-lib) nil (cdr func-lib) + no-error))) (defun find-function-read (&optional type) "Read and return an interned symbol, defaulting to the one near point. @@ -432,7 +443,9 @@ t nil nil (and symb (symbol-name symb))))))) (defun find-function-do-it (symbol type switch-fn) - "Find Emacs Lisp SYMBOL in a buffer and display it. + "Find Emacs Lisp SYMBOL of TYPE in a buffer, display it with SWITCH-FN and return t, else nil if not found. +Return t if SYMBOL is found, else nil. + TYPE is nil to search for a function definition, or else `defvar' or `defface'. @@ -454,11 +467,13 @@ (funcall switch-fn new-buf) (when new-point (goto-char new-point)) (recenter find-function-recenter-line) - (run-hooks 'find-function-after-hook)))) + (run-hooks 'find-function-after-hook) + t))) ;;;###autoload (defun find-function (function) "Find the definition of the FUNCTION near point. +Return t if FUNCTION is found, else nil. Finds the source file containing the definition of the function near point (selected by `function-called-at-point') in a buffer and @@ -474,6 +489,7 @@ ;;;###autoload (defun find-function-other-window (function) "Find, in another window, the definition of FUNCTION near point. +Return t if FUNCTION is found, else nil. See `find-function' for more details." (interactive (find-function-read)) @@ -482,18 +498,21 @@ ;;;###autoload (defun find-function-other-frame (function) "Find, in another frame, the definition of FUNCTION near point. +Return t if FUNCTION is found, else nil. See `find-function' for more details." (interactive (find-function-read)) (find-function-do-it function nil 'switch-to-buffer-other-frame)) ;;;###autoload -(defun find-variable-noselect (variable &optional file) - "Return a pair `(BUFFER . POINT)' pointing to the definition of VARIABLE. +(defun find-variable-noselect (variable &optional file no-error) + "Return a (buffer . point) pair pointing to the definition of VARIABLE or nil if not found. Finds the library containing the definition of VARIABLE in a buffer and the point of the definition. The buffer is not selected. -If the variable's definition can't be found in the buffer, return (BUFFER). + +If the definition can't be found and optional NO-ERROR is non-nil, +return nil; otherwise, signal an error. The library where VARIABLE is defined is searched for in FILE or `find-function-source-path', if non-nil, otherwise in `load-path'." @@ -502,11 +521,12 @@ (let ((library (or file (symbol-file variable 'defvar) (help-C-file-name variable 'var)))) - (find-function-search-for-symbol variable 'defvar library)))) + (find-function-search-for-symbol variable 'defvar library no-error)))) ;;;###autoload (defun find-variable (variable) "Find the definition of the VARIABLE at or before point. +Return t if VARIABLE is found, else nil. Finds the library containing the definition of the variable near point (selected by `variable-at-point') in a buffer and @@ -523,6 +543,7 @@ ;;;###autoload (defun find-variable-other-window (variable) "Find, in another window, the definition of VARIABLE near point. +Return t if VARIABLE is found, else nil. See `find-variable' for more details." (interactive (find-function-read 'defvar)) @@ -531,47 +552,56 @@ ;;;###autoload (defun find-variable-other-frame (variable) "Find, in another frame, the definition of VARIABLE near point. +Return t if VARIABLE is found, else nil. See `find-variable' for more details." (interactive (find-function-read 'defvar)) (find-function-do-it variable 'defvar 'switch-to-buffer-other-frame)) ;;;###autoload -(defun find-definition-noselect (symbol type &optional file) - "Return a pair `(BUFFER . POINT)' pointing to the definition of SYMBOL. -If the definition can't be found in the buffer, return (BUFFER). +(defun find-definition-noselect (symbol type &optional file no-error) + "Return a (buffer . point) pair pointing to the definition of SYMBOL or nil if not found. +The buffer is not selected. SYMBOL may be a symbol or a string. +If the definition can't be found and optional NO-ERROR is non-nil, +return nil; otherwise, signal an error. + TYPE says what type of definition: nil for a function, `defvar' for a variable, `defface' for a face. This function does not switch to the buffer nor display it. -The library where SYMBOL is defined is searched for in FILE or +The library where SYMBOL is defined is searched for in optional FILE or `find-function-source-path', if non-nil, otherwise in `load-path'." (cond + ((and (stringp symbol) + (setq symbol (intern-soft symbol)) + ;; Fall through to next type + nil)) ((not symbol) (error "You didn't specify a symbol")) ((null type) - (find-function-noselect symbol)) + (find-function-noselect symbol nil no-error)) ((eq type 'defvar) - (find-variable-noselect symbol file)) + (find-variable-noselect symbol file no-error)) (t (let ((library (or file (symbol-file symbol type)))) - (find-function-search-for-symbol symbol type library))))) + (find-function-search-for-symbol symbol type library no-error))))) ;; For symmetry, this should be called find-face; but some programs ;; assume that, if that name is defined, it means something else. ;;;###autoload (defun find-face-definition (face) "Find the definition of FACE. FACE defaults to the name near point. +Return t if FACE is found, else nil. -Finds the Emacs Lisp library containing the definition of the face +Find the Emacs Lisp library containing the definition of the face near point (selected by `variable-at-point') in a buffer and -places point before the definition. +place point before the definition. Set mark before moving, if the buffer already existed. -The library where FACE is defined is searched for in -`find-function-source-path', if non-nil, otherwise in `load-path'. -See also `find-function-recenter-line' and `find-function-after-hook'." +The library searched for FACE is given by `find-function-source-path', +if non-nil, otherwise `load-path'. See also +`find-function-recenter-line' and `find-function-after-hook'." (interactive (find-function-read 'defface)) (find-function-do-it face 'defface 'switch-to-buffer)) --001a113cd4e29ef0400533c0c7ad Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
This patch does three things to find-func.el:
=C2=A0 1.= It allows its *-noselect functions to be called with an additional
=C2= =A0 =C2=A0 =C2=A0option argument of NO-ERROR, to suppress errors when a def= inition
=C2=A0 =C2=A0 =C2=A0is not found and instead simply return nil, = allowing them to be
=C2=A0 =C2=A0 =C2=A0called with boolean results.
=
=C2=A0 =C2=A0 =C2=A0Although these functions used to return a list of (= buffer) in some
=C2=A0 =C2=A0 =C2=A0cases of failure, any caller that te= sted for this result would test
=C2=A0 =C2=A0 =C2=A0for a (cdr nil) whic= h is still nil with the new code.=C2=A0 Returning
=C2=A0 =C2=A0 =C2=A0a = buffer value in cases where the symbol definition was not found
=C2=A0 = =C2=A0 =C2=A0made no sense anyway since what buffer would that be and what = use
=C2=A0 =C2=A0 =C2=A0would it be.

=C2=A0 2. Similarly, find-fu= nction-do-it returns a boolean value so you can
=C2=A0 =C2=A0 =C2=A0tell= if it succeeded or failed.

=C2=A0 3. It improves many of the doc st= rings.

Note that the one large patch section of one function is real= ly just a
change of a line at the end of the function but diff generated= a large
context patch for it, maybe the indentation changed.

Ple= ase let me know if these changes are acceptable.=C2=A0 They provide manybenefits to potential callers of this package and make the *-noselect
f= unctions more straightforward to use.

-----

In GNU Emacs 25.0= .94.1 (x86_64-apple-darwin13.4.0, NS appkit-1265.21 Version 10.9.5 (Build 1= 3F1603))
=C2=A0of 2016-05-17 built on builder10-9.local
Windowing sys= tem distributor 'Apple', version 10.3.1404
Configured using:
= =C2=A0'configure --with-ns '--enable-locallisppath=3D/Library/Appli= cation
=C2=A0Support/Emacs/${version}/site-lisp:/Library/Application
= =C2=A0Support/Emacs/site-lisp''

Configured features:
NOTI= FY ACL LIBXML2 ZLIB TOOLKIT_SCROLL_BARS NS

Important settings:
= =C2=A0 value of $LANG: en_US.UTF-8
=C2=A0 locale-coding-system: utf-8-un= ix

------------

diff -u find-func-orig.el find-func.el
---= find-func-orig.el 2016-05-17 12:16:33.000000000 -0400
+++ find-func.el = 2016-05-26 11:14:02.000000000 -0400
@@ -177,9 +177,11 @@
=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(setq name rel))))
=C2=A0 =C2=A0 = =C2=A0(unless (equal name library) name)))
=C2=A0
-(defun find-librar= y-name (library)
+(defun find-library-name (library &optional no-err= or)
=C2=A0 =C2=A0"Return the absolute file name of the Emacs Lisp s= ource of LIBRARY.
-LIBRARY should be a string (the name of the library).= "
+LIBRARY should be a string (the name of the library).
+Signal= s an error if the source location is not found, unless optional
+NO-ERRO= R is non-nil, in which case nil is returned."
=C2=A0 =C2=A0;; If th= e library is byte-compiled, try to find a source library by
=C2=A0 =C2= =A0;; the same name.
=C2=A0 =C2=A0(if (string-match "\\.el\\(c\\(\\= ..*\\)?\\)\\'" library)
@@ -201,7 +203,8 @@
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0(locate-file rel
=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (or find-function-s= ource-path load-path)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 load-file-rep-suffixes)))))
- =C2=A0 = (error "Can't find library %s" library)))
+ =C2=A0 (unless= no-error
+ =C2=A0 =C2=A0 (error "Can't find library %s" l= ibrary))))
=C2=A0
=C2=A0(defvar find-function-C-source-directory
= =C2=A0 =C2=A0(let ((dir (expand-file-name "src" source-directory)= ))
@@ -224,9 +227,11 @@
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 ofunc)))
=C2=A0 =C2=A0 =C2=A0 =C2=A0func))
=C2=A0
-(def= un find-function-C-source (fun-or-var file type)
+(defun find-function-C= -source (fun-or-var file type &optional no-error)
=C2=A0 =C2=A0"= ;Find the source location where FUN-OR-VAR is defined in FILE.
-TYPE sho= uld be nil to find a function, or `defvar' to find a variable."+TYPE should be nil to find a function, or `defvar' to find a variable= .
+Signals an error if the source location is not found, unless optional=
+NO-ERROR is non-nil, in which case nil is returned."
=C2=A0 = =C2=A0(let ((dir (or find-function-C-source-directory
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (read-directory-name "Em= acs C source dir: " nil nil t))))
=C2=A0 =C2=A0 =C2=A0(setq file (e= xpand-file-name file dir))
@@ -242,7 +247,7 @@
=C2=A0 =C2=A0 =C2=A0 = =C2=A0 (find-function-advised-original fun-or-var)))))
=C2=A0 =C2=A0(wit= h-current-buffer (find-file-noselect file)
=C2=A0 =C2=A0 =C2=A0(goto-cha= r (point-min))
- =C2=A0 =C2=A0(unless (re-search-forward
+ =C2=A0 =C2= =A0(cond ((re-search-forward
=C2=A0 =C2=A0 =C2=A0 (if type
=C2=A0 (co= ncat "DEFVAR[A-Z_]*[ \t\n]*([ \t\n]*\""
=C2=A0 (regexp-qu= ote (symbol-name fun-or-var))
@@ -251,8 +256,10 @@
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 (regexp-quote (subr-name (advice--cd*r fun-or-var)))
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 "\""))
=C2=A0 =C2=A0 =C2=A0 nil t)- =C2=A0 =C2=A0 =C2=A0(error "Can't find source for %s" fun= -or-var))
- =C2=A0 =C2=A0(cons (current-buffer) (match-beginning 0))))+ =C2=A0 (cons (current-buffer) (match-beginning 0)))
+ =C2=A0(no-erro= r nil)
+ =C2=A0(t (error "Can't find source for %s" fun-or= -var)))))
+
=C2=A0
=C2=A0;;;###autoload
=C2=A0(defun find-libra= ry (library)
@@ -286,63 +293,66 @@
=C2=A0 =C2=A0 =C2=A0(condition-cas= e nil (switch-to-buffer buf) (error (pop-to-buffer buf)))))
=C2=A0
= =C2=A0;;;###autoload
-(defun find-function-search-for-symbol (symbol typ= e library)
- =C2=A0"Search for SYMBOL's definition of type TYPE= in LIBRARY.
-Visit the library in a buffer, and return a cons cell (BUF= FER . POSITION),
-or just (BUFFER . nil) if the definition can't be = found in the file.
+(defun find-function-search-for-symbol (symbol type = library &optional no-error)
+ =C2=A0"Search for SYMBOL's de= finition of TYPE in LIBRARY.
+Visit the library in a buffer, and return = a (buffer . position) pair,
+or nil if the definition can't be found= in the library.
+
+If the definition can't be found and optional= NO-ERROR is non-nil,
+return nil; otherwise, signal an error.
=C2=A0=
=C2=A0If TYPE is nil, look for a function definition.
=C2=A0Otherwis= e, TYPE specifies the kind of definition,
=C2=A0and it is interpreted vi= a `find-function-regexp-alist'.
=C2=A0The search is done in the sour= ce for library LIBRARY."
=C2=A0 =C2=A0(if (null library)
- =C2= =A0 =C2=A0 =C2=A0(error "Don't know where `%s' is defined"= ; symbol))
- =C2=A0;; Some functions are defined as part of the construc= t
- =C2=A0;; that defines something else.
- =C2=A0(while (and (symbol= p symbol) (get symbol 'definition-name))
- =C2=A0 =C2=A0(setq symbol= (get symbol 'definition-name)))
- =C2=A0(if (string-match "\\`= src/\\(.*\\.\\(c\\|m\\)\\)\\'" library)
- =C2=A0 =C2=A0 =C2=A0(= find-function-C-source symbol (match-string 1 library) type)
- =C2=A0 = =C2=A0(when (string-match "\\.el\\(c\\)\\'" library)
- =C2= =A0 =C2=A0 =C2=A0(setq library (substring library 0 (match-beginning 1))))<= br>- =C2=A0 =C2=A0;; Strip extension from .emacs.el to make sure symbol is = searched in
- =C2=A0 =C2=A0;; .emacs too.
- =C2=A0 =C2=A0(when (strin= g-match "\\.emacs\\(.el\\)" library)
- =C2=A0 =C2=A0 =C2=A0(se= tq library (substring library 0 (match-beginning 1))))
- =C2=A0 =C2=A0(l= et* ((filename (find-library-name library))
- =C2=A0 (regexp-symbol (cdr= (assq type find-function-regexp-alist))))
- =C2=A0 =C2=A0 =C2=A0(with-c= urrent-buffer (find-file-noselect filename)
- (let ((regexp (if (functio= np regexp-symbol) regexp-symbol
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(format (symbol-value regexp-s= ymbol)
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0;; Entry for ` (backquote) = macro in loaddefs.el,
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0;; (defalias= (quote \`)..., has a \ but
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0;; (sy= mbol-name symbol) doesn't.=C2=A0 Add an
- =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0;; optional \ to catch this.
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0(concat "\\\\?"
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(regexp-quote (symbol-name symbol))))))
-= =C2=A0 =C2=A0 =C2=A0(case-fold-search))
- =C2=A0(with-syntax-table emac= s-lisp-mode-syntax-table
- =C2=A0 =C2=A0(goto-char (point-min))
- =C2= =A0 =C2=A0(if (if (functionp regexp)
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(funcall regexp symbol)
- =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(or (re-search-forwa= rd regexp nil t)
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0;; `regexp' matches definitions using known for= ms like
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0;; `defun', or `defvar'.=C2=A0 But some functions/var= iables
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0;; are defined using special macros (or functions), so
- = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0;; if `regexp' can't find the definition, we look for
- =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0;;= something of the form "(SOMETHING <symbol> ...)".
- =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0;;= This fails to distinguish function definitions from
- =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0;; variable decl= arations (or even uses thereof), but is
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0;; a good pragmatic fallbac= k.
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0(re-search-forward
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (concat "^([^ ]+" find-functi= on-space-re "['(]?"
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (rege= xp-quote (symbol-name symbol))
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "\\= _>")
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 nil t)))
- (progn
- =C2=A0(beginning-of-line)- =C2=A0(cons (current-buffer) (point)))
- =C2=A0 =C2=A0 =C2=A0(cons (c= urrent-buffer) nil))))))))
+ =C2=A0 =C2=A0 =C2=A0(unless no-error
+ (= error "Don't know where `%s' is defined" symbol))
+ = =C2=A0 =C2=A0;; Some functions are defined as part of the construct
+ = =C2=A0 =C2=A0;; that defines something else.
+ =C2=A0 =C2=A0(while (and = (symbolp symbol) (get symbol 'definition-name))
+ =C2=A0 =C2=A0 =C2= =A0(setq symbol (get symbol 'definition-name)))
+ =C2=A0 =C2=A0(if (= string-match "\\`src/\\(.*\\.\\(c\\|m\\)\\)\\'" library)
+= (find-function-C-source symbol (match-string 1 library) type)
+ =C2=A0 = =C2=A0 =C2=A0(when (string-match "\\.el\\(c\\)\\'" library)+ (setq library (substring library 0 (match-beginning 1))))
+ =C2=A0 = =C2=A0 =C2=A0;; Strip extension from .emacs.el to make sure symbol is searc= hed in
+ =C2=A0 =C2=A0 =C2=A0;; .emacs too.
+ =C2=A0 =C2=A0 =C2=A0(wh= en (string-match "\\.emacs\\(.el\\)" library)
+ (setq library = (substring library 0 (match-beginning 1))))
+ =C2=A0 =C2=A0 =C2=A0(let* = ((filename (find-library-name library))
+ =C2=A0 =C2=A0 (regexp-symbol (= cdr (assq type find-function-regexp-alist))))
+ (with-current-buffer (fi= nd-file-noselect filename)
+ =C2=A0(let ((regexp (if (functionp regexp-s= ymbol) regexp-symbol
+ =C2=A0(format (symbol-value regexp-symbol)
+ = =C2=A0;; Entry for ` (backquote) macro in loaddefs.el,
+ =C2=A0;; (defal= ias (quote \`)..., has a \ but
+ =C2=A0;; (symbol-name symbol) doesn'= ;t.=C2=A0 Add an
+ =C2=A0;; optional \ to catch this.
+ =C2=A0(concat= "\\\\?"
+ =C2=A0(regexp-quote (symbol-name symbol))))))
+ = (case-fold-search))
+ =C2=A0 =C2=A0(with-syntax-table emacs-lisp-mode-sy= ntax-table
+ =C2=A0 =C2=A0 =C2=A0(goto-char (point-min))
+ =C2=A0 =C2= =A0 =C2=A0(if (if (functionp regexp)
+ =C2=A0 =C2=A0 =C2=A0(funcall rege= xp symbol)
+ =C2=A0 =C2=A0(or (re-search-forward regexp nil t)
+ ;; `= regexp' matches definitions using known forms like
+ ;; `defun',= or `defvar'.=C2=A0 But some functions/variables
+ ;; are defined us= ing special macros (or functions), so
+ ;; if `regexp' can't fin= d the definition, we look for
+ ;; something of the form "(SOMETHIN= G <symbol> ...)".
+ ;; This fails to distinguish function def= initions from
+ ;; variable declarations (or even uses thereof), but is<= br>+ ;; a good pragmatic fallback.
+ (re-search-forward
+ (concat &qu= ot;^([^ ]+" find-function-space-re "['(]?"
+ (regexp-= quote (symbol-name symbol))
+ "\\_>")
+ nil t)))
+ = =C2=A0(progn
+ =C2=A0 =C2=A0(beginning-of-line)
+ =C2=A0 =C2=A0(cons = (current-buffer) (point)))))))))))
=C2=A0
=C2=A0(defun find-function-= library (function &optional lisp-only verbose)
=C2=A0 =C2=A0"Re= turn the pair (ORIG-FUNCTION . LIBRARY) for FUNCTION.
@@ -362,9 +372,9 @= @
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0aliases)
=C2=A0 =C2=A0 =C2=A0;; F= IXME for completeness, it might be nice to print something like:
=C2=A0 = =C2=A0 =C2=A0;; foo (which is advised), which is an alias for bar (which is= advised).
- =C2=A0 =C2=A0(while (and def (symbolp def))
- =C2=A0 =C2= =A0 =C2=A0(or (eq def function)
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(not= verbose)
+ =C2=A0 =C2=A0;; 5/26/2016 - fixed to not loop forever when (= eq def function)
+ =C2=A0 =C2=A0(while (and def (symbolp def) (not (eq d= ef function)))
+ =C2=A0 =C2=A0 =C2=A0(or (not verbose)
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0(setq aliases (if aliases
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0(concat aliases
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0(format-message
@@ -386,25 +396,26 @@
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 ((symbol-file function 'defun))))))
=C2= =A0
=C2=A0;;;###autoload
-(defun find-function-noselect (function &am= p;optional lisp-only)
- =C2=A0"Return a pair (BUFFER . POINT) point= ing to the definition of FUNCTION.
+(defun find-function-noselect (funct= ion &optional lisp-only no-error)
+ =C2=A0"Return a (buffer . p= oint) pair pointing to the definition of FUNCTION or nil if not found.
+= Signals an error if FUNCTION is null.
=C2=A0
=C2=A0Finds the source f= ile containing the definition of FUNCTION
=C2=A0in a buffer and the poin= t of the definition.=C2=A0 The buffer is
-not selected.=C2=A0 If the fun= ction definition can't be found in
-the buffer, returns (BUFFER).+not selected.
=C2=A0
-If FUNCTION is a built-in function, this func= tion normally
-attempts to find it in the Emacs C sources; however, if L= ISP-ONLY
-is non-nil, signal an error instead.
+Built-in functions ar= e found within Emacs C sources unless
+optional LISP-ONLY is non-nil, in= which case an error is signaled
+unless optional NO-ERROR is non-nil.=C2=A0
=C2=A0If the file where FUNCTION is defined is not known, then = it is
=C2=A0searched for in `find-function-source-path' if non-nil, = otherwise
=C2=A0in `load-path'."
=C2=A0 =C2=A0(if (not funct= ion)
- =C2=A0 =C2=A0(error "You didn't specify a function"= ))
+ =C2=A0 =C2=A0 =C2=A0(error "You didn't specify a function&= quot;))
=C2=A0 =C2=A0(let ((func-lib (find-function-library function lis= p-only t)))
- =C2=A0 =C2=A0(find-function-search-for-symbol (car func-li= b) nil (cdr func-lib))))
+ =C2=A0 =C2=A0(find-function-search-for-symbol= (car func-lib) nil (cdr func-lib)
+ =C2=A0 =C2=A0 no-error)))
=C2=A0=
=C2=A0(defun find-function-read (&optional type)
=C2=A0 =C2=A0&q= uot;Read and return an interned symbol, defaulting to the one near point.@@ -432,7 +443,9 @@
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 t nil nil (and symb (symbol-name symb)))))))
=C2=A0=
=C2=A0(defun find-function-do-it (symbol type switch-fn)
- =C2=A0&qu= ot;Find Emacs Lisp SYMBOL in a buffer and display it.
+ =C2=A0"Find= Emacs Lisp SYMBOL of TYPE in a buffer, display it with SWITCH-FN and retur= n t, else nil if not found.
+Return t if SYMBOL is found, else nil.
+=
=C2=A0TYPE is nil to search for a function definition,
=C2=A0or else= `defvar' or `defface'.
=C2=A0
@@ -454,11 +467,13 @@
=C2= =A0 =C2=A0 =C2=A0 =C2=A0(funcall switch-fn new-buf)
=C2=A0 =C2=A0 =C2=A0= =C2=A0(when new-point (goto-char new-point))
=C2=A0 =C2=A0 =C2=A0 =C2= =A0(recenter find-function-recenter-line)
- =C2=A0 =C2=A0 =C2=A0(run-hoo= ks 'find-function-after-hook))))
+ =C2=A0 =C2=A0 =C2=A0(run-hooks &#= 39;find-function-after-hook)
+ =C2=A0 =C2=A0 =C2=A0t)))
=C2=A0
=C2= =A0;;;###autoload
=C2=A0(defun find-function (function)
=C2=A0 =C2=A0= "Find the definition of the FUNCTION near point.
+Return t if FUNCT= ION is found, else nil.
=C2=A0
=C2=A0Finds the source file containing= the definition of the function
=C2=A0near point (selected by `function-= called-at-point') in a buffer and
@@ -474,6 +489,7 @@
=C2=A0;;;##= #autoload
=C2=A0(defun find-function-other-window (function)
=C2=A0 = =C2=A0"Find, in another window, the definition of FUNCTION near point.=
+Return t if FUNCTION is found, else nil.
=C2=A0
=C2=A0See `find-= function' for more details."
=C2=A0 =C2=A0(interactive (find-fu= nction-read))
@@ -482,18 +498,21 @@
=C2=A0;;;###autoload
=C2=A0(de= fun find-function-other-frame (function)
=C2=A0 =C2=A0"Find, in ano= ther frame, the definition of FUNCTION near point.
+Return t if FUNCTION= is found, else nil.
=C2=A0
=C2=A0See `find-function' for more de= tails."
=C2=A0 =C2=A0(interactive (find-function-read))
=C2=A0 = =C2=A0(find-function-do-it function nil 'switch-to-buffer-other-frame))=
=C2=A0
=C2=A0;;;###autoload
-(defun find-variable-noselect (varia= ble &optional file)
- =C2=A0"Return a pair `(BUFFER . POINT)= 9; pointing to the definition of VARIABLE.
+(defun find-variable-noselec= t (variable &optional file no-error)
+ =C2=A0"Return a (buffer = . point) pair pointing to the definition of VARIABLE or nil if not found.=C2=A0
=C2=A0Finds the library containing the definition of VARIABLE i= n a buffer and
=C2=A0the point of the definition.=C2=A0 The buffer is no= t selected.
-If the variable's definition can't be found in the = buffer, return (BUFFER).
+
+If the definition can't be found and = optional NO-ERROR is non-nil,
+return nil; otherwise, signal an error.=C2=A0
=C2=A0The library where VARIABLE is defined is searched for in = FILE or
=C2=A0`find-function-source-path', if non-nil, otherwise in = `load-path'."
@@ -502,11 +521,12 @@
=C2=A0 =C2=A0 =C2=A0(let= ((library (or file
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (symbol-file variable 'defvar)
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 (help-C-file-name variable 'var))))
- =C2=A0 =C2=A0 =C2=A0(fi= nd-function-search-for-symbol variable 'defvar library))))
+ =C2=A0 = =C2=A0 =C2=A0(find-function-search-for-symbol variable 'defvar library = no-error))))
=C2=A0
=C2=A0;;;###autoload
=C2=A0(defun find-variabl= e (variable)
=C2=A0 =C2=A0"Find the definition of the VARIABLE at o= r before point.
+Return t if VARIABLE is found, else nil.
=C2=A0
= =C2=A0Finds the library containing the definition of the variable
=C2=A0= near point (selected by `variable-at-point') in a buffer and
@@ -523= ,6 +543,7 @@
=C2=A0;;;###autoload
=C2=A0(defun find-variable-other-wi= ndow (variable)
=C2=A0 =C2=A0"Find, in another window, the definiti= on of VARIABLE near point.
+Return t if VARIABLE is found, else nil.
= =C2=A0
=C2=A0See `find-variable' for more details."
=C2=A0 = =C2=A0(interactive (find-function-read 'defvar))
@@ -531,47 +552,56 = @@
=C2=A0;;;###autoload
=C2=A0(defun find-variable-other-frame (varia= ble)
=C2=A0 =C2=A0"Find, in another frame, the definition of VARIAB= LE near point.
+Return t if VARIABLE is found, else nil.
=C2=A0
= =C2=A0See `find-variable' for more details."
=C2=A0 =C2=A0(inte= ractive (find-function-read 'defvar))
=C2=A0 =C2=A0(find-function-do= -it variable 'defvar 'switch-to-buffer-other-frame))
=C2=A0
= =C2=A0;;;###autoload
-(defun find-definition-noselect (symbol type &= optional file)
- =C2=A0"Return a pair `(BUFFER . POINT)' pointi= ng to the definition of SYMBOL.
-If the definition can't be found in= the buffer, return (BUFFER).
+(defun find-definition-noselect (symbol t= ype &optional file no-error)
+ =C2=A0"Return a (buffer . point)= pair pointing to the definition of SYMBOL or nil if not found.
+The buf= fer is not selected.=C2=A0 SYMBOL may be a symbol or a string.
+If the d= efinition can't be found and optional NO-ERROR is non-nil,
+return n= il; otherwise, signal an error.
+
=C2=A0TYPE says what type of defini= tion: nil for a function, `defvar' for a
=C2=A0variable, `defface= 9; for a face.=C2=A0 This function does not switch to the
=C2=A0buffer n= or display it.
=C2=A0
-The library where SYMBOL is defined is searche= d for in FILE or
+The library where SYMBOL is defined is searched for in= optional FILE or
=C2=A0`find-function-source-path', if non-nil, oth= erwise in `load-path'."
=C2=A0 =C2=A0(cond
+ =C2=A0 ((and (s= tringp symbol)
+ (setq symbol (intern-soft symbol))
+ ;; Fall through= to next type
+ nil))
=C2=A0 =C2=A0 ((not symbol)
=C2=A0 =C2=A0 = =C2=A0(error "You didn't specify a symbol"))
=C2=A0 =C2=A0= ((null type)
- =C2=A0 =C2=A0(find-function-noselect symbol))
+ =C2= =A0 =C2=A0(find-function-noselect symbol nil no-error))
=C2=A0 =C2=A0 ((= eq type 'defvar)
- =C2=A0 =C2=A0(find-variable-noselect symbol file)= )
+ =C2=A0 =C2=A0(find-variable-noselect symbol file no-error))
=C2= =A0 =C2=A0 (t
=C2=A0 =C2=A0 =C2=A0(let ((library (or file (symbol-file s= ymbol type))))
- =C2=A0 =C2=A0 =C2=A0(find-function-search-for-symbol sy= mbol type library)))))
+ =C2=A0 =C2=A0 =C2=A0(find-function-search-for-s= ymbol symbol type library no-error)))))
=C2=A0
=C2=A0;; For symmetry,= this should be called find-face; but some programs
=C2=A0;; assume that= , if that name is defined, it means something else.
=C2=A0;;;###autoload=
=C2=A0(defun find-face-definition (face)
=C2=A0 =C2=A0"Find the= definition of FACE.=C2=A0 FACE defaults to the name near point.
+Return= t if FACE is found, else nil.
=C2=A0
-Finds the Emacs Lisp library c= ontaining the definition of the face
+Find the Emacs Lisp library contai= ning the definition of the face
=C2=A0near point (selected by `variable-= at-point') in a buffer and
-places point before the definition.
+= place point before the definition.
=C2=A0
=C2=A0Set mark before movin= g, if the buffer already existed.
=C2=A0
-The library where FACE is d= efined is searched for in
-`find-function-source-path', if non-nil, = otherwise in `load-path'.
-See also `find-function-recenter-line'= ; and `find-function-after-hook'."
+The library searched for FA= CE is given by `find-function-source-path',
+if non-nil, otherwise `= load-path'.=C2=A0 See also
+`find-function-recenter-line' and `f= ind-function-after-hook'."
=C2=A0 =C2=A0(interactive (find-func= tion-read 'defface))
=C2=A0 =C2=A0(find-function-do-it face 'def= face 'switch-to-buffer))
=C2=A0
--001a113cd4e29ef0400533c0c7ad-- From debbugs-submit-bounces@debbugs.gnu.org Mon Nov 06 20:03:48 2017 Received: (at 23623) by debbugs.gnu.org; 7 Nov 2017 01:03:48 +0000 Received: from localhost ([127.0.0.1]:54943 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eBsIu-00065W-AZ for submit@debbugs.gnu.org; Mon, 06 Nov 2017 20:03:48 -0500 Received: from mail-io0-f176.google.com ([209.85.223.176]:48613) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eBsIs-00065J-OP for 23623@debbugs.gnu.org; Mon, 06 Nov 2017 20:03:47 -0500 Received: by mail-io0-f176.google.com with SMTP id d66so397817ioe.5 for <23623@debbugs.gnu.org>; Mon, 06 Nov 2017 17:03:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=3kIDb1iagPdlcxlQg79FMkyN1eXWK1g9mKuiLaf88i8=; b=b0OJEPQXtrEIRaww2Lmu20jp//bWqM9AtQ85RjcitotFlv0rtGBYsIwNgQxDHk6g/r poxB0v2N2UnYelcNxDPGuMQm6BNagkfT8yV/2gMU2Eke14wCRB27NcNVd4DpB5NncPe4 tEWX7e8Sbh0ILWXprMl+0af2ueBDx600H39cb+r+FwnxhIMSemX4N7Yl6hyfNe6GLArt up/SPmZTkiSi1756eryST/3XFG+1meLdTvCe/KXtJ9pBUAsRX8VvP1YYg4mpgUmn1qeU 4ktUi45OY7lL3DZ4NQ8AdeIFhAoXYn+LoyI88zCG/VHCjTVYSmPTmzoEvrValaE3Hp6c yVUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:references:date :in-reply-to:message-id:user-agent:mime-version; bh=3kIDb1iagPdlcxlQg79FMkyN1eXWK1g9mKuiLaf88i8=; b=hhK+EL5qeRNXtZhYvFQb5qXM+ADvXFntX3/I0l1/b5oKrozeOR1ib8rmd41eFsTEGj jKRyiI+zsW0NiSZ+YSwXusVOSYyNgrW9vKprdg5EQLlhKKepCldz1SDqkKFnxjGyH/s3 tXtcQDTSsLsfdDD5WT66z69xRmki1g7OE5kISgTNM48XVH2TY9iTKCGToPV6iYFJqMCv vqI7Re5xysVWVMbixrZx3b0tGWOLijfWoJhx4r0x+L218zxjOEPuIEEhZbCHb0yB3K7w 8CZyKKj6AbTTiUQeWUoQgKQWwls31wG3R2jOUXpZ/YzQfD07HIgGehx6aNaucJ5/QpxW myaQ== X-Gm-Message-State: AJaThX6R036asnoHzi9p/TkwvmzEo0gL0mNBMouIioxEKv6TtKrBnQhZ jNuNkOTn7tA2Ui4PTvjgfaolKQ== X-Google-Smtp-Source: ABhQp+SnKBkgdOB94njt6rFztwxvkqBCfa0ULrdmtMZtiYAMdoolQoxh0QxqDIgsgr/o3/THr/rUpA== X-Received: by 10.107.20.130 with SMTP id 124mr21570648iou.36.1510016620970; Mon, 06 Nov 2017 17:03:40 -0800 (PST) Received: from zebian ([45.2.119.34]) by smtp.googlemail.com with ESMTPSA id e89sm5909928itd.3.2017.11.06.17.03.39 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 06 Nov 2017 17:03:39 -0800 (PST) From: Noam Postavsky To: Robert Weiner Subject: Re: bug#23623: Patch to improve function options in find-func.el References: Date: Mon, 06 Nov 2017 20:03:38 -0500 In-Reply-To: (Robert Weiner's message of "Thu, 26 May 2016 11:52:09 -0400") Message-ID: <87o9oe6gt1.fsf@users.sourceforge.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.90 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.1 (--) X-Debbugs-Envelope-To: 23623 Cc: 23623@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.1 (--) Robert Weiner writes: > Note that the one large patch section of one function is really just a > change of a line at the end of the function but diff generated a large > context patch for it, maybe the indentation changed. The patch seems to have got mangled by some line wrapping and similar. Please send as attachment instead. Please don't post to both emacs-devel and bug-gnu-emacs. > Please let me know if these changes are acceptable. They provide many > benefits to potential callers of this package and make the *-noselect > functions more straightforward to use. I think it's okay for master. > +Visit the library in a buffer, and return a (buffer . position) pair, The convention we use in docstrings is that placeholders in structures should be in upper case. The way you wrote it here would be describing a function which does (cons 'buffer 'position). From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 17 23:33:55 2017 Received: (at 23623) by debbugs.gnu.org; 18 Dec 2017 04:33:55 +0000 Received: from localhost ([127.0.0.1]:39537 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eQn7i-00087F-U8 for submit@debbugs.gnu.org; Sun, 17 Dec 2017 23:33:55 -0500 Received: from eggs.gnu.org ([208.118.235.92]:38566) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eQn7h-000872-Uv for 23623@debbugs.gnu.org; Sun, 17 Dec 2017 23:33:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eQn7Q-0002zc-Ex for 23623@debbugs.gnu.org; Sun, 17 Dec 2017 23:33:45 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,HTML_MESSAGE, T_RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:57412) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eQn7Q-0002zX-9r for 23623@debbugs.gnu.org; Sun, 17 Dec 2017 23:33:36 -0500 Received: from mail-qk0-f179.google.com ([209.85.220.179]:43824) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.82) (envelope-from ) id 1eQn7Q-0007Ea-04 for 23623@debbugs.gnu.org; Sun, 17 Dec 2017 23:33:36 -0500 Received: by mail-qk0-f179.google.com with SMTP id j207so16906279qke.10 for <23623@debbugs.gnu.org>; Sun, 17 Dec 2017 20:33:35 -0800 (PST) X-Gm-Message-State: AKGB3mJr2a+kRQgnz5PTzEvGus6kKJE8sK4J29jnA3Wui2mvtGEVUSfh l9S/SR/AyyhNibSYczNw9x4K1J9w7ze5AUddo+M= X-Google-Smtp-Source: ACJfBouSUw6BmNDAXnPT31Z7cVn8bWtSn3B1sEiXEB0upkA8hSuvVOT6M9QOsIGfkjiFWJ4xirULiLZ9+LVAiAqFK5s= X-Received: by 10.55.6.22 with SMTP id 22mr4080419qkg.231.1513571615215; Sun, 17 Dec 2017 20:33:35 -0800 (PST) MIME-Version: 1.0 Received: by 10.200.55.124 with HTTP; Sun, 17 Dec 2017 20:33:04 -0800 (PST) In-Reply-To: <87o9oe6gt1.fsf@users.sourceforge.net> References: <87o9oe6gt1.fsf@users.sourceforge.net> From: Robert Weiner Date: Sun, 17 Dec 2017 23:33:04 -0500 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: bug#23623: Patch to improve function options in find-func.el To: Noam Postavsky Content-Type: multipart/mixed; boundary="001a1148cce877ba25056095da19" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -2.5 (--) X-Debbugs-Envelope-To: 23623 Cc: 23623@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: rswgnu@gmail.com Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) --001a1148cce877ba25056095da19 Content-Type: multipart/alternative; boundary="001a1148cce877ba21056095da17" --001a1148cce877ba21056095da17 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Nov 6, 2017 at 8:03 PM, Noam Postavsky wrote: > Robert Weiner writes: > > > I think it's okay for master. > =E2=80=8BSorry, I lost track of this and didn't get back to you.=E2=80=8B > =E2=80=8B=E2=80=8B > > =E2=80=8B=E2=80=8B > > +Visit the library in a buffer, and return a (buffer . position) pair, > =E2=80=8B=E2=80=8B > > =E2=80=8B=E2=80=8B > The convention we use in docstrings is that placeholders in structures > =E2=80=8B=E2=80=8B > should be in upper case. The way you wrote it here would be describing > =E2=80=8B=E2=80=8B > a function which does (cons 'buffer 'position). > =E2=80=8B=E2=80=8B =E2=80=8BI have made this requested change and herein attach the patch. I = hope you can integrate it sometime. Bob =E2=80=8B --001a1148cce877ba21056095da17 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Mon, Nov 6, 20= 17 at 8:03 PM, Noam Postavsky <npostavs@users.sourceforge.net> wrote:
Rober= t Weiner <rswgnu@g= mail.com> writes:


I think it's okay for master.

=E2=80=8BSorry= , I lost track of this and didn't get back to you.=E2=80=8B
=E2=80=8B=E2=80=8B

=E2=80=8B=E2=80=8B
> +Visit the library in a buffer, and= return a (buffer . position) pair,
=E2=80=8B=E2=80=8B

=E2=80=8B=E2=80=8B
The convention we use in docstrings is t= hat placeholders in structures
=E2=80=8B=E2=80=8B
should be in upper case.=C2=A0 The way y= ou wrote it here would be describing
=E2=80=8B=E2=80=8B
a function which does (cons 'buffer = 'position).
=E2=80=8B=E2=80=8B
=E2=80=8BI have made this requested ch= ange and herein attach the patch.=C2=A0 I hope
you can integrate it someti= me.

Bob

=E2=80=8B

--001a1148cce877ba21056095da17-- --001a1148cce877ba25056095da19 Content-Type: application/octet-stream; name="find-func.el.patch" Content-Disposition: attachment; filename="find-func.el.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jbbpfm4m0 ZGlmZiAtdSBmaW5kLWZ1bmMtb3JpZy5lbCBmaW5kLWZ1bmMuZWwKLS0tIGZpbmQtZnVuYy1vcmln LmVsIDIwMTYtMDUtMTcgMTI6MTY6MzMuMDAwMDAwMDAwIC0wNDAwCisrKyBmaW5kLWZ1bmMuZWwg MjAxNi0wNS0yNiAxMToxNDowMi4wMDAwMDAwMDAgLTA0MDAKQEAgLTE3Nyw5ICsxNzcsMTEgQEAK ICAgICAgICAgICAgIChzZXRxIG5hbWUgcmVsKSkpKQogICAgICh1bmxlc3MgKGVxdWFsIG5hbWUg bGlicmFyeSkgbmFtZSkpKQogCi0oZGVmdW4gZmluZC1saWJyYXJ5LW5hbWUgKGxpYnJhcnkpCiso ZGVmdW4gZmluZC1saWJyYXJ5LW5hbWUgKGxpYnJhcnkgJm9wdGlvbmFsIG5vLWVycm9yKQogICAi UmV0dXJuIHRoZSBhYnNvbHV0ZSBmaWxlIG5hbWUgb2YgdGhlIEVtYWNzIExpc3Agc291cmNlIG9m IExJQlJBUlkuCi1MSUJSQVJZIHNob3VsZCBiZSBhIHN0cmluZyAodGhlIG5hbWUgb2YgdGhlIGxp YnJhcnkpLiIKK0xJQlJBUlkgc2hvdWxkIGJlIGEgc3RyaW5nICh0aGUgbmFtZSBvZiB0aGUgbGli cmFyeSkuCitTaWduYWxzIGFuIGVycm9yIGlmIHRoZSBzb3VyY2UgbG9jYXRpb24gaXMgbm90IGZv dW5kLCB1bmxlc3Mgb3B0aW9uYWwKK05PLUVSUk9SIGlzIG5vbi1uaWwsIGluIHdoaWNoIGNhc2Ug bmlsIGlzIHJldHVybmVkLiIKICAgOzsgSWYgdGhlIGxpYnJhcnkgaXMgYnl0ZS1jb21waWxlZCwg dHJ5IHRvIGZpbmQgYSBzb3VyY2UgbGlicmFyeSBieQogICA7OyB0aGUgc2FtZSBuYW1lLgogICAo aWYgKHN0cmluZy1tYXRjaCAiXFwuZWxcXChjXFwoXFwuLipcXCk/XFwpXFwnIiBsaWJyYXJ5KQpA QCAtMjAxLDcgKzIwMyw4IEBACiAgICAgICAgICAgKGxvY2F0ZS1maWxlIHJlbAogICAgICAgICAg ICAgICAgICAgICAgICAob3IgZmluZC1mdW5jdGlvbi1zb3VyY2UtcGF0aCBsb2FkLXBhdGgpCiAg ICAgICAgICAgICAgICAgICAgICAgIGxvYWQtZmlsZS1yZXAtc3VmZml4ZXMpKSkpKQotICAgKGVy cm9yICJDYW4ndCBmaW5kIGxpYnJhcnkgJXMiIGxpYnJhcnkpKSkKKyAgICh1bmxlc3Mgbm8tZXJy b3IKKyAgICAgKGVycm9yICJDYW4ndCBmaW5kIGxpYnJhcnkgJXMiIGxpYnJhcnkpKSkpCiAKIChk ZWZ2YXIgZmluZC1mdW5jdGlvbi1DLXNvdXJjZS1kaXJlY3RvcnkKICAgKGxldCAoKGRpciAoZXhw YW5kLWZpbGUtbmFtZSAic3JjIiBzb3VyY2UtZGlyZWN0b3J5KSkpCkBAIC0yMjQsOSArMjI3LDEx IEBACiAgICAgICAgICAgICAgICBvZnVuYykpKQogICAgICAgZnVuYykpCiAKLShkZWZ1biBmaW5k LWZ1bmN0aW9uLUMtc291cmNlIChmdW4tb3ItdmFyIGZpbGUgdHlwZSkKKyhkZWZ1biBmaW5kLWZ1 bmN0aW9uLUMtc291cmNlIChmdW4tb3ItdmFyIGZpbGUgdHlwZSAmb3B0aW9uYWwgbm8tZXJyb3Ip CiAgICJGaW5kIHRoZSBzb3VyY2UgbG9jYXRpb24gd2hlcmUgRlVOLU9SLVZBUiBpcyBkZWZpbmVk IGluIEZJTEUuCi1UWVBFIHNob3VsZCBiZSBuaWwgdG8gZmluZCBhIGZ1bmN0aW9uLCBvciBgZGVm dmFyJyB0byBmaW5kIGEgdmFyaWFibGUuIgorVFlQRSBzaG91bGQgYmUgbmlsIHRvIGZpbmQgYSBm dW5jdGlvbiwgb3IgYGRlZnZhcicgdG8gZmluZCBhIHZhcmlhYmxlLgorU2lnbmFscyBhbiBlcnJv ciBpZiB0aGUgc291cmNlIGxvY2F0aW9uIGlzIG5vdCBmb3VuZCwgdW5sZXNzIG9wdGlvbmFsCitO Ty1FUlJPUiBpcyBub24tbmlsLCBpbiB3aGljaCBjYXNlIG5pbCBpcyByZXR1cm5lZC4iCiAgIChs ZXQgKChkaXIgKG9yIGZpbmQtZnVuY3Rpb24tQy1zb3VyY2UtZGlyZWN0b3J5CiAgICAgICAgICAg ICAgICAgIChyZWFkLWRpcmVjdG9yeS1uYW1lICJFbWFjcyBDIHNvdXJjZSBkaXI6ICIgbmlsIG5p bCB0KSkpKQogICAgIChzZXRxIGZpbGUgKGV4cGFuZC1maWxlLW5hbWUgZmlsZSBkaXIpKQpAQCAt MjQyLDcgKzI0Nyw3IEBACiAgICAgICAgKGZpbmQtZnVuY3Rpb24tYWR2aXNlZC1vcmlnaW5hbCBm dW4tb3ItdmFyKSkpKSkKICAgKHdpdGgtY3VycmVudC1idWZmZXIgKGZpbmQtZmlsZS1ub3NlbGVj dCBmaWxlKQogICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCi0gICAgKHVubGVzcyAocmUtc2Vh cmNoLWZvcndhcmQKKyAgICAoY29uZCAoKHJlLXNlYXJjaC1mb3J3YXJkCiAgICAgIChpZiB0eXBl CiAgKGNvbmNhdCAiREVGVkFSW0EtWl9dKlsgXHRcbl0qKFsgXHRcbl0qXCIiCiAgKHJlZ2V4cC1x dW90ZSAoc3ltYm9sLW5hbWUgZnVuLW9yLXZhcikpCkBAIC0yNTEsOCArMjU2LDEwIEBACiAgICAg ICAgKHJlZ2V4cC1xdW90ZSAoc3Vici1uYW1lIChhZHZpY2UtLWNkKnIgZnVuLW9yLXZhcikpKQog ICAgICAgICJcIiIpKQogICAgICBuaWwgdCkKLSAgICAgIChlcnJvciAiQ2FuJ3QgZmluZCBzb3Vy Y2UgZm9yICVzIiBmdW4tb3ItdmFyKSkKLSAgICAoY29ucyAoY3VycmVudC1idWZmZXIpIChtYXRj aC1iZWdpbm5pbmcgMCkpKSkKKyAgIChjb25zIChjdXJyZW50LWJ1ZmZlcikgKG1hdGNoLWJlZ2lu bmluZyAwKSkpCisgIChuby1lcnJvciBuaWwpCisgICh0IChlcnJvciAiQ2FuJ3QgZmluZCBzb3Vy Y2UgZm9yICVzIiBmdW4tb3ItdmFyKSkpKSkKKwogCiA7OzsjIyNhdXRvbG9hZAogKGRlZnVuIGZp bmQtbGlicmFyeSAobGlicmFyeSkKQEAgLTI4Niw2MyArMjkzLDY2IEBACiAgICAgKGNvbmRpdGlv bi1jYXNlIG5pbCAoc3dpdGNoLXRvLWJ1ZmZlciBidWYpIChlcnJvciAocG9wLXRvLWJ1ZmZlciBi dWYpKSkpKQogCiA7OzsjIyNhdXRvbG9hZAotKGRlZnVuIGZpbmQtZnVuY3Rpb24tc2VhcmNoLWZv ci1zeW1ib2wgKHN5bWJvbCB0eXBlIGxpYnJhcnkpCi0gICJTZWFyY2ggZm9yIFNZTUJPTCdzIGRl ZmluaXRpb24gb2YgdHlwZSBUWVBFIGluIExJQlJBUlkuCi1WaXNpdCB0aGUgbGlicmFyeSBpbiBh IGJ1ZmZlciwgYW5kIHJldHVybiBhIGNvbnMgY2VsbCAoQlVGRkVSIC4gUE9TSVRJT04pLAotb3Ig anVzdCAoQlVGRkVSIC4gbmlsKSBpZiB0aGUgZGVmaW5pdGlvbiBjYW4ndCBiZSBmb3VuZCBpbiB0 aGUgZmlsZS4KKyhkZWZ1biBmaW5kLWZ1bmN0aW9uLXNlYXJjaC1mb3Itc3ltYm9sIChzeW1ib2wg dHlwZSBsaWJyYXJ5ICZvcHRpb25hbCBuby1lcnJvcikKKyAgIlNlYXJjaCBmb3IgU1lNQk9MJ3Mg ZGVmaW5pdGlvbiBvZiBUWVBFIGluIExJQlJBUlkuCitWaXNpdCB0aGUgbGlicmFyeSBpbiBhIGJ1 ZmZlciwgYW5kIHJldHVybiBhIChCVUZGRVIgLiBQT1NJVElPTikgcGFpciwKK29yIG5pbCBpZiB0 aGUgZGVmaW5pdGlvbiBjYW4ndCBiZSBmb3VuZCBpbiB0aGUgbGlicmFyeS4KKworSWYgdGhlIGRl ZmluaXRpb24gY2FuJ3QgYmUgZm91bmQgYW5kIG9wdGlvbmFsIE5PLUVSUk9SIGlzIG5vbi1uaWws CityZXR1cm4gbmlsOyBvdGhlcndpc2UsIHNpZ25hbCBhbiBlcnJvci4KIAogSWYgVFlQRSBpcyBu aWwsIGxvb2sgZm9yIGEgZnVuY3Rpb24gZGVmaW5pdGlvbi4KIE90aGVyd2lzZSwgVFlQRSBzcGVj aWZpZXMgdGhlIGtpbmQgb2YgZGVmaW5pdGlvbiwKIGFuZCBpdCBpcyBpbnRlcnByZXRlZCB2aWEg YGZpbmQtZnVuY3Rpb24tcmVnZXhwLWFsaXN0Jy4KIFRoZSBzZWFyY2ggaXMgZG9uZSBpbiB0aGUg c291cmNlIGZvciBsaWJyYXJ5IExJQlJBUlkuIgogICAoaWYgKG51bGwgbGlicmFyeSkKLSAgICAg IChlcnJvciAiRG9uJ3Qga25vdyB3aGVyZSBgJXMnIGlzIGRlZmluZWQiIHN5bWJvbCkpCi0gIDs7 IFNvbWUgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIGFzIHBhcnQgb2YgdGhlIGNvbnN0cnVjdAotICA7 OyB0aGF0IGRlZmluZXMgc29tZXRoaW5nIGVsc2UuCi0gICh3aGlsZSAoYW5kIChzeW1ib2xwIHN5 bWJvbCkgKGdldCBzeW1ib2wgJ2RlZmluaXRpb24tbmFtZSkpCi0gICAgKHNldHEgc3ltYm9sIChn ZXQgc3ltYm9sICdkZWZpbml0aW9uLW5hbWUpKSkKLSAgKGlmIChzdHJpbmctbWF0Y2ggIlxcYHNy Yy9cXCguKlxcLlxcKGNcXHxtXFwpXFwpXFwnIiBsaWJyYXJ5KQotICAgICAgKGZpbmQtZnVuY3Rp b24tQy1zb3VyY2Ugc3ltYm9sIChtYXRjaC1zdHJpbmcgMSBsaWJyYXJ5KSB0eXBlKQotICAgICh3 aGVuIChzdHJpbmctbWF0Y2ggIlxcLmVsXFwoY1xcKVxcJyIgbGlicmFyeSkKLSAgICAgIChzZXRx IGxpYnJhcnkgKHN1YnN0cmluZyBsaWJyYXJ5IDAgKG1hdGNoLWJlZ2lubmluZyAxKSkpKQotICAg IDs7IFN0cmlwIGV4dGVuc2lvbiBmcm9tIC5lbWFjcy5lbCB0byBtYWtlIHN1cmUgc3ltYm9sIGlz IHNlYXJjaGVkIGluCi0gICAgOzsgLmVtYWNzIHRvby4KLSAgICAod2hlbiAoc3RyaW5nLW1hdGNo ICJcXC5lbWFjc1xcKC5lbFxcKSIgbGlicmFyeSkKLSAgICAgIChzZXRxIGxpYnJhcnkgKHN1YnN0 cmluZyBsaWJyYXJ5IDAgKG1hdGNoLWJlZ2lubmluZyAxKSkpKQotICAgIChsZXQqICgoZmlsZW5h bWUgKGZpbmQtbGlicmFyeS1uYW1lIGxpYnJhcnkpKQotICAgKHJlZ2V4cC1zeW1ib2wgKGNkciAo YXNzcSB0eXBlIGZpbmQtZnVuY3Rpb24tcmVnZXhwLWFsaXN0KSkpKQotICAgICAgKHdpdGgtY3Vy cmVudC1idWZmZXIgKGZpbmQtZmlsZS1ub3NlbGVjdCBmaWxlbmFtZSkKLSAobGV0ICgocmVnZXhw IChpZiAoZnVuY3Rpb25wIHJlZ2V4cC1zeW1ib2wpIHJlZ2V4cC1zeW1ib2wKLSAgICAgICAgICAg ICAgICAgICAgICAgIChmb3JtYXQgKHN5bWJvbC12YWx1ZSByZWdleHAtc3ltYm9sKQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBFbnRyeSBmb3IgYCAoYmFja3F1b3RlKSBtYWNy byBpbiBsb2FkZGVmcy5lbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgKGRl ZmFsaWFzIChxdW90ZSBcYCkuLi4sIGhhcyBhIFwgYnV0Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDs7IChzeW1ib2wtbmFtZSBzeW1ib2wpIGRvZXNuJ3QuICBBZGQgYW4KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgb3B0aW9uYWwgXCB0byBjYXRjaCB0aGlzLgot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0ICJcXFxcPyIKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVnZXhwLXF1b3RlIChzeW1ib2wtbmFt ZSBzeW1ib2wpKSkpKSkKLSAgICAgIChjYXNlLWZvbGQtc2VhcmNoKSkKLSAgKHdpdGgtc3ludGF4 LXRhYmxlIGVtYWNzLWxpc3AtbW9kZS1zeW50YXgtdGFibGUKLSAgICAoZ290by1jaGFyIChwb2lu dC1taW4pKQotICAgIChpZiAoaWYgKGZ1bmN0aW9ucCByZWdleHApCi0gICAgICAgICAgICAgICAg ICAgIChmdW5jYWxsIHJlZ2V4cCBzeW1ib2wpCi0gICAgICAgICAgICAgICAgICAob3IgKHJlLXNl YXJjaC1mb3J3YXJkIHJlZ2V4cCBuaWwgdCkKLSAgICAgICAgICAgICAgICAgICAgICA7OyBgcmVn ZXhwJyBtYXRjaGVzIGRlZmluaXRpb25zIHVzaW5nIGtub3duIGZvcm1zIGxpa2UKLSAgICAgICAg ICAgICAgICAgICAgICA7OyBgZGVmdW4nLCBvciBgZGVmdmFyJy4gIEJ1dCBzb21lIGZ1bmN0aW9u cy92YXJpYWJsZXMKLSAgICAgICAgICAgICAgICAgICAgICA7OyBhcmUgZGVmaW5lZCB1c2luZyBz cGVjaWFsIG1hY3JvcyAob3IgZnVuY3Rpb25zKSwgc28KLSAgICAgICAgICAgICAgICAgICAgICA7 OyBpZiBgcmVnZXhwJyBjYW4ndCBmaW5kIHRoZSBkZWZpbml0aW9uLCB3ZSBsb29rIGZvcgotICAg ICAgICAgICAgICAgICAgICAgIDs7IHNvbWV0aGluZyBvZiB0aGUgZm9ybSAiKFNPTUVUSElORyA8 c3ltYm9sPiAuLi4pIi4KLSAgICAgICAgICAgICAgICAgICAgICA7OyBUaGlzIGZhaWxzIHRvIGRp c3Rpbmd1aXNoIGZ1bmN0aW9uIGRlZmluaXRpb25zIGZyb20KLSAgICAgICAgICAgICAgICAgICAg ICA7OyB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgKG9yIGV2ZW4gdXNlcyB0aGVyZW9mKSwgYnV0IGlz Ci0gICAgICAgICAgICAgICAgICAgICAgOzsgYSBnb29kIHByYWdtYXRpYyBmYWxsYmFjay4KLSAg ICAgICAgICAgICAgICAgICAgICAocmUtc2VhcmNoLWZvcndhcmQKLSAgICAgICAgICAgICAgICAg ICAgICAgKGNvbmNhdCAiXihbXiBdKyIgZmluZC1mdW5jdGlvbi1zcGFjZS1yZSAiWycoXT8iCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlZ2V4cC1xdW90ZSAoc3ltYm9sLW5hbWUg c3ltYm9sKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFxfPiIpCi0gICAgICAg ICAgICAgICAgICAgICAgIG5pbCB0KSkpCi0gKHByb2duCi0gIChiZWdpbm5pbmctb2YtbGluZSkK LSAgKGNvbnMgKGN1cnJlbnQtYnVmZmVyKSAocG9pbnQpKSkKLSAgICAgIChjb25zIChjdXJyZW50 LWJ1ZmZlcikgbmlsKSkpKSkpKSkKKyAgICAgICh1bmxlc3Mgbm8tZXJyb3IKKyAoZXJyb3IgIkRv bid0IGtub3cgd2hlcmUgYCVzJyBpcyBkZWZpbmVkIiBzeW1ib2wpKQorICAgIDs7IFNvbWUgZnVu Y3Rpb25zIGFyZSBkZWZpbmVkIGFzIHBhcnQgb2YgdGhlIGNvbnN0cnVjdAorICAgIDs7IHRoYXQg ZGVmaW5lcyBzb21ldGhpbmcgZWxzZS4KKyAgICAod2hpbGUgKGFuZCAoc3ltYm9scCBzeW1ib2wp IChnZXQgc3ltYm9sICdkZWZpbml0aW9uLW5hbWUpKQorICAgICAgKHNldHEgc3ltYm9sIChnZXQg c3ltYm9sICdkZWZpbml0aW9uLW5hbWUpKSkKKyAgICAoaWYgKHN0cmluZy1tYXRjaCAiXFxgc3Jj L1xcKC4qXFwuXFwoY1xcfG1cXClcXClcXCciIGxpYnJhcnkpCisgKGZpbmQtZnVuY3Rpb24tQy1z b3VyY2Ugc3ltYm9sIChtYXRjaC1zdHJpbmcgMSBsaWJyYXJ5KSB0eXBlKQorICAgICAgKHdoZW4g KHN0cmluZy1tYXRjaCAiXFwuZWxcXChjXFwpXFwnIiBsaWJyYXJ5KQorIChzZXRxIGxpYnJhcnkg KHN1YnN0cmluZyBsaWJyYXJ5IDAgKG1hdGNoLWJlZ2lubmluZyAxKSkpKQorICAgICAgOzsgU3Ry aXAgZXh0ZW5zaW9uIGZyb20gLmVtYWNzLmVsIHRvIG1ha2Ugc3VyZSBzeW1ib2wgaXMgc2VhcmNo ZWQgaW4KKyAgICAgIDs7IC5lbWFjcyB0b28uCisgICAgICAod2hlbiAoc3RyaW5nLW1hdGNoICJc XC5lbWFjc1xcKC5lbFxcKSIgbGlicmFyeSkKKyAoc2V0cSBsaWJyYXJ5IChzdWJzdHJpbmcgbGli cmFyeSAwIChtYXRjaC1iZWdpbm5pbmcgMSkpKSkKKyAgICAgIChsZXQqICgoZmlsZW5hbWUgKGZp bmQtbGlicmFyeS1uYW1lIGxpYnJhcnkpKQorICAgICAocmVnZXhwLXN5bWJvbCAoY2RyIChhc3Nx IHR5cGUgZmluZC1mdW5jdGlvbi1yZWdleHAtYWxpc3QpKSkpCisgKHdpdGgtY3VycmVudC1idWZm ZXIgKGZpbmQtZmlsZS1ub3NlbGVjdCBmaWxlbmFtZSkKKyAgKGxldCAoKHJlZ2V4cCAoaWYgKGZ1 bmN0aW9ucCByZWdleHAtc3ltYm9sKSByZWdleHAtc3ltYm9sCisgIChmb3JtYXQgKHN5bWJvbC12 YWx1ZSByZWdleHAtc3ltYm9sKQorICA7OyBFbnRyeSBmb3IgYCAoYmFja3F1b3RlKSBtYWNybyBp biBsb2FkZGVmcy5lbCwKKyAgOzsgKGRlZmFsaWFzIChxdW90ZSBcYCkuLi4sIGhhcyBhIFwgYnV0 CisgIDs7IChzeW1ib2wtbmFtZSBzeW1ib2wpIGRvZXNuJ3QuICBBZGQgYW4KKyAgOzsgb3B0aW9u YWwgXCB0byBjYXRjaCB0aGlzLgorICAoY29uY2F0ICJcXFxcPyIKKyAgKHJlZ2V4cC1xdW90ZSAo c3ltYm9sLW5hbWUgc3ltYm9sKSkpKSkpCisgKGNhc2UtZm9sZC1zZWFyY2gpKQorICAgICh3aXRo LXN5bnRheC10YWJsZSBlbWFjcy1saXNwLW1vZGUtc3ludGF4LXRhYmxlCisgICAgICAoZ290by1j aGFyIChwb2ludC1taW4pKQorICAgICAgKGlmIChpZiAoZnVuY3Rpb25wIHJlZ2V4cCkKKyAgICAg IChmdW5jYWxsIHJlZ2V4cCBzeW1ib2wpCisgICAgKG9yIChyZS1zZWFyY2gtZm9yd2FyZCByZWdl eHAgbmlsIHQpCisgOzsgYHJlZ2V4cCcgbWF0Y2hlcyBkZWZpbml0aW9ucyB1c2luZyBrbm93biBm b3JtcyBsaWtlCisgOzsgYGRlZnVuJywgb3IgYGRlZnZhcicuICBCdXQgc29tZSBmdW5jdGlvbnMv dmFyaWFibGVzCisgOzsgYXJlIGRlZmluZWQgdXNpbmcgc3BlY2lhbCBtYWNyb3MgKG9yIGZ1bmN0 aW9ucyksIHNvCisgOzsgaWYgYHJlZ2V4cCcgY2FuJ3QgZmluZCB0aGUgZGVmaW5pdGlvbiwgd2Ug bG9vayBmb3IKKyA7OyBzb21ldGhpbmcgb2YgdGhlIGZvcm0gIihTT01FVEhJTkcgPHN5bWJvbD4g Li4uKSIuCisgOzsgVGhpcyBmYWlscyB0byBkaXN0aW5ndWlzaCBmdW5jdGlvbiBkZWZpbml0aW9u cyBmcm9tCisgOzsgdmFyaWFibGUgZGVjbGFyYXRpb25zIChvciBldmVuIHVzZXMgdGhlcmVvZiks IGJ1dCBpcworIDs7IGEgZ29vZCBwcmFnbWF0aWMgZmFsbGJhY2suCisgKHJlLXNlYXJjaC1mb3J3 YXJkCisgKGNvbmNhdCAiXihbXiBdKyIgZmluZC1mdW5jdGlvbi1zcGFjZS1yZSAiWycoXT8iCisg KHJlZ2V4cC1xdW90ZSAoc3ltYm9sLW5hbWUgc3ltYm9sKSkKKyAiXFxfPiIpCisgbmlsIHQpKSkK KyAgKHByb2duCisgICAgKGJlZ2lubmluZy1vZi1saW5lKQorICAgIChjb25zIChjdXJyZW50LWJ1 ZmZlcikgKHBvaW50KSkpKSkpKSkpKSkKIAogKGRlZnVuIGZpbmQtZnVuY3Rpb24tbGlicmFyeSAo ZnVuY3Rpb24gJm9wdGlvbmFsIGxpc3Atb25seSB2ZXJib3NlKQogICAiUmV0dXJuIHRoZSBwYWly IChPUklHLUZVTkNUSU9OIC4gTElCUkFSWSkgZm9yIEZVTkNUSU9OLgpAQCAtMzYyLDkgKzM3Miw5 IEBACiAgICAgICAgIGFsaWFzZXMpCiAgICAgOzsgRklYTUUgZm9yIGNvbXBsZXRlbmVzcywgaXQg bWlnaHQgYmUgbmljZSB0byBwcmludCBzb21ldGhpbmcgbGlrZToKICAgICA7OyBmb28gKHdoaWNo IGlzIGFkdmlzZWQpLCB3aGljaCBpcyBhbiBhbGlhcyBmb3IgYmFyICh3aGljaCBpcyBhZHZpc2Vk KS4KLSAgICAod2hpbGUgKGFuZCBkZWYgKHN5bWJvbHAgZGVmKSkKLSAgICAgIChvciAoZXEgZGVm IGZ1bmN0aW9uKQotICAgICAgICAgIChub3QgdmVyYm9zZSkKKyAgICA7OyA1LzI2LzIwMTYgLSBm aXhlZCB0byBub3QgbG9vcCBmb3JldmVyIHdoZW4gKGVxIGRlZiBmdW5jdGlvbikKKyAgICAod2hp bGUgKGFuZCBkZWYgKHN5bWJvbHAgZGVmKSAobm90IChlcSBkZWYgZnVuY3Rpb24pKSkKKyAgICAg IChvciAobm90IHZlcmJvc2UpCiAgICAgICAgICAgKHNldHEgYWxpYXNlcyAoaWYgYWxpYXNlcwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQgYWxpYXNlcwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdC1tZXNzYWdlCkBAIC0zODYsMjUgKzM5Niwy NiBAQAogICAgICAgICAgICAoKHN5bWJvbC1maWxlIGZ1bmN0aW9uICdkZWZ1bikpKSkpKQogCiA7 OzsjIyNhdXRvbG9hZAotKGRlZnVuIGZpbmQtZnVuY3Rpb24tbm9zZWxlY3QgKGZ1bmN0aW9uICZv cHRpb25hbCBsaXNwLW9ubHkpCi0gICJSZXR1cm4gYSBwYWlyIChCVUZGRVIgLiBQT0lOVCkgcG9p bnRpbmcgdG8gdGhlIGRlZmluaXRpb24gb2YgRlVOQ1RJT04uCisoZGVmdW4gZmluZC1mdW5jdGlv bi1ub3NlbGVjdCAoZnVuY3Rpb24gJm9wdGlvbmFsIGxpc3Atb25seSBuby1lcnJvcikKKyAgIlJl dHVybiBhIChCVUZGRVIgLiBQT0lOVCkgcGFpciBwb2ludGluZyB0byB0aGUgZGVmaW5pdGlvbiBv ZiBGVU5DVElPTiBvciBuaWwgaWYgbm90IGZvdW5kLgorU2lnbmFscyBhbiBlcnJvciBpZiBGVU5D VElPTiBpcyBudWxsLgogCiBGaW5kcyB0aGUgc291cmNlIGZpbGUgY29udGFpbmluZyB0aGUgZGVm aW5pdGlvbiBvZiBGVU5DVElPTgogaW4gYSBidWZmZXIgYW5kIHRoZSBwb2ludCBvZiB0aGUgZGVm aW5pdGlvbi4gIFRoZSBidWZmZXIgaXMKLW5vdCBzZWxlY3RlZC4gIElmIHRoZSBmdW5jdGlvbiBk ZWZpbml0aW9uIGNhbid0IGJlIGZvdW5kIGluCi10aGUgYnVmZmVyLCByZXR1cm5zIChCVUZGRVIp Lgorbm90IHNlbGVjdGVkLgogCi1JZiBGVU5DVElPTiBpcyBhIGJ1aWx0LWluIGZ1bmN0aW9uLCB0 aGlzIGZ1bmN0aW9uIG5vcm1hbGx5Ci1hdHRlbXB0cyB0byBmaW5kIGl0IGluIHRoZSBFbWFjcyBD IHNvdXJjZXM7IGhvd2V2ZXIsIGlmIExJU1AtT05MWQotaXMgbm9uLW5pbCwgc2lnbmFsIGFuIGVy cm9yIGluc3RlYWQuCitCdWlsdC1pbiBmdW5jdGlvbnMgYXJlIGZvdW5kIHdpdGhpbiBFbWFjcyBD IHNvdXJjZXMgdW5sZXNzCitvcHRpb25hbCBMSVNQLU9OTFkgaXMgbm9uLW5pbCwgaW4gd2hpY2gg Y2FzZSBhbiBlcnJvciBpcyBzaWduYWxlZAordW5sZXNzIG9wdGlvbmFsIE5PLUVSUk9SIGlzIG5v bi1uaWwuCiAKIElmIHRoZSBmaWxlIHdoZXJlIEZVTkNUSU9OIGlzIGRlZmluZWQgaXMgbm90IGtu b3duLCB0aGVuIGl0IGlzCiBzZWFyY2hlZCBmb3IgaW4gYGZpbmQtZnVuY3Rpb24tc291cmNlLXBh dGgnIGlmIG5vbi1uaWwsIG90aGVyd2lzZQogaW4gYGxvYWQtcGF0aCcuIgogICAoaWYgKG5vdCBm dW5jdGlvbikKLSAgICAoZXJyb3IgIllvdSBkaWRuJ3Qgc3BlY2lmeSBhIGZ1bmN0aW9uIikpCisg ICAgICAoZXJyb3IgIllvdSBkaWRuJ3Qgc3BlY2lmeSBhIGZ1bmN0aW9uIikpCiAgIChsZXQgKChm dW5jLWxpYiAoZmluZC1mdW5jdGlvbi1saWJyYXJ5IGZ1bmN0aW9uIGxpc3Atb25seSB0KSkpCi0g ICAgKGZpbmQtZnVuY3Rpb24tc2VhcmNoLWZvci1zeW1ib2wgKGNhciBmdW5jLWxpYikgbmlsIChj ZHIgZnVuYy1saWIpKSkpCisgICAgKGZpbmQtZnVuY3Rpb24tc2VhcmNoLWZvci1zeW1ib2wgKGNh ciBmdW5jLWxpYikgbmlsIChjZHIgZnVuYy1saWIpCisgICAgIG5vLWVycm9yKSkpCiAKIChkZWZ1 biBmaW5kLWZ1bmN0aW9uLXJlYWQgKCZvcHRpb25hbCB0eXBlKQogICAiUmVhZCBhbmQgcmV0dXJu IGFuIGludGVybmVkIHN5bWJvbCwgZGVmYXVsdGluZyB0byB0aGUgb25lIG5lYXIgcG9pbnQuCkBA IC00MzIsNyArNDQzLDkgQEAKICAgICAgICAgICAgICAgICAgICB0IG5pbCBuaWwgKGFuZCBzeW1i IChzeW1ib2wtbmFtZSBzeW1iKSkpKSkpKQogCiAoZGVmdW4gZmluZC1mdW5jdGlvbi1kby1pdCAo c3ltYm9sIHR5cGUgc3dpdGNoLWZuKQotICAiRmluZCBFbWFjcyBMaXNwIFNZTUJPTCBpbiBhIGJ1 ZmZlciBhbmQgZGlzcGxheSBpdC4KKyAgIkZpbmQgRW1hY3MgTGlzcCBTWU1CT0wgb2YgVFlQRSBp biBhIGJ1ZmZlciwgZGlzcGxheSBpdCB3aXRoIFNXSVRDSC1GTiBhbmQgcmV0dXJuIHQsIGVsc2Ug bmlsIGlmIG5vdCBmb3VuZC4KK1JldHVybiB0IGlmIFNZTUJPTCBpcyBmb3VuZCwgZWxzZSBuaWwu CisKIFRZUEUgaXMgbmlsIHRvIHNlYXJjaCBmb3IgYSBmdW5jdGlvbiBkZWZpbml0aW9uLAogb3Ig ZWxzZSBgZGVmdmFyJyBvciBgZGVmZmFjZScuCiAKQEAgLTQ1NCwxMSArNDY3LDEzIEBACiAgICAg ICAoZnVuY2FsbCBzd2l0Y2gtZm4gbmV3LWJ1ZikKICAgICAgICh3aGVuIG5ldy1wb2ludCAoZ290 by1jaGFyIG5ldy1wb2ludCkpCiAgICAgICAocmVjZW50ZXIgZmluZC1mdW5jdGlvbi1yZWNlbnRl ci1saW5lKQotICAgICAgKHJ1bi1ob29rcyAnZmluZC1mdW5jdGlvbi1hZnRlci1ob29rKSkpKQor ICAgICAgKHJ1bi1ob29rcyAnZmluZC1mdW5jdGlvbi1hZnRlci1ob29rKQorICAgICAgdCkpKQog CiA7OzsjIyNhdXRvbG9hZAogKGRlZnVuIGZpbmQtZnVuY3Rpb24gKGZ1bmN0aW9uKQogICAiRmlu ZCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgRlVOQ1RJT04gbmVhciBwb2ludC4KK1JldHVybiB0IGlm IEZVTkNUSU9OIGlzIGZvdW5kLCBlbHNlIG5pbC4KIAogRmluZHMgdGhlIHNvdXJjZSBmaWxlIGNv bnRhaW5pbmcgdGhlIGRlZmluaXRpb24gb2YgdGhlIGZ1bmN0aW9uCiBuZWFyIHBvaW50IChzZWxl Y3RlZCBieSBgZnVuY3Rpb24tY2FsbGVkLWF0LXBvaW50JykgaW4gYSBidWZmZXIgYW5kCkBAIC00 NzQsNiArNDg5LDcgQEAKIDs7OyMjI2F1dG9sb2FkCiAoZGVmdW4gZmluZC1mdW5jdGlvbi1vdGhl ci13aW5kb3cgKGZ1bmN0aW9uKQogICAiRmluZCwgaW4gYW5vdGhlciB3aW5kb3csIHRoZSBkZWZp bml0aW9uIG9mIEZVTkNUSU9OIG5lYXIgcG9pbnQuCitSZXR1cm4gdCBpZiBGVU5DVElPTiBpcyBm b3VuZCwgZWxzZSBuaWwuCiAKIFNlZSBgZmluZC1mdW5jdGlvbicgZm9yIG1vcmUgZGV0YWlscy4i CiAgIChpbnRlcmFjdGl2ZSAoZmluZC1mdW5jdGlvbi1yZWFkKSkKQEAgLTQ4MiwxOCArNDk4LDIx IEBACiA7OzsjIyNhdXRvbG9hZAogKGRlZnVuIGZpbmQtZnVuY3Rpb24tb3RoZXItZnJhbWUgKGZ1 bmN0aW9uKQogICAiRmluZCwgaW4gYW5vdGhlciBmcmFtZSwgdGhlIGRlZmluaXRpb24gb2YgRlVO Q1RJT04gbmVhciBwb2ludC4KK1JldHVybiB0IGlmIEZVTkNUSU9OIGlzIGZvdW5kLCBlbHNlIG5p bC4KIAogU2VlIGBmaW5kLWZ1bmN0aW9uJyBmb3IgbW9yZSBkZXRhaWxzLiIKICAgKGludGVyYWN0 aXZlIChmaW5kLWZ1bmN0aW9uLXJlYWQpKQogICAoZmluZC1mdW5jdGlvbi1kby1pdCBmdW5jdGlv biBuaWwgJ3N3aXRjaC10by1idWZmZXItb3RoZXItZnJhbWUpKQogCiA7OzsjIyNhdXRvbG9hZAot KGRlZnVuIGZpbmQtdmFyaWFibGUtbm9zZWxlY3QgKHZhcmlhYmxlICZvcHRpb25hbCBmaWxlKQot ICAiUmV0dXJuIGEgcGFpciBgKEJVRkZFUiAuIFBPSU5UKScgcG9pbnRpbmcgdG8gdGhlIGRlZmlu aXRpb24gb2YgVkFSSUFCTEUuCisoZGVmdW4gZmluZC12YXJpYWJsZS1ub3NlbGVjdCAodmFyaWFi bGUgJm9wdGlvbmFsIGZpbGUgbm8tZXJyb3IpCisgICJSZXR1cm4gYSAoQlVGRkVSIC4gUE9JTlQp IHBhaXIgcG9pbnRpbmcgdG8gdGhlIGRlZmluaXRpb24gb2YgVkFSSUFCTEUgb3IgbmlsIGlmIG5v dCBmb3VuZC4KIAogRmluZHMgdGhlIGxpYnJhcnkgY29udGFpbmluZyB0aGUgZGVmaW5pdGlvbiBv ZiBWQVJJQUJMRSBpbiBhIGJ1ZmZlciBhbmQKIHRoZSBwb2ludCBvZiB0aGUgZGVmaW5pdGlvbi4g IFRoZSBidWZmZXIgaXMgbm90IHNlbGVjdGVkLgotSWYgdGhlIHZhcmlhYmxlJ3MgZGVmaW5pdGlv biBjYW4ndCBiZSBmb3VuZCBpbiB0aGUgYnVmZmVyLCByZXR1cm4gKEJVRkZFUikuCisKK0lmIHRo ZSBkZWZpbml0aW9uIGNhbid0IGJlIGZvdW5kIGFuZCBvcHRpb25hbCBOTy1FUlJPUiBpcyBub24t bmlsLAorcmV0dXJuIG5pbDsgb3RoZXJ3aXNlLCBzaWduYWwgYW4gZXJyb3IuCiAKIFRoZSBsaWJy YXJ5IHdoZXJlIFZBUklBQkxFIGlzIGRlZmluZWQgaXMgc2VhcmNoZWQgZm9yIGluIEZJTEUgb3IK IGBmaW5kLWZ1bmN0aW9uLXNvdXJjZS1wYXRoJywgaWYgbm9uLW5pbCwgb3RoZXJ3aXNlIGluIGBs b2FkLXBhdGgnLiIKQEAgLTUwMiwxMSArNTIxLDEyIEBACiAgICAgKGxldCAoKGxpYnJhcnkgKG9y IGZpbGUKICAgICAgICAgICAgICAgICAgICAgICAgKHN5bWJvbC1maWxlIHZhcmlhYmxlICdkZWZ2 YXIpCiAgICAgICAgICAgICAgICAgICAgICAgIChoZWxwLUMtZmlsZS1uYW1lIHZhcmlhYmxlICd2 YXIpKSkpCi0gICAgICAoZmluZC1mdW5jdGlvbi1zZWFyY2gtZm9yLXN5bWJvbCB2YXJpYWJsZSAn ZGVmdmFyIGxpYnJhcnkpKSkpCisgICAgICAoZmluZC1mdW5jdGlvbi1zZWFyY2gtZm9yLXN5bWJv bCB2YXJpYWJsZSAnZGVmdmFyIGxpYnJhcnkgbm8tZXJyb3IpKSkpCiAKIDs7OyMjI2F1dG9sb2Fk CiAoZGVmdW4gZmluZC12YXJpYWJsZSAodmFyaWFibGUpCiAgICJGaW5kIHRoZSBkZWZpbml0aW9u IG9mIHRoZSBWQVJJQUJMRSBhdCBvciBiZWZvcmUgcG9pbnQuCitSZXR1cm4gdCBpZiBWQVJJQUJM RSBpcyBmb3VuZCwgZWxzZSBuaWwuCiAKIEZpbmRzIHRoZSBsaWJyYXJ5IGNvbnRhaW5pbmcgdGhl IGRlZmluaXRpb24gb2YgdGhlIHZhcmlhYmxlCiBuZWFyIHBvaW50IChzZWxlY3RlZCBieSBgdmFy aWFibGUtYXQtcG9pbnQnKSBpbiBhIGJ1ZmZlciBhbmQKQEAgLTUyMyw2ICs1NDMsNyBAQAogOzs7 IyMjYXV0b2xvYWQKIChkZWZ1biBmaW5kLXZhcmlhYmxlLW90aGVyLXdpbmRvdyAodmFyaWFibGUp CiAgICJGaW5kLCBpbiBhbm90aGVyIHdpbmRvdywgdGhlIGRlZmluaXRpb24gb2YgVkFSSUFCTEUg bmVhciBwb2ludC4KK1JldHVybiB0IGlmIFZBUklBQkxFIGlzIGZvdW5kLCBlbHNlIG5pbC4KIAog U2VlIGBmaW5kLXZhcmlhYmxlJyBmb3IgbW9yZSBkZXRhaWxzLiIKICAgKGludGVyYWN0aXZlIChm aW5kLWZ1bmN0aW9uLXJlYWQgJ2RlZnZhcikpCkBAIC01MzEsNDcgKzU1Miw1NiBAQAogOzs7IyMj YXV0b2xvYWQKIChkZWZ1biBmaW5kLXZhcmlhYmxlLW90aGVyLWZyYW1lICh2YXJpYWJsZSkKICAg IkZpbmQsIGluIGFub3RoZXIgZnJhbWUsIHRoZSBkZWZpbml0aW9uIG9mIFZBUklBQkxFIG5lYXIg cG9pbnQuCitSZXR1cm4gdCBpZiBWQVJJQUJMRSBpcyBmb3VuZCwgZWxzZSBuaWwuCiAKIFNlZSBg ZmluZC12YXJpYWJsZScgZm9yIG1vcmUgZGV0YWlscy4iCiAgIChpbnRlcmFjdGl2ZSAoZmluZC1m dW5jdGlvbi1yZWFkICdkZWZ2YXIpKQogICAoZmluZC1mdW5jdGlvbi1kby1pdCB2YXJpYWJsZSAn ZGVmdmFyICdzd2l0Y2gtdG8tYnVmZmVyLW90aGVyLWZyYW1lKSkKIAogOzs7IyMjYXV0b2xvYWQK LShkZWZ1biBmaW5kLWRlZmluaXRpb24tbm9zZWxlY3QgKHN5bWJvbCB0eXBlICZvcHRpb25hbCBm aWxlKQotICAiUmV0dXJuIGEgcGFpciBgKEJVRkZFUiAuIFBPSU5UKScgcG9pbnRpbmcgdG8gdGhl IGRlZmluaXRpb24gb2YgU1lNQk9MLgotSWYgdGhlIGRlZmluaXRpb24gY2FuJ3QgYmUgZm91bmQg aW4gdGhlIGJ1ZmZlciwgcmV0dXJuIChCVUZGRVIpLgorKGRlZnVuIGZpbmQtZGVmaW5pdGlvbi1u b3NlbGVjdCAoc3ltYm9sIHR5cGUgJm9wdGlvbmFsIGZpbGUgbm8tZXJyb3IpCisgICJSZXR1cm4g YSAoQlVGRkVSIC4gUE9JTlQpIHBhaXIgcG9pbnRpbmcgdG8gdGhlIGRlZmluaXRpb24gb2YgU1lN Qk9MIG9yIG5pbCBpZiBub3QgZm91bmQuCitUaGUgYnVmZmVyIGlzIG5vdCBzZWxlY3RlZC4gIFNZ TUJPTCBtYXkgYmUgYSBzeW1ib2wgb3IgYSBzdHJpbmcuCitJZiB0aGUgZGVmaW5pdGlvbiBjYW4n dCBiZSBmb3VuZCBhbmQgb3B0aW9uYWwgTk8tRVJST1IgaXMgbm9uLW5pbCwKK3JldHVybiBuaWw7 IG90aGVyd2lzZSwgc2lnbmFsIGFuIGVycm9yLgorCiBUWVBFIHNheXMgd2hhdCB0eXBlIG9mIGRl ZmluaXRpb246IG5pbCBmb3IgYSBmdW5jdGlvbiwgYGRlZnZhcicgZm9yIGEKIHZhcmlhYmxlLCBg ZGVmZmFjZScgZm9yIGEgZmFjZS4gIFRoaXMgZnVuY3Rpb24gZG9lcyBub3Qgc3dpdGNoIHRvIHRo ZQogYnVmZmVyIG5vciBkaXNwbGF5IGl0LgogCi1UaGUgbGlicmFyeSB3aGVyZSBTWU1CT0wgaXMg ZGVmaW5lZCBpcyBzZWFyY2hlZCBmb3IgaW4gRklMRSBvcgorVGhlIGxpYnJhcnkgd2hlcmUgU1lN Qk9MIGlzIGRlZmluZWQgaXMgc2VhcmNoZWQgZm9yIGluIG9wdGlvbmFsIEZJTEUgb3IKIGBmaW5k LWZ1bmN0aW9uLXNvdXJjZS1wYXRoJywgaWYgbm9uLW5pbCwgb3RoZXJ3aXNlIGluIGBsb2FkLXBh dGgnLiIKICAgKGNvbmQKKyAgICgoYW5kIChzdHJpbmdwIHN5bWJvbCkKKyAoc2V0cSBzeW1ib2wg KGludGVybi1zb2Z0IHN5bWJvbCkpCisgOzsgRmFsbCB0aHJvdWdoIHRvIG5leHQgdHlwZQorIG5p bCkpCiAgICAoKG5vdCBzeW1ib2wpCiAgICAgKGVycm9yICJZb3UgZGlkbid0IHNwZWNpZnkgYSBz eW1ib2wiKSkKICAgICgobnVsbCB0eXBlKQotICAgIChmaW5kLWZ1bmN0aW9uLW5vc2VsZWN0IHN5 bWJvbCkpCisgICAgKGZpbmQtZnVuY3Rpb24tbm9zZWxlY3Qgc3ltYm9sIG5pbCBuby1lcnJvcikp CiAgICAoKGVxIHR5cGUgJ2RlZnZhcikKLSAgICAoZmluZC12YXJpYWJsZS1ub3NlbGVjdCBzeW1i b2wgZmlsZSkpCisgICAgKGZpbmQtdmFyaWFibGUtbm9zZWxlY3Qgc3ltYm9sIGZpbGUgbm8tZXJy b3IpKQogICAgKHQKICAgICAobGV0ICgobGlicmFyeSAob3IgZmlsZSAoc3ltYm9sLWZpbGUgc3lt Ym9sIHR5cGUpKSkpCi0gICAgICAoZmluZC1mdW5jdGlvbi1zZWFyY2gtZm9yLXN5bWJvbCBzeW1i b2wgdHlwZSBsaWJyYXJ5KSkpKSkKKyAgICAgIChmaW5kLWZ1bmN0aW9uLXNlYXJjaC1mb3Itc3lt Ym9sIHN5bWJvbCB0eXBlIGxpYnJhcnkgbm8tZXJyb3IpKSkpKQogCiA7OyBGb3Igc3ltbWV0cnks IHRoaXMgc2hvdWxkIGJlIGNhbGxlZCBmaW5kLWZhY2U7IGJ1dCBzb21lIHByb2dyYW1zCiA7OyBh c3N1bWUgdGhhdCwgaWYgdGhhdCBuYW1lIGlzIGRlZmluZWQsIGl0IG1lYW5zIHNvbWV0aGluZyBl bHNlLgogOzs7IyMjYXV0b2xvYWQKIChkZWZ1biBmaW5kLWZhY2UtZGVmaW5pdGlvbiAoZmFjZSkK ICAgIkZpbmQgdGhlIGRlZmluaXRpb24gb2YgRkFDRS4gIEZBQ0UgZGVmYXVsdHMgdG8gdGhlIG5h bWUgbmVhciBwb2ludC4KK1JldHVybiB0IGlmIEZBQ0UgaXMgZm91bmQsIGVsc2UgbmlsLgogCi1G aW5kcyB0aGUgRW1hY3MgTGlzcCBsaWJyYXJ5IGNvbnRhaW5pbmcgdGhlIGRlZmluaXRpb24gb2Yg dGhlIGZhY2UKK0ZpbmQgdGhlIEVtYWNzIExpc3AgbGlicmFyeSBjb250YWluaW5nIHRoZSBkZWZp bml0aW9uIG9mIHRoZSBmYWNlCiBuZWFyIHBvaW50IChzZWxlY3RlZCBieSBgdmFyaWFibGUtYXQt cG9pbnQnKSBpbiBhIGJ1ZmZlciBhbmQKLXBsYWNlcyBwb2ludCBiZWZvcmUgdGhlIGRlZmluaXRp b24uCitwbGFjZSBwb2ludCBiZWZvcmUgdGhlIGRlZmluaXRpb24uCiAKIFNldCBtYXJrIGJlZm9y ZSBtb3ZpbmcsIGlmIHRoZSBidWZmZXIgYWxyZWFkeSBleGlzdGVkLgogCi1UaGUgbGlicmFyeSB3 aGVyZSBGQUNFIGlzIGRlZmluZWQgaXMgc2VhcmNoZWQgZm9yIGluCi1gZmluZC1mdW5jdGlvbi1z b3VyY2UtcGF0aCcsIGlmIG5vbi1uaWwsIG90aGVyd2lzZSBpbiBgbG9hZC1wYXRoJy4KLVNlZSBh bHNvIGBmaW5kLWZ1bmN0aW9uLXJlY2VudGVyLWxpbmUnIGFuZCBgZmluZC1mdW5jdGlvbi1hZnRl ci1ob29rJy4iCitUaGUgbGlicmFyeSBzZWFyY2hlZCBmb3IgRkFDRSBpcyBnaXZlbiBieSBgZmlu ZC1mdW5jdGlvbi1zb3VyY2UtcGF0aCcsCitpZiBub24tbmlsLCBvdGhlcndpc2UgYGxvYWQtcGF0 aCcuICBTZWUgYWxzbworYGZpbmQtZnVuY3Rpb24tcmVjZW50ZXItbGluZScgYW5kIGBmaW5kLWZ1 bmN0aW9uLWFmdGVyLWhvb2snLiIKICAgKGludGVyYWN0aXZlIChmaW5kLWZ1bmN0aW9uLXJlYWQg J2RlZmZhY2UpKQogICAoZmluZC1mdW5jdGlvbi1kby1pdCBmYWNlICdkZWZmYWNlICdzd2l0Y2gt dG8tYnVmZmVyKSkKCgo= --001a1148cce877ba25056095da19-- From debbugs-submit-bounces@debbugs.gnu.org Mon Dec 18 11:07:29 2017 Received: (at 23623) by debbugs.gnu.org; 18 Dec 2017 16:07:30 +0000 Received: from localhost ([127.0.0.1]:40745 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eQxwv-00034b-JJ for submit@debbugs.gnu.org; Mon, 18 Dec 2017 11:07:29 -0500 Received: from eggs.gnu.org ([208.118.235.92]:34212) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eQxwt-00034O-CD for 23623@debbugs.gnu.org; Mon, 18 Dec 2017 11:07:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eQxwj-0004UE-5C for 23623@debbugs.gnu.org; Mon, 18 Dec 2017 11:07:22 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,T_RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:39293) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eQxwj-0004Tt-13; Mon, 18 Dec 2017 11:07:17 -0500 Received: from [176.228.60.248] (port=1307 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1eQxwi-0001HJ-H4; Mon, 18 Dec 2017 11:07:16 -0500 Date: Mon, 18 Dec 2017 18:07:24 +0200 Message-Id: <83vah4ow8z.fsf@gnu.org> From: Eli Zaretskii To: rswgnu@gmail.com In-reply-to: (message from Robert Weiner on Sun, 17 Dec 2017 23:33:04 -0500) Subject: Re: bug#23623: Patch to improve function options in find-func.el References: <87o9oe6gt1.fsf@users.sourceforge.net> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 23623 Cc: 23623@debbugs.gnu.org, npostavs@users.sourceforge.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Eli Zaretskii Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) > From: Robert Weiner > Date: Sun, 17 Dec 2017 23:33:04 -0500 > Cc: 23623@debbugs.gnu.org > > ​​​I have made this requested change and herein attach the patch. I hope > you can integrate it sometime. Thanks. I have a few minor comments: First, please provide a ChangeLog-style commit log for the changes (see CONTRIBUTE for the details). > +(defun find-library-name (library &optional no-error) > "Return the absolute file name of the Emacs Lisp source of LIBRARY. > -LIBRARY should be a string (the name of the library)." > +LIBRARY should be a string (the name of the library). > +Signals an error if the source location is not found, unless optional > +NO-ERROR is non-nil, in which case nil is returned." Please try to avoid using passive tense in documentation and comments, doing so makes the text longer and more complex. In this case: Signal an error if the source location is not found, unless optional NO-ERROR is non-nil, in which case silently return nil. (Note that I also modified the tense of the verbs to be consistent with the first sentence of the doc string.) Similar issues exist with other doc string changes in this patch. > -(defun find-function-search-for-symbol (symbol type library) > - "Search for SYMBOL's definition of type TYPE in LIBRARY. > -Visit the library in a buffer, and return a cons cell (BUFFER . POSITION), > -or just (BUFFER . nil) if the definition can't be found in the file. > +(defun find-function-search-for-symbol (symbol type library &optional no-error) > + "Search for SYMBOL's definition of TYPE in LIBRARY. > +Visit the library in a buffer, and return a (BUFFER . POSITION) pair, > +or nil if the definition can't be found in the library. This second alternative of the return value makes this an incompatible change. Is that really necessary? It also makes it impossible to distinguish between the two kinds of failures. > ;; FIXME for completeness, it might be nice to print something like: > ;; foo (which is advised), which is an alias for bar (which is advised). > - (while (and def (symbolp def)) > - (or (eq def function) > - (not verbose) > + ;; 5/26/2016 - fixed to not loop forever when (eq def function) > + (while (and def (symbolp def) (not (eq def function))) > + (or (not verbose) > (setq aliases (if aliases The above seems to be an unrelated change. Also, please don't leave dates of changes in the sources (or maybe the whole comment is unnecessary). > -(defun find-function-noselect (function &optional lisp-only) > - "Return a pair (BUFFER . POINT) pointing to the definition of FUNCTION. > +(defun find-function-noselect (function &optional lisp-only no-error) > + "Return a (BUFFER . POINT) pair pointing to the definition of FUNCTION or nil if not found. The first sentence is too long, it should fit on the default window width of 80 columns, and preferably be even shorter. > +Signals an error if FUNCTION is null. ^^^^^^^ "Signal" > -If FUNCTION is a built-in function, this function normally > -attempts to find it in the Emacs C sources; however, if LISP-ONLY > -is non-nil, signal an error instead. > +Built-in functions are found within Emacs C sources unless > +optional LISP-ONLY is non-nil, in which case an error is signaled > +unless optional NO-ERROR is non-nil. Here you took text that was very clear and modified it to use passive tense, which made it less so. Most of the changes are unnecessary anyway, as you just needed to add what happens with NO-ERROR non-nil. So I'd use something like this: If FUNCTION is a built-in function, this function normally attempts to find it in the Emacs C sources; however, if LISP-ONLY is non-nil, it signals an error instead. If the optional argument NO-ERROR is non-nil, it returns nil instead of signaling an error. > (if (not function) > - (error "You didn't specify a function")) > + (error "You didn't specify a function")) Hmm... why did the indentation change here? > (defun find-function-do-it (symbol type switch-fn) > - "Find Emacs Lisp SYMBOL in a buffer and display it. > + "Find Emacs Lisp SYMBOL of TYPE in a buffer, display it with SWITCH-FN and return t, else nil if not found. Once again, this sentence is too long for the first sentence of a doc string. I also question the decision to return t if the function succeeds: couldn't it return a more useful value, like the buffer where the function is displayed? > (defun find-function (function) > "Find the definition of the FUNCTION near point. > +Return t if FUNCTION is found, else nil. Likewise here (and elsewhere in a few similar functions). > -(defun find-variable-noselect (variable &optional file) > - "Return a pair `(BUFFER . POINT)' pointing to the definition of VARIABLE. > +(defun find-variable-noselect (variable &optional file no-error) > + "Return a (BUFFER . POINT) pair pointing to the definition of VARIABLE or nil if not found. Sentence too long. > -(defun find-definition-noselect (symbol type &optional file) > - "Return a pair `(BUFFER . POINT)' pointing to the definition of SYMBOL. > -If the definition can't be found in the buffer, return (BUFFER). > +(defun find-definition-noselect (symbol type &optional file no-error) > + "Return a (BUFFER . POINT) pair pointing to the definition of SYMBOL or nil if not found. Likewise. > -The library where FACE is defined is searched for in > -`find-function-source-path', if non-nil, otherwise in `load-path'. > -See also `find-function-recenter-line' and `find-function-after-hook'." > +The library searched for FACE is given by `find-function-source-path', > +if non-nil, otherwise `load-path'. See also I agree that the original text was sub-optimal, but saying that a library is "given by" a path variable is IMO confusing. How about this variant instead: The library that defines FACE is looked for in directories specified by `find-function-source-path', if that is non-nil, or `load-path' otherwise. Thanks again for working on this. From debbugs-submit-bounces@debbugs.gnu.org Mon Dec 18 11:25:27 2017 Received: (at 23623) by debbugs.gnu.org; 18 Dec 2017 16:25:27 +0000 Received: from localhost ([127.0.0.1]:40757 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eQyEJ-0003To-Hg for submit@debbugs.gnu.org; Mon, 18 Dec 2017 11:25:27 -0500 Received: from eggs.gnu.org ([208.118.235.92]:59780) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eQyEI-0003Tb-Ej for 23623@debbugs.gnu.org; Mon, 18 Dec 2017 11:25:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eQyE8-0004PW-2h for 23623@debbugs.gnu.org; Mon, 18 Dec 2017 11:25:21 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAYES_40,HTML_MESSAGE, T_RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:39817) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eQyE7-0004PG-VN for 23623@debbugs.gnu.org; Mon, 18 Dec 2017 11:25:16 -0500 Received: from mail-qt0-f179.google.com ([209.85.216.179]:38334) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.82) (envelope-from ) id 1eQyE7-00038q-KV for 23623@debbugs.gnu.org; Mon, 18 Dec 2017 11:25:15 -0500 Received: by mail-qt0-f179.google.com with SMTP id d4so20676094qtj.5 for <23623@debbugs.gnu.org>; Mon, 18 Dec 2017 08:25:15 -0800 (PST) X-Gm-Message-State: AKGB3mKwuZYzXJdHVyDj+zHed1NgaKmKliIpH8TQIvppog62hGNP/6Xk bOtLyXKwj3l8B9wmWy5iAGCO6ZxLdCWeQdC6J0Q= X-Google-Smtp-Source: ACJfBovUDWqzSJ0Lpizzb1YW1VvaWpc/F13VvHmqruj5auaN1SvENRM5ueA9pvA9XNu3F8ABb6xA+ZActJ09mg+MJak= X-Received: by 10.200.19.11 with SMTP id e11mr355287qtj.62.1513614315184; Mon, 18 Dec 2017 08:25:15 -0800 (PST) MIME-Version: 1.0 Received: by 10.200.55.124 with HTTP; Mon, 18 Dec 2017 08:24:44 -0800 (PST) In-Reply-To: <83vah4ow8z.fsf@gnu.org> References: <87o9oe6gt1.fsf@users.sourceforge.net> <83vah4ow8z.fsf@gnu.org> From: Robert Weiner Date: Mon, 18 Dec 2017 11:24:44 -0500 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: bug#23623: Patch to improve function options in find-func.el To: Eli Zaretskii Content-Type: multipart/alternative; boundary="089e0828a8fc9566fd05609fcb6a" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -2.5 (--) X-Debbugs-Envelope-To: 23623 Cc: 23623@debbugs.gnu.org, Noam Postavsky X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: rswgnu@gmail.com Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) --089e0828a8fc9566fd05609fcb6a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Dec 18, 2017 at 11:07 AM, Eli Zaretskii wrote: > > From: Robert Weiner > > Date: Sun, 17 Dec 2017 23:33:04 -0500 > > Cc: 23623@debbugs.gnu.org > > > > =E2=80=8B=E2=80=8B=E2=80=8BI have made this requested change and herein= attach the patch. I hope > > you can integrate it sometime. > > Thanks. I have a few minor comments: > =E2=80=8BThanks for the feedback. I'll work on it. I often find that I have to make the first line of docstrings long when it involves 3 or more arguments. Is it preferable in such cases where the text cannot be shortened enough to discuss only some of the arguments on the first line and document the rest afterwards? Bob --089e0828a8fc9566fd05609fcb6a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Mon, Dec 18, 2= 017 at 11:07 AM, Eli Zaretskii <e= liz@gnu.org> wro= te:
<= blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px= #ccc solid;padding-left:1ex">> From: Robert Weiner <rsw@gnu.org>
> Date: Sun, 17 Dec 2017 23:33:04 -0500
> Cc: 23623@debbugs.gnu.org=
>
> =E2=80=8B=E2=80=8B=E2=80=8BI have made this requested change and herei= n attach the patch.=C2=A0 I hope
> you can integrate it sometime.

Thanks.=C2=A0 I have a few minor comments:

=
=E2=80=8BThanks for the feedback.=C2=A0 I'll work on it.=C2=A0 I ofte= n find
that I have to make the first line of docstrings long
when it invo= lves 3 or more arguments.=C2=A0 Is it preferable
in such cases where the t= ext cannot be shortened enough
to discuss only some of the arguments on th= e first line
and document the rest afterwards?

Bob

--089e0828a8fc9566fd05609fcb6a-- From debbugs-submit-bounces@debbugs.gnu.org Mon Dec 18 11:50:01 2017 Received: (at 23623) by debbugs.gnu.org; 18 Dec 2017 16:50:01 +0000 Received: from localhost ([127.0.0.1]:40777 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eQyc4-00044f-UJ for submit@debbugs.gnu.org; Mon, 18 Dec 2017 11:50:01 -0500 Received: from eggs.gnu.org ([208.118.235.92]:36518) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eQyc3-00044S-C1 for 23623@debbugs.gnu.org; Mon, 18 Dec 2017 11:49:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eQybs-0005Vn-PZ for 23623@debbugs.gnu.org; Mon, 18 Dec 2017 11:49:54 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-0.5 required=5.0 tests=BAYES_05,T_RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:40268) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eQybs-0005Va-Ly; Mon, 18 Dec 2017 11:49:48 -0500 Received: from [176.228.60.248] (port=1324 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1eQybs-0002gA-3I; Mon, 18 Dec 2017 11:49:48 -0500 Date: Mon, 18 Dec 2017 18:49:56 +0200 Message-Id: <83po7coua3.fsf@gnu.org> From: Eli Zaretskii To: rswgnu@gmail.com In-reply-to: (message from Robert Weiner on Mon, 18 Dec 2017 11:24:44 -0500) Subject: Re: bug#23623: Patch to improve function options in find-func.el References: <87o9oe6gt1.fsf@users.sourceforge.net> <83vah4ow8z.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 23623 Cc: 23623@debbugs.gnu.org, npostavs@users.sourceforge.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Eli Zaretskii Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) > From: Robert Weiner > Date: Mon, 18 Dec 2017 11:24:44 -0500 > Cc: Noam Postavsky , 23623@debbugs.gnu.org > > I often find > that I have to make the first line of docstrings long > when it involves 3 or more arguments. Is it preferable > in such cases where the text cannot be shortened enough > to discuss only some of the arguments on the first line > and document the rest afterwards? If there's no other way, yes. A better alternative is to mention all the arguments, but refrain from describing the function's effect in full, leaving the detailed description to the rest of the doc string. IOW, say only the main part in the first sentence. From debbugs-submit-bounces@debbugs.gnu.org Thu Nov 07 23:16:57 2019 Received: (at 23623) by debbugs.gnu.org; 8 Nov 2019 04:16:57 +0000 Received: from localhost ([127.0.0.1]:44392 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iSvhg-0001jR-Rc for submit@debbugs.gnu.org; Thu, 07 Nov 2019 23:16:57 -0500 Received: from host.gofardesign.uk ([208.79.239.190]:39420) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iSvhe-0001dh-Tu for 23623@debbugs.gnu.org; Thu, 07 Nov 2019 23:16:55 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=marxist.se; s=default; h=Content-Transfer-Encoding:Content-Type:MIME-Version:Message-ID: Date:References:In-Reply-To:Subject:Cc:To:From:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=5ickb3r7a5h8BXg7G6g2fBg1a7T/T0UXqZXqmHyxWQc=; b=bwR9PduqQSNx/sgnvJnzJ99lwY YPXKIqYG2Vzb40Ezy4AD9JvEg+4pLRGIip9KG4nGmlU4f6YHzMv+b2fmF60E7mUme5J0ByoOAktv4 3yta7vnupS+Zh/zoyQDTIZn+kkbKKNtZobBKKQgGDXNu7vLl1QBrlUnFsCzeASJfHo5M=; Received: from h-70-69.a785.priv.bahnhof.se ([155.4.70.69]:40646 helo=localhost) by host.gofardesign.uk with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.92) (envelope-from ) id 1iSvhZ-00023t-2R; Thu, 07 Nov 2019 22:16:49 -0600 From: Stefan Kangas To: Robert Weiner Subject: Re: bug#23623: Patch to improve function options in find-func.el In-Reply-To: (Robert Weiner's message of "Mon, 18 Dec 2017 11:24:44 -0500") References: <87o9oe6gt1.fsf@users.sourceforge.net> <83vah4ow8z.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) Date: Fri, 08 Nov 2019 05:16:47 +0100 Message-ID: <87lfsruhn4.fsf@marxist.se> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-OutGoing-Spam-Status: No, score=-1.0 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - host.gofardesign.uk X-AntiAbuse: Original Domain - debbugs.gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - marxist.se X-Get-Message-Sender-Via: host.gofardesign.uk: authenticated_id: stefan@marxist.se X-Authenticated-Sender: host.gofardesign.uk: stefan@marxist.se X-Source: X-Source-Args: X-Source-Dir: X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 23623 Cc: Noam Postavsky , Eli Zaretskii , rswgnu@gmail.com, 23623@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Robert Weiner writes: > On Mon, Dec 18, 2017 at 11:07 AM, Eli Zaretskii wrote: > > > From: Robert Weiner > > Date: Sun, 17 Dec 2017 23:33:04 -0500 > > Cc: 23623@debbugs.gnu.org > > > > =E2=80=8B=E2=80=8B=E2=80=8BI have made this requested change and herei= n attach the patch. I hope > > you can integrate it sometime. > > Thanks. I have a few minor comments: > > =E2=80=8BThanks for the feedback. I'll work on it. That was almost 2 years ago. What's the current status here? Best regards, Stefan Kangas From debbugs-submit-bounces@debbugs.gnu.org Tue Aug 11 11:25:40 2020 Received: (at 23623) by debbugs.gnu.org; 11 Aug 2020 15:25:40 +0000 Received: from localhost ([127.0.0.1]:41442 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1k5W9k-000133-I9 for submit@debbugs.gnu.org; Tue, 11 Aug 2020 11:25:40 -0400 Received: from quimby.gnus.org ([95.216.78.240]:33736) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1k5W9i-00012i-4y for 23623@debbugs.gnu.org; Tue, 11 Aug 2020 11:25:39 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Transfer-Encoding:Content-Type:MIME-Version:Message-ID :In-Reply-To:Date:References:Subject:Cc:To:From:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=CI6ifm82RGh2q9qIFgV1sJqbB0ycYZZ9NVO1eJk2+Lk=; b=BL+RCOhdSrMDx9Qe3s12wDZMdH TtcVFmorqJRkn050fxk6q++AnIdluj0m2xSevVDmFWWGCJbI+VQY0P7oGvQne6//LaKncmRWoSm7g njuspb5MUbTpFqKzO3u2EWCO5VBzOLqMVu410ceKs/Kk08PYG3oOYs7KcfQ0tVyhplOU=; Received: from cm-84.212.202.86.getinternet.no ([84.212.202.86] helo=xo) by quimby with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1k5W9Y-0005ai-EY; Tue, 11 Aug 2020 17:25:30 +0200 From: Lars Ingebrigtsen To: Stefan Kangas Subject: Re: bug#23623: Patch to improve function options in find-func.el References: <87o9oe6gt1.fsf@users.sourceforge.net> <83vah4ow8z.fsf@gnu.org> <87lfsruhn4.fsf@marxist.se> Date: Tue, 11 Aug 2020 17:25:27 +0200 In-Reply-To: <87lfsruhn4.fsf@marxist.se> (Stefan Kangas's message of "Fri, 08 Nov 2019 05:16:47 +0100") Message-ID: <874kp9tdaw.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: Stefan Kangas writes: >> ​Thanks for the feedback. I'll work on it. > > That was almost 2 years ago. What's the current status here? And that was more than half a month ago. Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 23623 Cc: rswgnu@gmail.com, Eli Zaretskii , Noam Postavsky , 23623@debbugs.gnu.org, Robert Weiner X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Stefan Kangas writes: >> =E2=80=8BThanks for the feedback. I'll work on it. > > That was almost 2 years ago. What's the current status here? And that was more than half a month ago. The patch no longer applies to Emacs 28 -- there's been many changes to find-func in the meantime. Eli had a lot of comments on the patch, mostly stylistic, but also about how this change would be somewhat non-backwards compatible. So while I think this sounds like a generally useful change, it seems pretty invasive and extensive uncertain gain, so I'm closing this bug report. If somebody wants to do further work here, please respond and we'll reopen. --=20 (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Tue Aug 11 11:25:45 2020 Received: (at control) by debbugs.gnu.org; 11 Aug 2020 15:25:46 +0000 Received: from localhost ([127.0.0.1]:41445 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1k5W9p-00013M-Ol for submit@debbugs.gnu.org; Tue, 11 Aug 2020 11:25:45 -0400 Received: from quimby.gnus.org ([95.216.78.240]:33752) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1k5W9o-00012w-TV for control@debbugs.gnu.org; Tue, 11 Aug 2020 11:25:45 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Subject:From:To:Message-Id:Date:Sender:Reply-To:Cc: MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=EykqOBQusjwS6CaSYr1U2/hRSx67CEJHQn6s9F5HP48=; b=NHjg/NSIz2xm9gunkCwhx7T8Up j6S1cvAmGP1cPFe+o24Wfmh5LUPS0YPzJt6Ap8599T8vgNaZQca35yJ1VaBsJb1qqADJDOC9Dt7mk +uAIpnikSsg8bHtR0OI1r9MXkHjt2PGmAdiG1YbQZ5N0ChcBzeFM9oKCBbWbHYccdNfY=; Received: from cm-84.212.202.86.getinternet.no ([84.212.202.86] helo=xo) by quimby with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1k5W9h-0005aq-8R for control@debbugs.gnu.org; Tue, 11 Aug 2020 17:25:39 +0200 Date: Tue, 11 Aug 2020 17:25:36 +0200 Message-Id: <87364ttdan.fsf@gnus.org> To: control@debbugs.gnu.org From: Lars Ingebrigtsen Subject: control message for bug #23623 X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: tags 23623 wontfix close 23623 quit Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) tags 23623 wontfix close 23623 quit From debbugs-submit-bounces@debbugs.gnu.org Tue Aug 11 11:36:51 2020 Received: (at 23623) by debbugs.gnu.org; 11 Aug 2020 15:36:51 +0000 Received: from localhost ([127.0.0.1]:41488 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1k5WKZ-0003ZC-GQ for submit@debbugs.gnu.org; Tue, 11 Aug 2020 11:36:51 -0400 Received: from quimby.gnus.org ([95.216.78.240]:33954) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1k5WKX-0003Z0-Lt for 23623@debbugs.gnu.org; Tue, 11 Aug 2020 11:36:50 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Transfer-Encoding:Content-Type:MIME-Version:Message-ID :In-Reply-To:Date:References:Subject:Cc:To:From:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=7EsMXV0BJiTEA8SCrGbX5ndBc9qg/oTnOobUnyhknSA=; b=VRIs1JsRus/f8Uk5/JJhVY5y7+ QQ3h52D2Kiofdamu0TphugIZlG5bAL3hnl/93S/nLZRm+BasB8SP+eb389r1yk+3f6GIzoUbDNsGX dqkVK1rP9kNNo3n81XAe5L1HCUqMmMEXG2jrQpCNU6BCBYsx9kkhfUkhLxnCkI05Pp50=; Received: from cm-84.212.202.86.getinternet.no ([84.212.202.86] helo=xo) by quimby with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1k5WKO-0005gK-6a; Tue, 11 Aug 2020 17:36:42 +0200 From: Lars Ingebrigtsen To: Stefan Kangas Subject: Re: bug#23623: Patch to improve function options in find-func.el References: <87o9oe6gt1.fsf@users.sourceforge.net> <83vah4ow8z.fsf@gnu.org> <87lfsruhn4.fsf@marxist.se> <874kp9tdaw.fsf@gnus.org> Date: Tue, 11 Aug 2020 17:36:39 +0200 In-Reply-To: <874kp9tdaw.fsf@gnus.org> (Lars Ingebrigtsen's message of "Tue, 11 Aug 2020 17:25:27 +0200") Message-ID: <87sgctry7s.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: Lars Ingebrigtsen writes: > Stefan Kangas writes: > >>> ​Thanks for the feedback. I'll work on it. >> >> That was almost 2 years ago. What's the current status here? > > And that was more than half a mont [...] Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 23623 Cc: rswgnu@gmail.com, 23623@debbugs.gnu.org, Noam Postavsky , Robert Weiner X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Lars Ingebrigtsen writes: > Stefan Kangas writes: > >>> =E2=80=8BThanks for the feedback. I'll work on it. >> >> That was almost 2 years ago. What's the current status here? > > And that was more than half a month ago. (I mean half a year ago.) > Eli had a lot of comments on the patch, mostly stylistic, but also about > how this change would be somewhat non-backwards compatible. So while I > think this sounds like a generally useful change, it seems pretty > invasive and extensive uncertain gain, so I'm closing this bug report. That's... some word soup, but perhaps people understood it anyway. :-/ --=20 (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From unknown Wed Jun 18 00:25:29 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Wed, 09 Sep 2020 11:24:07 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator