From unknown Sat Sep 13 05:10:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55778: 29.0.50; [PATCH] M-. into a .gz; we've all been there. Resent-From: dick.r.chiang@gmail.com Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 03 Jun 2022 08:19:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 55778 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 55778@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs Received: via spool by submit@debbugs.gnu.org id=B.165424433528622 (code B ref -1); Fri, 03 Jun 2022 08:19:02 +0000 Received: (at submit) by debbugs.gnu.org; 3 Jun 2022 08:18:55 +0000 Received: from localhost ([127.0.0.1]:55197 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nx2WA-0007RU-Hl for submit@debbugs.gnu.org; Fri, 03 Jun 2022 04:18:55 -0400 Received: from lists.gnu.org ([209.51.188.17]:57592) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nx0nR-0002Xz-P4 for submit@debbugs.gnu.org; Fri, 03 Jun 2022 02:28:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:54874) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nx0nJ-0004vA-Hc for bug-gnu-emacs@gnu.org; Fri, 03 Jun 2022 02:28:31 -0400 Received: from mail-qk1-x734.google.com ([2607:f8b0:4864:20::734]:45608) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nx0n6-0003Gm-CU for bug-gnu-emacs@gnu.org; Fri, 03 Jun 2022 02:28:23 -0400 Received: by mail-qk1-x734.google.com with SMTP id x75so1867372qkb.12 for ; Thu, 02 Jun 2022 23:28:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:user-agent:mime-version; bh=nxm4u6S6gxQ43cXHracFyavPOBOQVAoEWoVnprbAR6I=; b=DLJmU3ddazhHhhKT8M77E8xygllvkygwPm1+ZdLE7Y+aL/Gx4W1B4do3rrPMwppaPu HuvDKQpcfnkjl6tvbD0G91iJJcUKjdp4WnXO1vO9gFgFbALGVRkHYt/wW7lHDPR7ydX+ 4YRDwfbWmJ9/sfEVfZ+XwW7zvKj4xUIq3L73CdtVmulfhV2zRsIgBxU5pZgEILuNMPaE X3tNxwILJbbLo8cbshfY0OMrZysjwtP61K6gZOL48ZX6VjwnCwDlqN4hmApg82reNErV PZGaReeZY3CQtzK7031SI/XoRXmPmeQDVLm2uWvzrRbOW+Ix2IEoEpCuDR7oRaV2Czwk 67zw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:user-agent :mime-version; bh=nxm4u6S6gxQ43cXHracFyavPOBOQVAoEWoVnprbAR6I=; b=sbXGF2X1prJzZ1ds3OeVAFG9AlbIcRtYqaz9sHwEbQOkVFQkUVno6lZhDeCoOaZLRF 40eFag9/uYD9fxP3yY/XCqFaEsnksvhXgSmqE8WUDomdAO83cbR00K8P0GhQ/uYqleVZ AjQoYXu/ztpduOcaNlcp8CcCO5qOxPW1IyXgaX0FiDP5jBSPNYPEjjjnIbxGc5YDJCw+ 5ER4p5k2+5LtGtT3hitixzYQ+KF4h0TpoxqzxB2TDZWP6/c5/OrCjI7GnbEQGdbx4lPo pjAU3CfsDXHjsKa3unUTHy5gcSaL/jqIoSn7WId3Yfekiutx8OifTVT9u4qLY/sRUBkd cESA== X-Gm-Message-State: AOAM530hp2byio8EiwAdGMP2+flxWDiRDUVtqY+DYBOqHbP+8e/FkUyI kWrwNtaPUZ1P6gMmsbJB/G4HA+54HJY= X-Google-Smtp-Source: ABdhPJzJP51qfFA+O6lArIKJRqjERYTDgmb62pmM8Av1sDbzvbmsqAEsY2n/P7Ilb7u6TR9myQr+3A== X-Received: by 2002:a37:9401:0:b0:6a6:9a6c:978 with SMTP id w1-20020a379401000000b006a69a6c0978mr1322793qkd.384.1654237681342; Thu, 02 Jun 2022 23:28:01 -0700 (PDT) Received: from localhost (pool-96-232-253-158.nycmny.fios.verizon.net. [96.232.253.158]) by smtp.gmail.com with ESMTPSA id 62-20020a370541000000b006a36b7e55b3sm4636107qkf.4.2022.06.02.23.28.00 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Jun 2022 23:28:00 -0700 (PDT) From: dick.r.chiang@gmail.com Date: Fri, 03 Jun 2022 02:27:59 -0400 Message-ID: <87k09yw9ao.fsf@dick> User-Agent: Gnus/5.14 (Gnus v5.14) Commercial/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Received-SPF: pass client-ip=2607:f8b0:4864:20::734; envelope-from=dick.r.chiang@gmail.com; helo=mail-qk1-x734.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01, T_SPF_TEMPERROR=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-Mailman-Approved-At: Fri, 03 Jun 2022 04:18:49 -0400 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.3 (--) --=-=-= Content-Type: text/plain Was https://lists.gnu.org/archive/html/emacs-devel/2021-08/msg00340.html Some guys symlink their PATH emacs to src/emacs. Other guys still prefer `make install`, and live in constant fear of meta-dotting into a .gz file. Well, live in fear no more. emacs -Q --eval "(custom-set-variables '(xref-prefer-source-directory t))" --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-xref-prefer-source-directory.patch >From fb6f100bb1f588322c6a501ff2876a773189a9b9 Mon Sep 17 00:00:00 2001 From: dickmao Date: Fri, 3 Jun 2022 02:11:20 -0400 Subject: [PATCH] xref-prefer-source-directory emacs -Q --eval "(custom-set-variables '(xref-prefer-source-directory t))" * lisp/emacs-lisp/find-func.el (find-function-regexp-alist): Was crashing on this missing entry in find-function-regexp-alist. (find-function-C-source-directory): Style. (find-function-C-source): Style. (find-function-search-for-symbol): English. * lisp/help-fns.el (help-C-file-name): English. (find-lisp-object-file-name): Use it. * lisp/help-mode.el (xref): Require. (help-function-def--button-function): Use it. (help-face-def): Use it. * lisp/progmodes/elisp-mode.el (xref-backend-definitions): Style. (elisp--xref-find-definitions): Style. (xref-location-marker): Use it. * lisp/progmodes/project.el (project-root): Snuff bytecomp warning. * lisp/progmodes/xref.el (xref-prefer-source-directory): New defcustom. (xref-preferred-message): Message user. (xref-preferred-source): Act on new defcustom. (xref-show-definitions-buffer): Style. (xref--create-fetcher): Style. * src/emacs.c (syms_of_emacs): English. * src/lread.c (load_path_default): English. (init_lread): Style. (syms_of_lread): New defvar. * test/lisp/progmodes/elisp-mode-tests.el (xref-tests-prefer-source): Test it. * test/lisp/progmodes/xref-tests.el (xref-matches-in-directory-finds-none-for-some-regexp): Style. (xref--buf-pairs-iterator-groups-markers-by-buffers-1): Style. (xref--buf-pairs-iterator-groups-markers-by-buffers-2): Style. (xref--buf-pairs-iterator-cleans-up-markers): Style. --- lisp/emacs-lisp/find-func.el | 119 +++++++------ lisp/help-fns.el | 55 +++--- lisp/help-mode.el | 13 +- lisp/progmodes/elisp-mode.el | 214 +++++++++++------------- lisp/progmodes/project.el | 2 +- lisp/progmodes/xref.el | 56 +++++-- src/emacs.c | 13 +- src/lread.c | 154 ++++++----------- test/lisp/progmodes/elisp-mode-tests.el | 42 +++++ test/lisp/progmodes/xref-tests.el | 14 +- 10 files changed, 343 insertions(+), 339 deletions(-) diff --git a/lisp/emacs-lisp/find-func.el b/lisp/emacs-lisp/find-func.el index 96eaf1ab642..063e3c8bcd7 100644 --- a/lisp/emacs-lisp/find-func.el +++ b/lisp/emacs-lisp/find-func.el @@ -143,6 +143,7 @@ find-function--defface (defvar find-function-regexp-alist '((nil . find-function-regexp) + (define-type . find-function-regexp) (defvar . find-variable-regexp) (defface . find-function--defface) (feature . find-feature-regexp) @@ -257,7 +258,7 @@ find-library--from-load-history (defvar find-function-C-source-directory (let ((dir (expand-file-name "src" source-directory))) - (if (file-accessible-directory-p dir) dir)) + (when (file-accessible-directory-p dir) dir)) "Directory where the C source files of Emacs can be found. If nil, do not try to find the source code of functions and variables defined in C.") @@ -283,8 +284,8 @@ find-function-C-source (read-directory-name "Emacs C source dir: " nil nil t)))) (setq file (expand-file-name file dir)) (if (file-readable-p file) - (if (null find-function-C-source-directory) - (setq find-function-C-source-directory dir)) + (unless find-function-C-source-directory + (setq find-function-C-source-directory dir)) (error "The C source file %s is not available" (file-name-nondirectory file)))) (unless type @@ -391,16 +392,18 @@ find-library-other-frame ;;;###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. - -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)) + "Find SYMBOL's defun, or other definitional TYPE, in LIBRARY. +When TYPE is a non-nil key in `find-function-regexp-alist', +interpret SYMBOL according to the corresponding definitional, +e.g., defvar or defface. + +After visiting file LIBRARY, return a cons cell (BUFFER +. POS), where POS is the character position of the definition, +or nil if not found. + +LIBRARY can be an absolute or relative path." + (unless 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)) @@ -413,48 +416,54 @@ find-function-search-for-symbol ;; .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)) - (save-restriction - (widen) - (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))) - ;; If the regexp search didn't find the location of - ;; the symbol (for example, because it is generated by - ;; a macro), try a slightly more expensive search that - ;; expands macros until it finds the symbol. - (cons (current-buffer) - (find-function--search-by-expanding-macros - (current-buffer) symbol type)))))))))) + (let ((filename (find-library-name library)) + (regexp-symbol (cdr (assq type find-function-regexp-alist)))) + (cond ((not filename) + (error "Could not find '%s'" library)) + ((not regexp-symbol) + (error "No find-function regexp entry for '%s'" type)) + (t + (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)) + (save-restriction + (widen) + (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))) + ;; If the regexp search didn't find the location of + ;; the symbol (for example, because it is generated by + ;; a macro), try a slightly more expensive search that + ;; expands macros until it finds the symbol. + (cons (current-buffer) + (find-function--search-by-expanding-macros + (current-buffer) symbol type)))))))))))) (defun find-function--try-macroexpand (form) "Try to macroexpand FORM in full or partially. diff --git a/lisp/help-fns.el b/lisp/help-fns.el index f200077faec..cab712a2f1f 100644 --- a/lisp/help-fns.el +++ b/lisp/help-fns.el @@ -299,8 +299,8 @@ describe-command ;;;###autoload (defun help-C-file-name (subr-or-var kind) "Return the name of the C file where SUBR-OR-VAR is defined. -KIND should be `var' for a variable or `subr' for a subroutine. -If we can't find the file name, nil is returned." +KIND should be 'var for a variable or 'subr for a subroutine. If +we can't find the file name, nil is returned." (let ((docbuf (get-buffer-create " *DOC*")) (name (if (eq 'var kind) (concat "V" (symbol-name subr-or-var)) @@ -309,29 +309,28 @@ help-C-file-name (subr-name (advice--cd*r subr-or-var))))))) (with-current-buffer docbuf (goto-char (point-min)) - (if (eobp) - (insert-file-contents-literally - (expand-file-name internal-doc-file-name doc-directory))) - (let ((file (catch 'loop + (when (eobp) + (insert-file-contents-literally + (expand-file-name internal-doc-file-name doc-directory))) + (when-let ((file + (catch 'loop (while t - (let ((pnt (search-forward (concat "\^_" name "\n") - nil t))) - (if (not pnt) - (throw 'loop nil) - (re-search-backward "\^_S\\(.*\\)") - (let ((file (match-string 1))) - (if (member file build-files) - (throw 'loop file) - (goto-char pnt))))))))) - (if (not file) - nil - (if (string-match "^ns.*\\(\\.o\\|obj\\)\\'" file) - (setq file (replace-match ".m" t t file 1)) - (if (string-match "\\.\\(o\\|obj\\)\\'" file) - (setq file (replace-match ".c" t t file)))) - (if (string-match "\\.\\(c\\|m\\)\\'" file) - (concat "src/" file) - file)))))) + (if-let ((pnt (search-forward (concat "\^_" name "\n") + nil t))) + (progn + (re-search-backward "\^_S\\(.*\\)") + (let ((file (match-string 1))) + (if (member file build-files) + (throw 'loop file) + (goto-char pnt)))) + (throw 'loop nil)))))) + (if (string-match "^ns.*\\(\\.o\\|obj\\)\\'" file) + (setq file (replace-match ".m" t t file 1)) + (if (string-match "\\.\\(o\\|obj\\)\\'" file) + (setq file (replace-match ".c" t t file)))) + (if (string-match "\\.\\(c\\|m\\)\\'" file) + (concat "src/" file) + file))))) (defcustom help-downcase-arguments nil "If non-nil, argument names in *Help* buffers are downcased." @@ -440,10 +439,10 @@ find-lisp-object-file-name ;; An autoloaded variable or face. Visit loaddefs.el in a buffer ;; and try to extract the defining file. The following form is ;; from `describe-function-1' and `describe-variable'. - (let ((location - (condition-case nil - (find-function-search-for-symbol object nil file-name) - (error nil)))) + (let* ((prefer-file (xref-preferred-source file-name)) + (location + (ignore-errors + (find-function-search-for-symbol object nil prefer-file)))) (when (cdr location) (with-current-buffer (car location) (goto-char (cdr location)) diff --git a/lisp/help-mode.el b/lisp/help-mode.el index 2fcb8b9f3e6..ba3b9d4f4b5 100644 --- a/lisp/help-mode.el +++ b/lisp/help-mode.el @@ -30,6 +30,7 @@ ;;; Code: (require 'cl-lib) +(require 'xref) (defvar help-mode-map (let ((map (make-sparse-keymap))) @@ -265,8 +266,9 @@ help-function-def--button-function (help-C-file-name (indirect-function fun) 'fun))) ;; Don't use find-function-noselect because it follows ;; aliases (which fails for built-in functions). - (let* ((location - (find-function-search-for-symbol fun type file)) + (let* ((prefer-file (xref-preferred-source file)) + (location + (find-function-search-for-symbol fun type prefer-file)) (position (cdr location))) (if help-window-keep-selected (pop-to-buffer-same-window (car location)) @@ -338,9 +340,10 @@ 'help-face-def (require 'find-func) ;; Don't use find-function-noselect because it follows ;; aliases (which fails for built-in functions). - (let* ((location - (find-function-search-for-symbol fun 'defface file)) - (position (cdr location))) + (let* ((prefer-file (xref-preferred-source file)) + (location + (find-function-search-for-symbol fun 'defface prefer-file)) + (position (cdr location))) (if help-window-keep-selected (pop-to-buffer-same-window (car location)) (pop-to-buffer (car location))) diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el index 77bf3f1ed18..a59b2639b70 100644 --- a/lisp/progmodes/elisp-mode.el +++ b/lisp/progmodes/elisp-mode.el @@ -975,17 +975,16 @@ xref-backend-identifier-at-point (cl-defmethod xref-backend-definitions ((_backend (eql 'elisp)) identifier) (require 'find-func) - (let ((sym (intern-soft identifier))) - (when sym - (let* ((pos (get-text-property 0 'pos identifier)) - (namespace (if pos - (elisp--xref-infer-namespace pos) - 'any)) - (defs (elisp--xref-find-definitions sym))) - (if (eq namespace 'maybe-variable) - (or (elisp--xref-filter-definitions defs 'variable sym) - (elisp--xref-filter-definitions defs 'any sym)) - (elisp--xref-filter-definitions defs namespace sym)))))) + (when-let ((sym (intern-soft identifier))) + (let* ((pos (get-text-property 0 'pos identifier)) + (namespace (if pos + (elisp--xref-infer-namespace pos) + 'any)) + (defs (elisp--xref-find-definitions sym))) + (if (eq namespace 'maybe-variable) + (or (elisp--xref-filter-definitions defs 'variable sym) + (elisp--xref-filter-definitions defs 'any sym)) + (elisp--xref-filter-definitions defs namespace sym))))) (defun elisp--xref-filter-definitions (definitions namespace symbol) (if (eq namespace 'any) @@ -1019,11 +1018,10 @@ elisp--xref-filter-definitions collect d)))) (defun elisp--xref-find-definitions (symbol) - ;; The file name is not known when `symbol' is defined via interactive eval. + ;; The file name is not known when SYMBOL is defined via interactive eval. (let (xrefs) (let ((temp elisp-xref-find-def-functions)) - (while (and (null xrefs) - temp) + (while (and temp (null xrefs)) (setq xrefs (append xrefs (funcall (pop temp) symbol))))) (unless xrefs @@ -1051,114 +1049,99 @@ elisp--xref-find-definitions (push (elisp--xref-make-xref 'defalias alias-symbol alias-file) xrefs)))) (when (facep symbol) - (let ((file (find-lisp-object-file-name symbol 'defface))) - (when file - (push (elisp--xref-make-xref 'defface symbol file) xrefs)))) + (when-let ((file (find-lisp-object-file-name symbol 'defface))) + (push (elisp--xref-make-xref 'defface symbol file) xrefs))) (when (fboundp symbol) (let ((file (find-lisp-object-file-name symbol (symbol-function symbol))) generic doc) - (when file - (cond - ((eq file 'C-source) - ;; First call to find-lisp-object-file-name for an object - ;; defined in C; the doc strings from the C source have - ;; not been loaded yet. Second call will return "src/*.c" - ;; in file; handled by t case below. - (push (elisp--xref-make-xref nil symbol (help-C-file-name (symbol-function symbol) 'subr)) xrefs)) - - ((and (setq doc (documentation symbol t)) - ;; This doc string is defined in cl-macs.el cl-defstruct - (string-match "Constructor for objects of type `\\(.*\\)'" doc)) - ;; `symbol' is a name for the default constructor created by - ;; cl-defstruct, so return the location of the cl-defstruct. - (let* ((type-name (match-string 1 doc)) - (type-symbol (intern type-name)) - (file (find-lisp-object-file-name type-symbol 'define-type)) - (summary (format elisp--xref-format-extra - 'cl-defstruct - (concat "(" type-name) - (concat "(:constructor " (symbol-name symbol) "))")))) - (push (elisp--xref-make-xref 'define-type type-symbol file summary) xrefs) - )) - - ((setq generic (cl--generic symbol)) - ;; FIXME: move this to elisp-xref-find-def-functions, in cl-generic.el - ;; XXX: How are we going to support using newer xref - ;; with older versions of Emacs, though? - - ;; A generic function. If there is a default method, it - ;; will appear in the method table, with no - ;; specializers. - ;; - ;; If the default method is declared by the cl-defgeneric - ;; declaration, it will have the same location as the - ;; cl-defgeneric, so we want to exclude it from the - ;; result. In this case, it will have a null doc - ;; string. User declarations of default methods may also - ;; have null doc strings, but we hope that is - ;; rare. Perhaps this heuristic will discourage that. - (dolist (method (cl--generic-method-table generic)) - (let* ((info (cl--generic-method-info method));; qual-string combined-args doconly - (specializers (cl--generic-method-specializers method)) - (non-default nil) - (met-name (cl--generic-load-hist-format - symbol - (cl--generic-method-qualifiers method) - specializers)) - (file (find-lisp-object-file-name met-name 'cl-defmethod))) - (dolist (item specializers) - ;; Default method has all t in specializers. - (setq non-default (or non-default (not (equal t item))))) - - (when (and file - (or non-default - (nth 2 info))) ;; assuming only co-located default has null doc string - (if specializers - (let ((summary (format elisp--xref-format-extra 'cl-defmethod symbol (nth 1 info)))) - (push (elisp--xref-make-xref 'cl-defmethod met-name file summary) xrefs)) - - (let ((summary (format elisp--xref-format-extra 'cl-defmethod symbol "()"))) - (push (elisp--xref-make-xref 'cl-defmethod met-name file summary) xrefs)))) - )) - - (if (and (setq doc (documentation symbol t)) - ;; This doc string is created somewhere in - ;; cl--generic-make-function for an implicit - ;; defgeneric. - (string-match "\n\n(fn ARG &rest ARGS)" doc)) - ;; This symbol is an implicitly defined defgeneric, so - ;; don't return it. - nil - (push (elisp--xref-make-xref 'cl-defgeneric symbol file) xrefs)) - ) - - (t - (push (elisp--xref-make-xref nil symbol file) xrefs)) - )))) + (cond + ((not file) nil) + ((eq file 'C-source) + ;; First call to find-lisp-object-file-name for an object + ;; defined in C; the doc strings from the C source have + ;; not been loaded yet. Second call will return "src/*.c" + ;; in file; handled by t case below. + (push (elisp--xref-make-xref + nil symbol (help-C-file-name (symbol-function symbol) 'subr)) + xrefs)) + + ((and (setq doc (documentation symbol t)) + ;; This doc string is defined in cl-macs.el cl-defstruct + (string-match "Constructor for objects of type `\\(.*\\)'" doc)) + ;; SYMBOL is a name for the default constructor created by + ;; cl-defstruct, so return the location of the cl-defstruct. + (let* ((type-name (match-string 1 doc)) + (type-symbol (intern type-name)) + (file (find-lisp-object-file-name type-symbol 'define-type)) + (summary (format elisp--xref-format-extra + 'cl-defstruct + (concat "(" type-name) + (concat "(:constructor " (symbol-name symbol) "))")))) + (push (elisp--xref-make-xref 'define-type type-symbol file summary) xrefs))) + + ((setq generic (cl--generic symbol)) + ;; FIXME: move this to elisp-xref-find-def-functions, in cl-generic.el + ;; XXX: How are we going to support using newer xref + ;; with older versions of Emacs, though? + + ;; A generic function. If there is a default method, it + ;; will appear in the method table, with no + ;; specializers. + ;; + ;; If the default method is declared by the cl-defgeneric + ;; declaration, it will have the same location as the + ;; cl-defgeneric, so we want to exclude it from the + ;; result. In this case, it will have a null doc + ;; string. User declarations of default methods may also + ;; have null doc strings, but we hope that is + ;; rare. Perhaps this heuristic will discourage that. + (dolist (method (cl--generic-method-table generic)) + (let* ((info (cl--generic-method-info method));; qual-string combined-args doconly + (specializers (cl--generic-method-specializers method)) + (non-default nil) + (met-name (cl--generic-load-hist-format + symbol + (cl--generic-method-qualifiers method) + specializers)) + (file (find-lisp-object-file-name met-name 'cl-defmethod))) + (dolist (item specializers) + ;; Default method has all t in specializers. + (setq non-default (or non-default (not (equal t item))))) + + (when (and file + ;; only co-located default has null doc string + (or non-default (nth 2 info))) + (if specializers + (let ((summary (format elisp--xref-format-extra 'cl-defmethod symbol (nth 1 info)))) + (push (elisp--xref-make-xref 'cl-defmethod met-name file summary) xrefs)) + + (let ((summary (format elisp--xref-format-extra 'cl-defmethod symbol "()"))) + (push (elisp--xref-make-xref 'cl-defmethod met-name file summary) xrefs)))))) + + (unless (and (setq doc (documentation symbol t)) + ;; Fails when cl--generic-get-dispatcher changed. + (string-match-p "\n\n(fn \\(ARG \\)?&rest ARGS[0-9]*)" doc)) + ;; symbol is explicit defgeneric + (push (elisp--xref-make-xref 'cl-defgeneric symbol file) xrefs))) + + (t + (push (elisp--xref-make-xref nil symbol file) xrefs))))) (when (boundp symbol) - ;; A variable - (let ((file (find-lisp-object-file-name symbol 'defvar))) - (when file - (cond - ((eq file 'C-source) - ;; The doc strings from the C source have not been loaded - ;; yet; help-C-file-name does that. Second call will - ;; return "src/*.c" in file; handled below. - (push (elisp--xref-make-xref 'defvar symbol (help-C-file-name symbol 'var)) xrefs)) - - (t - (push (elisp--xref-make-xref 'defvar symbol file) xrefs)) - - )))) + (when-let ((file (find-lisp-object-file-name symbol 'defvar))) + (if (eq file 'C-source) + ;; The doc strings from the C source have not been loaded + ;; yet; help-C-file-name does that. Second call will + ;; return "src/*.c" in file; handled below. + (push (elisp--xref-make-xref 'defvar symbol + (help-C-file-name symbol 'var)) xrefs) + (push (elisp--xref-make-xref 'defvar symbol file) xrefs)))) (when (featurep symbol) - (let ((file (ignore-errors - (find-library-name (symbol-name symbol))))) - (when file - (push (elisp--xref-make-xref 'feature symbol file) xrefs)))) - );; 'unless xrefs' + (when-let ((file (ignore-errors + (find-library-name (symbol-name symbol))))) + (push (elisp--xref-make-xref 'feature symbol file) xrefs)))) xrefs)) @@ -1193,7 +1176,8 @@ xref-backend-identifier-completion-table (cl-defmethod xref-location-marker ((l xref-elisp-location)) (pcase-let (((cl-struct xref-elisp-location symbol type file) l)) - (let ((buffer-point (find-function-search-for-symbol symbol type file))) + (let* ((prefer-file (xref-preferred-source file)) + (buffer-point (find-function-search-for-symbol symbol type prefer-file))) (with-current-buffer (car buffer-point) (save-excursion (save-restriction diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el index 4dc4762176a..86c2497e9fb 100644 --- a/lisp/progmodes/project.el +++ b/lisp/progmodes/project.el @@ -227,7 +227,7 @@ project-root (cl-defmethod project-root (project &context (project--within-roots-fallback (eql nil))) - (car (project-roots project))) + (cl-call-next-method project)) (cl-defgeneric project-roots (project) "Return the list containing the current project root. diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el index 683589d71c6..95714d0488b 100644 --- a/lisp/progmodes/xref.el +++ b/lisp/progmodes/xref.el @@ -427,8 +427,36 @@ xref-auto-jump-to-first-xref :version "28.1" :package-version '(xref . "1.2.0")) +(defcustom xref-prefer-source-directory nil + "If non-nil, jump to the file in `source-directory' that +corresponds to the target." + :type 'boolean + :version "29.1") + (make-obsolete-variable 'xref--marker-ring 'xref--history "29.1") +(defalias 'xref-preferred-message + (let (messaged-p) + (lambda (file) + "Heads-up to user that xref result may not reflect loaded definition." + (unless messaged-p + (setq messaged-p t) + (message "Showing result from %s" file))))) + +(defsubst xref-preferred-source (file) + (if-let ((preferred-p xref-prefer-source-directory) + (prefix (file-name-as-directory installed-directory)) + ;; :end2 says PREFIX matches beginning of LIBRARY + (installed-p (cl-search prefix file + :end2 (length prefix))) + (preferred (expand-file-name + (cl-subseq file (length prefix)) + source-directory)) + (readable-p (file-readable-p preferred))) + (prog1 preferred + (funcall (symbol-function 'xref-preferred-message) preferred)) + file)) + (defun xref-set-marker-ring-length (_var _val) (declare (obsolete nil "29.1")) nil) @@ -1193,21 +1221,15 @@ xref--auto-jump-first (defun xref-show-definitions-buffer (fetcher alist) "Show the definitions list in a regular window. - When only one definition found, jump to it right away instead." - (let ((xrefs (funcall fetcher)) - buf) - (cond - ((not (cdr xrefs)) - (xref-pop-to-location (car xrefs) - (assoc-default 'display-action alist))) - (t - (setq buf - (xref--show-xref-buffer fetcher - (cons (cons 'fetched-xrefs xrefs) - alist))) - (xref--auto-jump-first buf (assoc-default 'auto-jump alist)) - buf)))) + (when-let ((xrefs (funcall fetcher))) + (if (= 1 (length xrefs)) + (xref-pop-to-location (car xrefs) + (assoc-default 'display-action alist)) + (let ((buf (xref--show-xref-buffer + fetcher (cons (cons 'fetched-xrefs xrefs) alist)))) + (prog1 buf + (xref--auto-jump-first buf (assoc-default 'auto-jump alist))))))) (define-obsolete-function-alias 'xref--show-defs-buffer #'xref-show-definitions-buffer "28.1") @@ -1459,10 +1481,8 @@ xref--create-fetcher (when (buffer-live-p orig-buffer) (set-buffer orig-buffer) (ignore-errors (goto-char orig-position))) - (let ((xrefs (funcall method backend arg))) - (unless xrefs - (xref--not-found-error kind input)) - xrefs))))) + (or (funcall method backend arg) + (xref--not-found-error kind input)))))) (defun xref--not-found-error (kind input) (user-error "No %s found for: %s" (symbol-name kind) input)) diff --git a/src/emacs.c b/src/emacs.c index 43b9901e081..f83923bc6af 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -3503,12 +3503,13 @@ syms_of_emacs (void) The value is nil if that directory's name is not known. */); DEFVAR_LISP ("installation-directory", Vinstallation_directory, - doc: /* A directory within which to look for the `lib-src' and `etc' directories. -In an installed Emacs, this is normally nil. It is non-nil if -both `lib-src' (on MS-DOS, `info') and `etc' directories are found -within the variable `invocation-directory' or its parent. For example, -this is the case when running an uninstalled Emacs executable from its -build directory. */); + doc: /* Should have been named build-directory. +Counter-intuitively, this variable is nil when Emacs is invoked from +its `make install` executable. It normally takes on the value of +`source-directory' when Emacs is invoked from its within-repo `make` +executable. Its primary use is locating the lib-src and etc +subdirectories of the build. Not to be confused with +`installed-directory'. */); Vinstallation_directory = Qnil; DEFVAR_LISP ("system-messages-locale", Vsystem_messages_locale, diff --git a/src/lread.c b/src/lread.c index 4b7d38a8e6c..e953c1dc7be 100644 --- a/src/lread.c +++ b/src/lread.c @@ -5108,136 +5108,73 @@ load_path_check (Lisp_Object lpath) } } -/* Return the default load-path, to be used if EMACSLOADPATH is unset. - This does not include the standard site-lisp directories - under the installation prefix (i.e., PATH_SITELOADSEARCH), - but it does (unless no_site_lisp is set) include site-lisp - directories in the source/build directories if those exist and we - are running uninstalled. - - Uses the following logic: - If !will_dump: Use PATH_LOADSEARCH. - The remainder is what happens when dumping is about to happen: - If dumping, just use PATH_DUMPLOADSEARCH. - Otherwise use PATH_LOADSEARCH. - - If !initialized, then just return PATH_DUMPLOADSEARCH. - If initialized: - If Vinstallation_directory is not nil (ie, running uninstalled): - If installation-dir/lisp exists and not already a member, - we must be running uninstalled. Reset the load-path - to just installation-dir/lisp. (The default PATH_LOADSEARCH - refers to the eventual installation directories. Since we - are not yet installed, we should not use them, even if they exist.) - If installation-dir/lisp does not exist, just add - PATH_DUMPLOADSEARCH at the end instead. - Add installation-dir/site-lisp (if !no_site_lisp, and exists - and not already a member) at the front. - If installation-dir != source-dir (ie running an uninstalled, - out-of-tree build) AND install-dir/src/Makefile exists BUT - install-dir/src/Makefile.in does NOT exist (this is a sanity - check), then repeat the above steps for source-dir/lisp, site-lisp. */ +/* Dig toplevel LOAD-PATH out of epaths.h. */ static Lisp_Object load_path_default (void) { if (will_dump_p ()) - /* PATH_DUMPLOADSEARCH is the lisp dir in the source directory. - We used to add ../lisp (ie the lisp dir in the build - directory) at the front here, but that should not be - necessary, since in out of tree builds lisp/ is empty, save - for Makefile. */ + /* PATH_DUMPLOADSEARCH is the lisp dir in the source directory. */ return decode_env_path (0, PATH_DUMPLOADSEARCH, 0); - Lisp_Object lpath = Qnil; - - lpath = decode_env_path (0, PATH_LOADSEARCH, 0); + Lisp_Object lpath = decode_env_path (0, PATH_LOADSEARCH, 0); + /* Counter-intuitively Vinstallation_directory is nil for + invocations of the `make install` executable, and is + Vsource_directory for invocations of the within-repo `make` + executable. + */ if (!NILP (Vinstallation_directory)) { - Lisp_Object tem, tem1; - - /* Add to the path the lisp subdir of the installation - dir, if it is accessible. Note: in out-of-tree builds, - this directory is empty save for Makefile. */ - tem = Fexpand_file_name (build_string ("lisp"), - Vinstallation_directory); - tem1 = Ffile_accessible_directory_p (tem); - if (!NILP (tem1)) - { - if (NILP (Fmember (tem, lpath))) - { - /* We are running uninstalled. The default load-path - points to the eventual installed lisp directories. - We should not use those now, even if they exist, - so start over from a clean slate. */ - lpath = list1 (tem); - } - } - else - /* That dir doesn't exist, so add the build-time - Lisp dirs instead. */ - { - Lisp_Object dump_path = - decode_env_path (0, PATH_DUMPLOADSEARCH, 0); - lpath = nconc2 (lpath, dump_path); - } - - /* Add site-lisp under the installation dir, if it exists. */ - if (!no_site_lisp) + Lisp_Object tem = Fexpand_file_name (build_string ("lisp"), + Vinstallation_directory), + tem1 = Ffile_accessible_directory_p (tem); + + if (NILP (tem1)) + /* Use build-time dirs instead. */ + lpath = nconc2 (lpath, decode_env_path (0, PATH_DUMPLOADSEARCH, 0)); + else if (NILP (Fmember (tem, lpath))) + /* Override the inchoate LOAD-PATH. */ + lpath = list1 (tem); + + /* Add the within-repo site-lisp (unusual). */ + if (! no_site_lisp) { tem = Fexpand_file_name (build_string ("site-lisp"), Vinstallation_directory); tem1 = Ffile_accessible_directory_p (tem); - if (!NILP (tem1)) - { - if (NILP (Fmember (tem, lpath))) - lpath = Fcons (tem, lpath); - } + if (! NILP (tem1) && (NILP (Fmember (tem, lpath)))) + lpath = Fcons (tem, lpath); } - /* If Emacs was not built in the source directory, - and it is run from where it was built, add to load-path - the lisp and site-lisp dirs under that directory. */ - if (NILP (Fequal (Vinstallation_directory, Vsource_directory))) { - Lisp_Object tem2; - + /* An out-of-tree build (unusual). */ tem = Fexpand_file_name (build_string ("src/Makefile"), Vinstallation_directory); - tem1 = Ffile_exists_p (tem); + tem1 = Fexpand_file_name (build_string ("src/Makefile.in"), + Vinstallation_directory); /* Don't be fooled if they moved the entire source tree AFTER dumping Emacs. If the build directory is indeed different from the source dir, src/Makefile.in and src/Makefile will not be found together. */ - tem = Fexpand_file_name (build_string ("src/Makefile.in"), - Vinstallation_directory); - tem2 = Ffile_exists_p (tem); - if (!NILP (tem1) && NILP (tem2)) + if (! NILP (Ffile_exists_p (tem)) && NILP (Ffile_exists_p (tem1))) { tem = Fexpand_file_name (build_string ("lisp"), Vsource_directory); - if (NILP (Fmember (tem, lpath))) lpath = Fcons (tem, lpath); - - if (!no_site_lisp) + if (! no_site_lisp) { tem = Fexpand_file_name (build_string ("site-lisp"), Vsource_directory); - tem1 = Ffile_accessible_directory_p (tem); - if (!NILP (tem1)) - { - if (NILP (Fmember (tem, lpath))) - lpath = Fcons (tem, lpath); - } + if (! NILP (tem) && (NILP (Fmember (tem, lpath)))) + lpath = Fcons (tem, lpath); } } - } /* Vinstallation_directory != Vsource_directory */ - - } /* if Vinstallation_directory */ + } + } return lpath; } @@ -5248,7 +5185,7 @@ init_lread (void) /* First, set Vload_path. */ /* Ignore EMACSLOADPATH when dumping. */ - bool use_loadpath = !will_dump_p (); + bool use_loadpath = ! will_dump_p (); if (use_loadpath && egetenv ("EMACSLOADPATH")) { @@ -5268,10 +5205,9 @@ init_lread (void) load_path_check (default_lpath); /* Add the site-lisp directories to the front of the default. */ - if (!no_site_lisp && PATH_SITELOADSEARCH[0] != '\0') + if (! no_site_lisp && PATH_SITELOADSEARCH[0] != '\0') { - Lisp_Object sitelisp; - sitelisp = decode_env_path (0, PATH_SITELOADSEARCH, 0); + Lisp_Object sitelisp = decode_env_path (0, PATH_SITELOADSEARCH, 0); if (! NILP (sitelisp)) default_lpath = nconc2 (sitelisp, default_lpath); } @@ -5286,7 +5222,7 @@ init_lread (void) Vload_path = CALLN (Fappend, Vload_path, NILP (elem) ? default_lpath : list1 (elem)); } - } /* Fmemq (Qnil, Vload_path) */ + } } else { @@ -5299,11 +5235,11 @@ init_lread (void) load_path_check (Vload_path); /* Add the site-lisp directories at the front. */ - if (!will_dump_p () && !no_site_lisp && PATH_SITELOADSEARCH[0] != '\0') + if (! will_dump_p () && !no_site_lisp && PATH_SITELOADSEARCH[0] != '\0') { - Lisp_Object sitelisp; - sitelisp = decode_env_path (0, PATH_SITELOADSEARCH, 0); - if (! NILP (sitelisp)) Vload_path = nconc2 (sitelisp, Vload_path); + Lisp_Object sitelisp = decode_env_path (0, PATH_SITELOADSEARCH, 0); + if (! NILP (sitelisp)) + Vload_path = nconc2 (sitelisp, Vload_path); } } @@ -5544,6 +5480,16 @@ syms_of_lread (void) = Fexpand_file_name (build_string ("../"), Fcar (decode_env_path (0, PATH_DUMPLOADSEARCH, 0))); + DEFVAR_LISP ("installed-directory", Vinstalled_directory, + doc: /* Install path of built-in lisp libraries. +This directory contains the `etc`, `lisp`, and `site-lisp` +installables, and is determined at configure time in the epaths-force +make target. Not to be confused with the legacy +`installation-directory' nor `invocation-directory'. */); + Vinstalled_directory + = Fexpand_file_name (build_string ("../"), + Fcar (decode_env_path (0, PATH_LOADSEARCH, 0))); + DEFVAR_LISP ("preloaded-file-list", Vpreloaded_file_list, doc: /* List of files that were preloaded (when dumping Emacs). */); Vpreloaded_file_list = Qnil; diff --git a/test/lisp/progmodes/elisp-mode-tests.el b/test/lisp/progmodes/elisp-mode-tests.el index 8e4dfa8bb83..cf30765df23 100644 --- a/test/lisp/progmodes/elisp-mode-tests.el +++ b/test/lisp/progmodes/elisp-mode-tests.el @@ -1116,5 +1116,47 @@ test-indentation (emacs-lisp-mode) (indent-region (point-min) (point-max))))) +(ert-deftest xref-tests-prefer-source () + "Jump to the file in `source-directory' that corresponds to the target." + (let* ((xref-show-definitions-function 'xref-show-definitions-buffer) + (xref-prefer-source-directory t) + (what "xref-backend-definitions") + (ert-directory (file-name-directory + (ert-resource-file "simple-shorthand-test.el"))) + (installed-path (find-lisp-object-file-name (intern what) 'defun)) + (preferred-path (string-replace (file-name-as-directory + source-directory) + (file-name-as-directory + ert-directory) + installed-path)) + (installed-directory source-directory) + (source-directory ert-directory) + (buf (with-temp-buffer + (emacs-lisp-mode) + (xref-find-definitions what)))) + (unwind-protect + (with-current-buffer buf + (mkdir (file-name-directory preferred-path) t) + (copy-file installed-path preferred-path t) + (save-excursion + (should (re-search-forward + (regexp-quote (format "cl-defmethod %s" what)) + nil t))) + (should (re-search-forward + (regexp-quote (regexp-quote (format "cl-defgeneric %s" what))) + nil t)) + (call-interactively #'xref-goto-xref) + (should (equal (buffer-file-name) preferred-path))) + (let (kill-buffer-query-functions) + (delete-directory (expand-file-name + (reverse (file-name-nondirectory + (reverse (string-replace ert-directory + "" preferred-path)))) + ert-directory) t) + (when (buffer-live-p (get-buffer preferred-path)) + (kill-buffer (get-buffer preferred-path))) + (when (buffer-live-p buf) + (kill-buffer buf)))))) + (provide 'elisp-mode-tests) ;;; elisp-mode-tests.el ends here diff --git a/test/lisp/progmodes/xref-tests.el b/test/lisp/progmodes/xref-tests.el index f7af5055c78..b2222d95521 100644 --- a/test/lisp/progmodes/xref-tests.el +++ b/test/lisp/progmodes/xref-tests.el @@ -44,7 +44,7 @@ xref-tests--locations-in-data-dir :key #'xref-location-group))) (ert-deftest xref-matches-in-directory-finds-none-for-some-regexp () - (should (null (xref-tests--matches-in-data-dir "zzz")))) + (should-not (xref-tests--matches-in-data-dir "zzz"))) (ert-deftest xref-matches-in-directory-finds-some-for-bar () (let ((locs (xref-tests--locations-in-data-dir "bar"))) @@ -99,7 +99,7 @@ xref--buf-pairs-iterator-groups-markers-by-buffers-1 (let* ((xrefs (xref-tests--matches-in-data-dir "foo")) (iter (xref--buf-pairs-iterator xrefs)) (cons (funcall iter :next))) - (should (null (funcall iter :next))) + (should-not (funcall iter :next)) (should (string-match "file1\\.txt\\'" (buffer-file-name (car cons)))) (should (= 2 (length (cdr cons)))))) @@ -108,7 +108,7 @@ xref--buf-pairs-iterator-groups-markers-by-buffers-2 (iter (xref--buf-pairs-iterator xrefs)) (cons1 (funcall iter :next)) (cons2 (funcall iter :next))) - (should (null (funcall iter :next))) + (should-not (funcall iter :next)) (should-not (equal (car cons1) (car cons2))) (should (= 1 (length (cdr cons1)))) (should (= 1 (length (cdr cons2)))))) @@ -119,10 +119,10 @@ xref--buf-pairs-iterator-cleans-up-markers (cons1 (funcall iter :next)) (cons2 (funcall iter :next))) (funcall iter :cleanup) - (should (null (marker-position (car (nth 0 (cdr cons1)))))) - (should (null (marker-position (cdr (nth 0 (cdr cons1)))))) - (should (null (marker-position (car (nth 0 (cdr cons2)))))) - (should (null (marker-position (cdr (nth 0 (cdr cons2)))))))) + (should-not (marker-position (car (nth 0 (cdr cons1))))) + (should-not (marker-position (cdr (nth 0 (cdr cons1))))) + (should-not (marker-position (car (nth 0 (cdr cons2))))) + (should-not (marker-position (cdr (nth 0 (cdr cons2))))))) (ert-deftest xref--xref-file-name-display-is-abs () (let ((xref-file-name-display 'abs)) -- 2.35.1 --=-=-= Content-Type: text/plain In Commercial Emacs 0.3.1snapshot 4cf5f33 in dev (upstream 29.0.50, x86_64-pc-linux-gnu) built on dick Repository revision: 4cf5f33b61635a9f55bcfb345b144d3c12396013 Repository branch: dev Windowing system distributor 'The X.Org Foundation', version 11.0.12013000 System Description: Ubuntu 20.04.3 LTS Configured using: 'configure --prefix=/home/dick/.local --with-tree-sitter' Configured features: CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON TREE_SITTER LCMS2 LIBSELINUX LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF TOOLKIT_SCROLL_BARS WEBP X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Group Minor modes in effect: global-git-commit-mode: t shell-dirtrack-mode: t gnus-topic-mode: t gnus-undo-mode: t projectile-mode: t flx-ido-mode: t override-global-mode: t global-hl-line-mode: t hl-line-mode: t winner-mode: t tooltip-mode: t show-paren-mode: t mouse-wheel-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t buffer-read-only: t column-number-mode: t line-number-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: /home/dick/gomacro-mode/gomacro-mode hides /home/dick/.emacs.d/elpa/gomacro-mode-20200326.1103/gomacro-mode /home/dick/org-gcal.el/org-gcal hides /home/dick/.emacs.d/elpa/org-gcal-0.3/org-gcal /home/dick/.emacs.d/elpa/chess-2.0.5/_pkg hides /home/dick/.local/share/emacs/site-lisp/_pkg /home/dick/.emacs.d/elpa/chess-2.0.5/chess-pos hides /home/dick/.local/share/emacs/site-lisp/chess-pos /home/dick/.emacs.d/elpa/chess-2.0.5/chess-module hides /home/dick/.local/share/emacs/site-lisp/chess-module /home/dick/.emacs.d/elpa/chess-2.0.5/chess-ucb hides /home/dick/.local/share/emacs/site-lisp/chess-ucb /home/dick/.emacs.d/elpa/chess-2.0.5/chess-scid hides /home/dick/.local/share/emacs/site-lisp/chess-scid /home/dick/.emacs.d/elpa/chess-2.0.5/chess-puzzle hides /home/dick/.local/share/emacs/site-lisp/chess-puzzle /home/dick/.emacs.d/elpa/chess-2.0.5/chess-irc hides /home/dick/.local/share/emacs/site-lisp/chess-irc /home/dick/.emacs.d/elpa/chess-2.0.5/chess-network hides /home/dick/.local/share/emacs/site-lisp/chess-network /home/dick/.emacs.d/elpa/chess-2.0.5/chess-autosave hides /home/dick/.local/share/emacs/site-lisp/chess-autosave /home/dick/.emacs.d/elpa/chess-2.0.5/chess-engine hides /home/dick/.local/share/emacs/site-lisp/chess-engine /home/dick/.emacs.d/elpa/chess-2.0.5/chess-tutorial hides /home/dick/.local/share/emacs/site-lisp/chess-tutorial /home/dick/.emacs.d/elpa/chess-2.0.5/chess-german hides /home/dick/.local/share/emacs/site-lisp/chess-german /home/dick/.emacs.d/elpa/chess-2.0.5/chess-file hides /home/dick/.local/share/emacs/site-lisp/chess-file /home/dick/.emacs.d/elpa/chess-2.0.5/chess-random hides /home/dick/.local/share/emacs/site-lisp/chess-random /home/dick/.emacs.d/elpa/chess-2.0.5/chess-stockfish hides /home/dick/.local/share/emacs/site-lisp/chess-stockfish /home/dick/.emacs.d/elpa/chess-2.0.5/chess-pgn hides /home/dick/.local/share/emacs/site-lisp/chess-pgn /home/dick/.emacs.d/elpa/chess-2.0.5/chess-kibitz hides /home/dick/.local/share/emacs/site-lisp/chess-kibitz /home/dick/.emacs.d/elpa/chess-2.0.5/chess-eco hides /home/dick/.local/share/emacs/site-lisp/chess-eco /home/dick/.emacs.d/elpa/chess-2.0.5/chess-display hides /home/dick/.local/share/emacs/site-lisp/chess-display /home/dick/.emacs.d/elpa/chess-2.0.5/chess-var hides /home/dick/.local/share/emacs/site-lisp/chess-var /home/dick/.emacs.d/elpa/chess-2.0.5/chess-test hides /home/dick/.local/share/emacs/site-lisp/chess-test /home/dick/.emacs.d/elpa/chess-2.0.5/chess-ply hides /home/dick/.local/share/emacs/site-lisp/chess-ply /home/dick/.emacs.d/elpa/chess-2.0.5/chess-message hides /home/dick/.local/share/emacs/site-lisp/chess-message /home/dick/.emacs.d/elpa/chess-2.0.5/chess-ics1 hides /home/dick/.local/share/emacs/site-lisp/chess-ics1 /home/dick/.emacs.d/elpa/chess-2.0.5/chess-phalanx hides /home/dick/.local/share/emacs/site-lisp/chess-phalanx /home/dick/.emacs.d/elpa/chess-2.0.5/chess-game hides /home/dick/.local/share/emacs/site-lisp/chess-game /home/dick/.emacs.d/elpa/chess-2.0.5/chess-log hides /home/dick/.local/share/emacs/site-lisp/chess-log /home/dick/.emacs.d/elpa/chess-2.0.5/chess-plain hides /home/dick/.local/share/emacs/site-lisp/chess-plain /home/dick/.emacs.d/elpa/chess-2.0.5/chess-perft hides /home/dick/.local/share/emacs/site-lisp/chess-perft /home/dick/.emacs.d/elpa/chess-2.0.5/chess-glaurung hides /home/dick/.local/share/emacs/site-lisp/chess-glaurung /home/dick/.emacs.d/elpa/chess-2.0.5/chess-ai hides /home/dick/.local/share/emacs/site-lisp/chess-ai /home/dick/.emacs.d/elpa/chess-2.0.5/chess-fruit hides /home/dick/.local/share/emacs/site-lisp/chess-fruit /home/dick/.emacs.d/elpa/chess-2.0.5/chess-uci hides /home/dick/.local/share/emacs/site-lisp/chess-uci /home/dick/.emacs.d/elpa/chess-2.0.5/chess-epd hides /home/dick/.local/share/emacs/site-lisp/chess-epd /home/dick/.emacs.d/elpa/chess-2.0.5/chess-database hides /home/dick/.local/share/emacs/site-lisp/chess-database /home/dick/.emacs.d/elpa/chess-2.0.5/chess-link hides /home/dick/.local/share/emacs/site-lisp/chess-link /home/dick/.emacs.d/elpa/chess-2.0.5/chess-transport hides /home/dick/.local/share/emacs/site-lisp/chess-transport /home/dick/.emacs.d/elpa/chess-2.0.5/chess-none hides /home/dick/.local/share/emacs/site-lisp/chess-none /home/dick/.emacs.d/elpa/chess-2.0.5/chess-polyglot hides /home/dick/.local/share/emacs/site-lisp/chess-polyglot /home/dick/.emacs.d/elpa/chess-2.0.5/chess-crafty hides /home/dick/.local/share/emacs/site-lisp/chess-crafty /home/dick/.emacs.d/elpa/chess-2.0.5/chess-chat hides /home/dick/.local/share/emacs/site-lisp/chess-chat /home/dick/.emacs.d/elpa/chess-2.0.5/chess hides /home/dick/.local/share/emacs/site-lisp/chess /home/dick/.emacs.d/elpa/chess-2.0.5/chess-images hides /home/dick/.local/share/emacs/site-lisp/chess-images /home/dick/.emacs.d/elpa/chess-2.0.5/chess-gnuchess hides /home/dick/.local/share/emacs/site-lisp/chess-gnuchess /home/dick/.emacs.d/elpa/chess-2.0.5/chess-fen hides /home/dick/.local/share/emacs/site-lisp/chess-fen /home/dick/.emacs.d/elpa/chess-2.0.5/chess-ics hides /home/dick/.local/share/emacs/site-lisp/chess-ics /home/dick/.emacs.d/elpa/chess-2.0.5/chess-ics2 hides /home/dick/.local/share/emacs/site-lisp/chess-ics2 /home/dick/.emacs.d/elpa/chess-2.0.5/chess-common hides /home/dick/.local/share/emacs/site-lisp/chess-common /home/dick/.emacs.d/elpa/chess-2.0.5/chess-input hides /home/dick/.local/share/emacs/site-lisp/chess-input /home/dick/.emacs.d/elpa/chess-2.0.5/chess-announce hides /home/dick/.local/share/emacs/site-lisp/chess-announce /home/dick/.emacs.d/elpa/chess-2.0.5/chess-clock hides /home/dick/.local/share/emacs/site-lisp/chess-clock /home/dick/.emacs.d/elpa/chess-2.0.5/chess-sound hides /home/dick/.local/share/emacs/site-lisp/chess-sound /home/dick/.emacs.d/elpa/chess-2.0.5/chess-sjeng hides /home/dick/.local/share/emacs/site-lisp/chess-sjeng /home/dick/.emacs.d/elpa/chess-2.0.5/chess-algebraic hides /home/dick/.local/share/emacs/site-lisp/chess-algebraic /home/dick/.emacs.d/elpa/transient-0.3.7snapshot/transient hides /home/dick/.local/share/emacs/0.3.1/lisp/transient Features: (shadow bbdb-message footnote emacsbug flow-fill shortdoc emms-source-file locate loadhist markdown-mode edit-indirect magit-extras face-remap magit-patch-changelog magit-patch magit-submodule magit-obsolete magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit magit-sequence magit-notes magit-worktree magit-tag magit-merge magit-branch magit-reset magit-files magit-refs magit-status magit magit-repos magit-apply magit-wip magit-log which-func imenu magit-diff git-commit log-edit pcvs-util add-log magit-core magit-margin magit-transient magit-process with-editor server magit-mode transient smerge-mode diff pulse find-func misearch multi-isearch vc-git diff-mode vc vc-dispatcher bug-reference cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs tramp-archive tramp-gvfs tramp-cache zeroconf gnus-html url-queue help-fns radix-tree sort smiley shr-color qp mm-archive gnus-async gnus-ml gravatar dns mail-extr textsec uni-scripts idna-mapping ucs-normalize uni-confusable textsec-check gnus-notifications gnus-fun notifications gnus-kill gnus-dup disp-table utf-7 blamer a tramp tramp-loaddefs trampver tramp-integration cus-start files-x tramp-compat shell pcomplete ls-lisp url-cache benchmark nnrss nnfolder nndiscourse rbenv nnhackernews nntwitter nntwitter-api bbdb-gnus gnus-demon nntp nnmairix nnml nnreddit gnus-topic url-http url-auth url-gw network-stream nsm request virtualenvwrapper gud s json-rpc python gnus-score score-mode gnus-bcklg gnus-srvr gnus-cite anaphora bbdb-mua bbdb-com bbdb bbdb-site timezone gnus-delay gnus-draft gnus-cache gnus-agent gnus-msg gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls dig gnus-sum shr pixel-fill kinsoku url-file url-dired svg dom nndraft nnmh gnus-group mm-url gnus-undo use-package use-package-delight use-package-diminish gnus-start gnus-dbus dbus xml gnus-cloud nnimap nnmail mail-source utf7 netrc nnoo parse-time iso8601 gnus-spec gnus-int gnus-range message sendmail yank-media rmc puny dired-x dired dired-loaddefs rfc822 mml mml-sec epa epg rfc6068 epg-config mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev gmm-utils mailheader gnus-win paredit-ext paredit subed subed-vtt subed-srt subed-common subed-mpv subed-debug subed-config inf-ruby ruby-mode smie company pcase haskell-interactive-mode haskell-presentation-mode haskell-process haskell-session haskell-compile haskell-mode haskell-cabal haskell-utils haskell-font-lock haskell-indentation haskell-string haskell-sort-imports haskell-lexeme haskell-align-imports haskell-complete-module haskell-ghc-support noutline outline flymake-proc flymake warnings etags fileloop generator dabbrev haskell-customize hydra lv use-package-ensure solarized-theme solarized-definitions projectile lisp-mnt ibuf-ext ibuffer ibuffer-loaddefs thingatpt magit-autorevert autorevert filenotify magit-git magit-base magit-section format-spec crm dash rx compat-27 compat-26 compat grep compile comint ansi-color gnus nnheader range mail-utils mm-util mail-prsvr gnus-util text-property-search time-date flx-ido flx google-translate-default-ui google-translate-core-ui facemenu color ido google-translate-core google-translate-tk google-translate-backend use-package-bind-key bind-key auto-complete easy-mmode advice edmacro kmacro popup cus-edit pp cus-load wid-edit emms-player-mplayer emms-player-simple emms emms-compat cl-extra help-mode xref project use-package-core derived hl-line winner ring finder-inf json-reformat-autoloads json-snatcher-autoloads sml-mode-autoloads tornado-template-mode-autoloads info package browse-url url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache json map url-vars seq gv subr-x byte-opt bytecomp byte-compile cconv cldefs cl-loaddefs cl-lib iso-transl tooltip eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tree-sitter tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer nadvice simple cl-generic indonesian philippine cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget keymap hashtable-print-readable backquote threads dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting cairo move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process emacs) Memory information: ((conses 16 1225093 133296) (symbols 48 47046 1) (strings 32 212452 33657) (string-bytes 1 6343256) (vectors 16 136395) (vector-slots 8 3462861 170930) (floats 8 1238 1244) (intervals 56 67754 1262) (buffers 1000 45)) --=-=-=-- From unknown Sat Sep 13 05:10:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55778: 29.0.50; [PATCH] M-. into a .gz; we've all been there. Resent-From: Po Lu Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 03 Jun 2022 10:47:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55778 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: dick.r.chiang@gmail.com Cc: 55778@debbugs.gnu.org Received: via spool by 55778-submit@debbugs.gnu.org id=B55778.165425317010726 (code B ref 55778); Fri, 03 Jun 2022 10:47:01 +0000 Received: (at 55778) by debbugs.gnu.org; 3 Jun 2022 10:46:10 +0000 Received: from localhost ([127.0.0.1]:55357 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nx4oj-0002mw-Ps for submit@debbugs.gnu.org; Fri, 03 Jun 2022 06:46:10 -0400 Received: from sonic308-56.consmr.mail.ne1.yahoo.com ([66.163.187.31]:39821) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nx4oh-0002mB-95 for 55778@debbugs.gnu.org; Fri, 03 Jun 2022 06:46:08 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1654253160; bh=QbQ5qBamlucpThEetdDNk9ifm5JKHcppnSeQlhAkbTI=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From:Subject:Reply-To; b=Z43qPrLM2c9iE0ZUwf/4K6za5DHJ7MqMdO6EHc5dPXrKEPiDU8YbqG2LQ7QOFbgCyvOlZpsgK2RPevdLhiDNKfMAuQBoSHXWBykfSVODR5nlTUVG1gC8aWKovniEWgHwZUPUuNWWqWheuSbDZlgw1PFgHFr/7fd4Z4Qd8PPvGJ6n0+u8bPRV9LT97+PGX5vAKlaTUYMhaO5M3zCgnk1bz0/3Ii3bsPmkgXV+IcVrhjIipDiZeLnZmCZrSXzWpLX3dcl9jRjvwhp9ZAQqMlDNMYrl4xceGv6qPYRj0E/XlynVVxdwJYbuDLIhWq2UGdza4TAKsgCP+dHCz18LX19INw== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1654253160; bh=9Z7i/FoigajMASh0/mzO9O+dwFHM+oORff7CqzI4VKf=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=F/cB+M4dXi2VCeYlcchS/3kErjRH3rVzNifGmAfvEDnepxPFdn38BCUWp+1nM088Es8WeBDk9ZTdx3mKePDRuTV3xmHnyEWwOp1l7txZOlEBG3WY2r0rF4IiVvm/i14avJax82STjyetwokMoMLwaiIpLJdIfs/bh6HLnhudQwKdXGBb/8AlUn7UZ611k/aRJMi7CalmomIwwfBn5PWLXL2XcdM/l8ukjtxiRPH7iBs9yA6PmleNV/jP5ScjUwK2ffg5p9A83W9JDM+BsMdALcVCJ/BfPlr0NUzij28b40CEOprlC4SRcr7UC6r9uTa/uWe/5klZe3bwSSCSoCHHNw== X-YMail-OSG: Hasp0toVM1mlgaUwpDYY9I4fokmk6n.jszT9hWd_CUeTfXRXDO08r4imfkgCQqP sRALFUO0rRHew6E0aRxG.SsylcnL_ZqtY1tTG37NkkpnQzecLqGSqVt6qjBrwL4582ToXYSvTCQW 6xeD_KWLwUcgtuNUn9Uy3GEWKLKi0ssxmbKydU3EkPHqkIF2E0ZUTWKsZnkUwXEzlPV00noS9JQq i_Z2Rds22pobtTGQpAhQukrV5yIVYqEg4c9bd.hWcf0Pi9DBmyr1xe6LcsvgSnkxIE47.BGvgdgc RZLFz1m7KK3hSuu27lGVx.hPN5IzunJJu.KKDiOq.yjbvrc1rWZp71PuBcD0yERDLqo3NOuwEmeP IKm2QzjHQSaM9lTibqDhYpVEeFD1tkudtRt09dBFGrztWvTdjFZuVNVNHraWI_4unw8EGhLggdbh tFn2krV.C_Et4nheA8qIJPtMWwpAU7izfUGakP62o29VlTOnFiS_CrhWNs2MrnX7x8X_ivdWYmZ3 pzBWEEeJHkrl_5oHuSQhhg0CwPeZO_9KTod8NTD473bpKJ2_kOFE0a4PO0J5NWNdF6KvkeSxT_IO 6T9ZpZms1FQNaVRtMu9uAnGtMOIxLQ_zDO6ZpLjFaVRtWfDLh2OgTZGms9IRV1z1wzMokLGVIYot 6ZIlhoOcDjD733ExX.VECEylIKCqQrMWgekLyLxiAsFwo1ku.xd8gPvTk5EoV8U4CkcvTwVB4zK0 CWApQfGWovyAmGc.M6C9rrPyIuHeSGajEHo1KBJ5pON_Al_4Ci7tv2DmAUa14KzO4s64MTtRrhDF NbRp2AlA4CyDYinxcd0WDrSDQXZ045nD5MiBu1XEUyOjTWWDDmmOjbD9aw7EeeId5vvngkk0uFVF NuYjAW3y9YmzPZEjGiBUYM7iiZAX8lGdSjHRl2smhdYGyavZNqbroy9lz55IfRym73d_syM86PW9 Nuf_42_imRUjGqQTVOkK4pArMENViGL5xd8H13sMBBWhVqhPnAUPfaBnyQcU3b7Bbb9CQZJxeNNx nZuurLvp2O9S1dCLzO8IulcPWrPytTnS3cRHqw80Q.ayGiG3KPuMTx.TYprXM2ozGYNcBbzRhb4A SxzQWFDDVgKdtJSejp4zjj5YqV95TCCdSVrrDAQdV1pYlfQ.k2vMB8Ji4M4pVd0M4tIJeyKNuoGh FUoCKHgkFAA3jwUfPTnpvgxLqyyLqah3n1DwJQMGuO_whf70ns_t98HOa4sYGO6p.2COLkIn4bOV mMgKD3mMQTFatQXrQnOUxazByGTubxLdhuD6a4A8CMSQhZoFNDSBaHCGb.oIwLetp4U3gK7Ljq5R qQlGbBor9Nu8zDAeDcsQHavOBNvxeUbO26vHWXCITOzSWnegG61aBRHMTp8UTwIUCzra6UjE35he tieuEFe6qRQ8oWV7nr1qbgunF3Hlg5Zmw158.YlqmdwlGyUpYzEtDY7fZHEiV8bkqMoaJfaq1X93 10GisgqE6b_EaSyx8gykWL.Ch5AEAhbrIlpl0g4Yfi.h8b9ErYGLH1lUwP0pojh66_Sh6eeHmLvk zgrYxHV517l1BJ7mImAhsXmzLj5D0AHQqPHVHEdHApbFjBGUSHYMiCh82uUvEDskKdOneyTMJFzL oEMv1fCIrNAuU03LvBGYPd92z6dWe1YT7QSCCX437ryB6.aL7b5WjFg2vsToUTbrHgIKa0l0ZP.N aPGeEQ8vHhUjv38I4.OzHn3K_UNKDAhrHKcGxAFRXRb5D12tIR8ScmdRDsSQDHv7Mk96zva1QkV9 bUupS976.d_3L6isptbVJWastEUNJWIeFFQdzH.c5j4xt5cCmJXKG6MHNLtANB6.eCF0uBwt5HPC HxZVnx7qApneD.3dY2xwugTI.n4hLN3nB0kEUpdWKnrK3IpCIgQ81jnZTNQwX9XHQshSCL3SBje2 d4LNEq46Wf6RSmYEmrAn5ruSyO5MYK8TZIawPDqceXroi9T88Xo6_SHM68LwSZ1zFe938StBkiWj vDxb7L1thoL_F50baAq5w5.TPZ2eGU6HWx8sUsMaL522hKd5ACZomtiqTlEhZy6qK5Y2ilvEyAzM OLL7C7xqyuj0eFXhnLvyBNrMvZS7XM3rxSODm4JPeV2uW5r67GOAhUzt4Ox.BpAqnBqAM_7aAKt7 3W6GhxOTMevGaG2A4vnnTChq6DsOkvYYz62zswngsN.MnWjSfrrPz07Pj84W0EFoYToVM8qtn0JG eiKXVau42zcuXzdTG2DiPyriEGUn4eg9LvrrDuSRCwhSaOdyI8epstwkiD7cmipE- X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic308.consmr.mail.ne1.yahoo.com with HTTP; Fri, 3 Jun 2022 10:46:00 +0000 Received: by hermes--canary-production-sg3-5f7658c994-r59gj (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 57d66d6b0bd4b1fed042a6977e70aac0; Fri, 03 Jun 2022 10:45:53 +0000 (UTC) From: Po Lu References: <87k09yw9ao.fsf@dick> Date: Fri, 03 Jun 2022 18:45:48 +0800 In-Reply-To: <87k09yw9ao.fsf@dick> (dick r. chiang's message of "Fri, 03 Jun 2022 02:27:59 -0400") Message-ID: <87sfom3u03.fsf@yahoo.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.91 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Mailer: WebService/1.1.20225 mail.backend.jedi.jws.acl:role.jedi.acl.token.atz.jws.hermes.yahoo Content-Length: 12201 X-Spam-Score: -0.0 (/) 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 (-) Thanks, but this does not look acceptable, if not for anything else, then for the simple fact that so much text (comments and doc strings) was changed for the worse. dick.r.chiang@gmail.com writes: > * lisp/emacs-lisp/find-func.el (find-function-regexp-alist): > Was crashing on this missing entry in find-function-regexp-alist. > (find-function-C-source-directory): Style. > (find-function-C-source): Style. > (find-function-search-for-symbol): English. > * lisp/help-fns.el (help-C-file-name): English. "English." "Style." and "Was crashing on this missing entry in find-function-regexp-alist" do not describe what changed, and why it was changed. > +LIBRARY can be an absolute or relative path." Say "file name" instead of "path". > -KIND should be `var' for a variable or `subr' for a subroutine. > -If we can't find the file name, nil is returned." > +KIND should be 'var for a variable or 'subr for a subroutine. If > +we can't find the file name, nil is returned." Whitespace and formatting change. > +(defcustom xref-prefer-source-directory nil > + "If non-nil, jump to the file in `source-directory' that > +corresponds to the target." > + :type 'boolean > + :version "29.1") > + Did implementing this feature really require so many changes, in project.el, elisp-mode.el, help-fns.el, help-mode.el, emacs.c, and lread.c? > DEFVAR_LISP ("installation-directory", Vinstallation_directory, > - doc: /* A directory within which to look for the `lib-src' and `etc' directories. > -In an installed Emacs, this is normally nil. It is non-nil if > -both `lib-src' (on MS-DOS, `info') and `etc' directories are found > -within the variable `invocation-directory' or its parent. For example, > -this is the case when running an uninstalled Emacs executable from its > -build directory. */); > + doc: /* Should have been named build-directory. > +Counter-intuitively, this variable is nil when Emacs is invoked from > +its `make install` executable. It normally takes on the value of > +`source-directory' when Emacs is invoked from its within-repo `make` > +executable. Its primary use is locating the lib-src and etc > +subdirectories of the build. Not to be confused with > +`installed-directory'. */); > Vinstallation_directory = Qnil; Useless doc change. > -/* Return the default load-path, to be used if EMACSLOADPATH is unset. > - This does not include the standard site-lisp directories > - under the installation prefix (i.e., PATH_SITELOADSEARCH), > - but it does (unless no_site_lisp is set) include site-lisp > - directories in the source/build directories if those exist and we > - are running uninstalled. > - > - Uses the following logic: > - If !will_dump: Use PATH_LOADSEARCH. > - The remainder is what happens when dumping is about to happen: > - If dumping, just use PATH_DUMPLOADSEARCH. > - Otherwise use PATH_LOADSEARCH. > - > - If !initialized, then just return PATH_DUMPLOADSEARCH. > - If initialized: > - If Vinstallation_directory is not nil (ie, running uninstalled): > - If installation-dir/lisp exists and not already a member, > - we must be running uninstalled. Reset the load-path > - to just installation-dir/lisp. (The default PATH_LOADSEARCH > - refers to the eventual installation directories. Since we > - are not yet installed, we should not use them, even if they exist.) > - If installation-dir/lisp does not exist, just add > - PATH_DUMPLOADSEARCH at the end instead. > - Add installation-dir/site-lisp (if !no_site_lisp, and exists > - and not already a member) at the front. > - If installation-dir != source-dir (ie running an uninstalled, > - out-of-tree build) AND install-dir/src/Makefile exists BUT > - install-dir/src/Makefile.in does NOT exist (this is a sanity > - check), then repeat the above steps for source-dir/lisp, site-lisp. */ > +/* Dig toplevel LOAD-PATH out of epaths.h. */ Comment deleted and replaced with something much less meaningful. > static Lisp_Object > load_path_default (void) > { > if (will_dump_p ()) > - /* PATH_DUMPLOADSEARCH is the lisp dir in the source directory. > - We used to add ../lisp (ie the lisp dir in the build > - directory) at the front here, but that should not be > - necessary, since in out of tree builds lisp/ is empty, save > - for Makefile. */ > + /* PATH_DUMPLOADSEARCH is the lisp dir in the source directory. */ > return decode_env_path (0, PATH_DUMPLOADSEARCH, 0); > > - Lisp_Object lpath = Qnil; > - > - lpath = decode_env_path (0, PATH_LOADSEARCH, 0); > + Lisp_Object lpath = decode_env_path (0, PATH_LOADSEARCH, 0); > > + /* Counter-intuitively Vinstallation_directory is nil for > + invocations of the `make install` executable, and is > + Vsource_directory for invocations of the within-repo `make` > + executable. > + */ > if (!NILP (Vinstallation_directory)) > { > - Lisp_Object tem, tem1; > - > - /* Add to the path the lisp subdir of the installation > - dir, if it is accessible. Note: in out-of-tree builds, > - this directory is empty save for Makefile. */ > - tem = Fexpand_file_name (build_string ("lisp"), > - Vinstallation_directory); > - tem1 = Ffile_accessible_directory_p (tem); > - if (!NILP (tem1)) > - { > - if (NILP (Fmember (tem, lpath))) > - { > - /* We are running uninstalled. The default load-path > - points to the eventual installed lisp directories. > - We should not use those now, even if they exist, > - so start over from a clean slate. */ > - lpath = list1 (tem); > - } > - } > - else > - /* That dir doesn't exist, so add the build-time > - Lisp dirs instead. */ > - { > - Lisp_Object dump_path = > - decode_env_path (0, PATH_DUMPLOADSEARCH, 0); > - lpath = nconc2 (lpath, dump_path); > - } > - > - /* Add site-lisp under the installation dir, if it exists. */ > - if (!no_site_lisp) > + Lisp_Object tem = Fexpand_file_name (build_string ("lisp"), > + Vinstallation_directory), > + tem1 = Ffile_accessible_directory_p (tem); > + > + if (NILP (tem1)) > + /* Use build-time dirs instead. */ > + lpath = nconc2 (lpath, decode_env_path (0, PATH_DUMPLOADSEARCH, 0)); > + else if (NILP (Fmember (tem, lpath))) > + /* Override the inchoate LOAD-PATH. */ > + lpath = list1 (tem); > + > + /* Add the within-repo site-lisp (unusual). */ > + if (! no_site_lisp) > { > tem = Fexpand_file_name (build_string ("site-lisp"), > Vinstallation_directory); > tem1 = Ffile_accessible_directory_p (tem); > - if (!NILP (tem1)) > - { > - if (NILP (Fmember (tem, lpath))) > - lpath = Fcons (tem, lpath); > - } > + if (! NILP (tem1) && (NILP (Fmember (tem, lpath)))) > + lpath = Fcons (tem, lpath); > } > > - /* If Emacs was not built in the source directory, > - and it is run from where it was built, add to load-path > - the lisp and site-lisp dirs under that directory. */ > - > if (NILP (Fequal (Vinstallation_directory, Vsource_directory))) > { > - Lisp_Object tem2; > - > + /* An out-of-tree build (unusual). */ > tem = Fexpand_file_name (build_string ("src/Makefile"), > Vinstallation_directory); > - tem1 = Ffile_exists_p (tem); > + tem1 = Fexpand_file_name (build_string ("src/Makefile.in"), > + Vinstallation_directory); > > /* Don't be fooled if they moved the entire source tree > AFTER dumping Emacs. If the build directory is indeed > different from the source dir, src/Makefile.in and > src/Makefile will not be found together. */ > - tem = Fexpand_file_name (build_string ("src/Makefile.in"), > - Vinstallation_directory); > - tem2 = Ffile_exists_p (tem); > - if (!NILP (tem1) && NILP (tem2)) > + if (! NILP (Ffile_exists_p (tem)) && NILP (Ffile_exists_p (tem1))) > { > tem = Fexpand_file_name (build_string ("lisp"), > Vsource_directory); > - > if (NILP (Fmember (tem, lpath))) > lpath = Fcons (tem, lpath); > - > - if (!no_site_lisp) > + if (! no_site_lisp) > { > tem = Fexpand_file_name (build_string ("site-lisp"), > Vsource_directory); > - tem1 = Ffile_accessible_directory_p (tem); > - if (!NILP (tem1)) > - { > - if (NILP (Fmember (tem, lpath))) > - lpath = Fcons (tem, lpath); > - } > + if (! NILP (tem) && (NILP (Fmember (tem, lpath)))) > + lpath = Fcons (tem, lpath); > } > } > - } /* Vinstallation_directory != Vsource_directory */ > - > - } /* if Vinstallation_directory */ > + } > + } > > return lpath; > } What you did was change the behavior of code that has worked well enough for decades. Is that really needed to make finding a definition prefer the source directory to the compressed Lisp code? Not to mention that you can avoid jumping into the compressed source by specifying --without-compress-install at configure time. > + bool use_loadpath = ! will_dump_p (); > > if (use_loadpath && egetenv ("EMACSLOADPATH")) > { > @@ -5268,10 +5205,9 @@ init_lread (void) > load_path_check (default_lpath); > > /* Add the site-lisp directories to the front of the default. */ > - if (!no_site_lisp && PATH_SITELOADSEARCH[0] != '\0') > + if (! no_site_lisp && PATH_SITELOADSEARCH[0] != '\0') > { > - Lisp_Object sitelisp; > - sitelisp = decode_env_path (0, PATH_SITELOADSEARCH, 0); > + Lisp_Object sitelisp = decode_env_path (0, PATH_SITELOADSEARCH, 0); > if (! NILP (sitelisp)) > default_lpath = nconc2 (sitelisp, default_lpath); > } > @@ -5286,7 +5222,7 @@ init_lread (void) > Vload_path = CALLN (Fappend, Vload_path, > NILP (elem) ? default_lpath : list1 (elem)); > } > - } /* Fmemq (Qnil, Vload_path) */ > + } > } > else > { > @@ -5299,11 +5235,11 @@ init_lread (void) > load_path_check (Vload_path); > > /* Add the site-lisp directories at the front. */ > - if (!will_dump_p () && !no_site_lisp && PATH_SITELOADSEARCH[0] != '\0') > + if (! will_dump_p () && !no_site_lisp && PATH_SITELOADSEARCH[0] != '\0') > { > - Lisp_Object sitelisp; > - sitelisp = decode_env_path (0, PATH_SITELOADSEARCH, 0); > - if (! NILP (sitelisp)) Vload_path = nconc2 (sitelisp, Vload_path); > + Lisp_Object sitelisp = decode_env_path (0, PATH_SITELOADSEARCH, 0); > + if (! NILP (sitelisp)) > + Vload_path = nconc2 (sitelisp, Vload_path); > } > } Whitespace changes, comment aimlessly deleted. > + DEFVAR_LISP ("installed-directory", Vinstalled_directory, > + doc: /* Install path of built-in lisp libraries. > +This directory contains the `etc`, `lisp`, and `site-lisp` > +installables, and is determined at configure time in the epaths-force > +make target. Not to be confused with the legacy > +`installation-directory' nor `invocation-directory'. */); > + Vinstalled_directory > + = Fexpand_file_name (build_string ("../"), > + Fcar (decode_env_path (0, PATH_LOADSEARCH, 0))); Why is yet another one of these variables needed? And was this change tested on every possible installation type, such as an NS self-contained bundle or MS-DOS? From unknown Sat Sep 13 05:10:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55778: 29.0.50; [PATCH] M-. into a .gz; we've all been there. Resent-From: Lars Ingebrigtsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 03 Jun 2022 10:54:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55778 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: dick.r.chiang@gmail.com Cc: 55778@debbugs.gnu.org Received: via spool by 55778-submit@debbugs.gnu.org id=B55778.165425358411607 (code B ref 55778); Fri, 03 Jun 2022 10:54:01 +0000 Received: (at 55778) by debbugs.gnu.org; 3 Jun 2022 10:53:04 +0000 Received: from localhost ([127.0.0.1]:55391 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nx4vQ-000318-C5 for submit@debbugs.gnu.org; Fri, 03 Jun 2022 06:53:04 -0400 Received: from quimby.gnus.org ([95.216.78.240]:34090) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nx4vH-00030Q-It for 55778@debbugs.gnu.org; Fri, 03 Jun 2022 06:53:03 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: 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=6Ijzr5uH8O+jctj6SDuXpGVu6licDBV7F76i6pqVf30=; b=gLTxsFyBgQkKqeje/lyPSBFf8G +QzrEwPIkgL28GV3gC+WQvauadFjp0w/zoAS7aYn4C6kb/1kbaHolWtpU69HICb7XId6V4tw0lZ+d LseP+7nStiWQJ3Ie2Mh082nEJAaoaSYKRT5LhhbKgF1JeNofezRZ80Rk7EirvbkJ0wDY=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nx4v7-0007NG-RM; Fri, 03 Jun 2022 12:52:48 +0200 From: Lars Ingebrigtsen References: <87k09yw9ao.fsf@dick> X-Now-Playing: The Au Pairs's _Playing With A Different Sex_: "Headache (For Michelle)" Date: Fri, 03 Jun 2022 12:52:44 +0200 In-Reply-To: <87k09yw9ao.fsf@dick> (dick r. chiang's message of "Fri, 03 Jun 2022 02:27:59 -0400") Message-ID: <874k12auir.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain 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: dick.r.chiang@gmail.com writes: > Was https://lists.gnu.org/archive/html/emacs-devel/2021-08/msg00340.html > > Some guys symlink their PATH emacs to src/emacs. > > Other guys still prefer `make install`, and live in constant fear of [...] 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: -2.3 (--) 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: -3.3 (---) dick.r.chiang@gmail.com writes: > Was https://lists.gnu.org/archive/html/emacs-devel/2021-08/msg00340.html > > Some guys symlink their PATH emacs to src/emacs. > > Other guys still prefer `make install`, and live in constant fear of > meta-dotting into a .gz file. Well, live in fear no more. Your patch is (as usual) full of totally irrelevant things, so it's not applicable. The idea of the feature is good, though, but can probably be implemented as a simple file name regexp substitution in the xref machinery that says "if we were going to jump to /usr/share/emacs/27.1/lisp/gnus/gnus.el.gz, then jump to /usr/src/emacs/27.1/lisp/gnus/gnus.el" instead. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Fri Jun 03 06:53:11 2022 Received: (at control) by debbugs.gnu.org; 3 Jun 2022 10:53:11 +0000 Received: from localhost ([127.0.0.1]:55394 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nx4vW-00032S-Lm for submit@debbugs.gnu.org; Fri, 03 Jun 2022 06:53:10 -0400 Received: from quimby.gnus.org ([95.216.78.240]:34106) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nx4vV-000319-NV for control@debbugs.gnu.org; Fri, 03 Jun 2022 06:53:09 -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=C6a7OomQtMN5ZvGFR4mny6bz1wFYFWvUHLbQBCTpyXA=; b=jtjOXk3SeCmqV0YhtCU7luSiZK T3B2U/VUQWSZOA0B6GsCLSL3sY2vc/6aWCbCjE5YeHWiWejwLWIDZ3vii/WLA3Rh3Aadyn2tc238A OYE7MtsyihPhbwja1M9vzkSE9y44f/fAI3zUjfxPw5ajVMOr0shEdnONaFMWBXMBpwqY=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nx4vN-0007NW-JI for control@debbugs.gnu.org; Fri, 03 Jun 2022 12:53:03 +0200 Date: Fri, 03 Jun 2022 12:53:00 +0200 Message-Id: <8735gmauib.fsf@gnus.org> To: control@debbugs.gnu.org From: Lars Ingebrigtsen Subject: control message for bug #55778 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 55778 - patch 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: -2.3 (--) 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: -3.3 (---) tags 55778 - patch quit From unknown Sat Sep 13 05:10:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55778: 29.0.50; [PATCH] M-. into a .gz; we've all been there. Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 03 Jun 2022 11:42:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55778 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: dick.r.chiang@gmail.com Cc: 55778@debbugs.gnu.org Received: via spool by 55778-submit@debbugs.gnu.org id=B55778.16542565198898 (code B ref 55778); Fri, 03 Jun 2022 11:42:02 +0000 Received: (at 55778) by debbugs.gnu.org; 3 Jun 2022 11:41:59 +0000 Received: from localhost ([127.0.0.1]:55450 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nx5gk-0002JR-GE for submit@debbugs.gnu.org; Fri, 03 Jun 2022 07:41:59 -0400 Received: from eggs.gnu.org ([209.51.188.92]:58912) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nx5gg-0002Iw-BI for 55778@debbugs.gnu.org; Fri, 03 Jun 2022 07:41:57 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:41394) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nx5ga-0003wm-NY; Fri, 03 Jun 2022 07:41:48 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=LrI8LYmAaz9b6CNHB5wym/Myvd+/heIOOFHqdQN7490=; b=cAmZO3SfVG+T nwwDsMBYLZ0YgHzdCNr75pjuIIbmp6Jgs+KqEt8xf6ZfPHylZsnkfyVGK1NhVHS5GuzLEpljyZ5O9 KHMpyR1UxeBdL1Hzt6arXjDoRANUa70DZkqGBS7CIYYUc2nlQvYSn+61N6P1AjFLMVmFJjOaQbMNZ 81npc3gmw7KVSUIrfPpJesIlsvonQnD3OLtIl7UVmnlrTBdLGB4LXEW11YeIAmN0t+Zf7PiXzCym7 KZOrYGPl9jYFc/qUrS2LdoJ0RLRn5NUZ3zEAV9sMIDT/VWxh3kN6rUsEpaIiOCOS4ql4OridkomN4 xEOAtTzUgzesZ7Zdk1Zl0w==; Received: from [87.69.77.57] (port=3354 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nx5gS-0007xc-Bz; Fri, 03 Jun 2022 07:41:43 -0400 Date: Fri, 03 Jun 2022 14:41:52 +0300 Message-Id: <83mteuc6tb.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87k09yw9ao.fsf@dick> (dick.r.chiang@gmail.com) References: <87k09yw9ao.fsf@dick> X-Spam-Score: -2.3 (--) 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: -3.3 (---) > From: dick.r.chiang@gmail.com > Date: Fri, 03 Jun 2022 02:27:59 -0400 > > * lisp/emacs-lisp/find-func.el (find-function-regexp-alist): > Was crashing on this missing entry in find-function-regexp-alist. > (find-function-C-source-directory): Style. > (find-function-C-source): Style. > (find-function-search-for-symbol): English. > * lisp/help-fns.el (help-C-file-name): English. > (find-lisp-object-file-name): Use it. > * lisp/help-mode.el (xref): Require. > (help-function-def--button-function): Use it. > (help-face-def): Use it. > * lisp/progmodes/elisp-mode.el (xref-backend-definitions): Style. > (elisp--xref-find-definitions): Style. > (xref-location-marker): Use it. > * lisp/progmodes/project.el (project-root): Snuff bytecomp warning. > * lisp/progmodes/xref.el (xref-prefer-source-directory): New defcustom. > (xref-preferred-message): Message user. > (xref-preferred-source): Act on new defcustom. > (xref-show-definitions-buffer): Style. > (xref--create-fetcher): Style. > * src/emacs.c (syms_of_emacs): English. > * src/lread.c (load_path_default): English. > (init_lread): Style. > (syms_of_lread): New defvar. > * test/lisp/progmodes/elisp-mode-tests.el (xref-tests-prefer-source): > Test it. > * test/lisp/progmodes/xref-tests.el > (xref-matches-in-directory-finds-none-for-some-regexp): Style. > (xref--buf-pairs-iterator-groups-markers-by-buffers-1): Style. > (xref--buf-pairs-iterator-groups-markers-by-buffers-2): Style. > (xref--buf-pairs-iterator-cleans-up-markers): Style. Please separate the real changes from refactoring of existing code and from documentation changes that are unrelated to code changes. They each should be reviewed and judged separately and with different criteria in mind. > @@ -257,7 +258,7 @@ find-library--from-load-history > > (defvar find-function-C-source-directory > (let ((dir (expand-file-name "src" source-directory))) > - (if (file-accessible-directory-p dir) dir)) > + (when (file-accessible-directory-p dir) dir)) > "Directory where the C source files of Emacs can be found. > If nil, do not try to find the source code of functions and variables > defined in C.") > @@ -283,8 +284,8 @@ find-function-C-source > (read-directory-name "Emacs C source dir: " nil nil t)))) > (setq file (expand-file-name file dir)) > (if (file-readable-p file) > - (if (null find-function-C-source-directory) > - (setq find-function-C-source-directory dir)) > + (unless find-function-C-source-directory > + (setq find-function-C-source-directory dir)) > (error "The C source file %s is not available" > (file-name-nondirectory file)))) This seems to be some effort to use 'when' and 'unless' instead of 'if'? If so, please don't: I see no reason for such changes. > +(defcustom xref-prefer-source-directory nil > + "If non-nil, jump to the file in `source-directory' that > +corresponds to the target." "if that exists", right? And what does "jump" mean? who is it that will "jump"? Also, the first line of a doc string should be a complete sentence, for the benefit of 'apropos' commands. > DEFVAR_LISP ("installation-directory", Vinstallation_directory, > - doc: /* A directory within which to look for the `lib-src' and `etc' directories. > -In an installed Emacs, this is normally nil. It is non-nil if > -both `lib-src' (on MS-DOS, `info') and `etc' directories are found > -within the variable `invocation-directory' or its parent. For example, > -this is the case when running an uninstalled Emacs executable from its > -build directory. */); > + doc: /* Should have been named build-directory. > +Counter-intuitively, this variable is nil when Emacs is invoked from > +its `make install` executable. It normally takes on the value of > +`source-directory' when Emacs is invoked from its within-repo `make` > +executable. Its primary use is locating the lib-src and etc > +subdirectories of the build. Not to be confused with > +`installed-directory'. */); Please keep your controversial opinions out of the Emacs sources, and definitely out of the doc strings. Your intuition is wrong here. > -/* Return the default load-path, to be used if EMACSLOADPATH is unset. > - This does not include the standard site-lisp directories > - under the installation prefix (i.e., PATH_SITELOADSEARCH), > - but it does (unless no_site_lisp is set) include site-lisp > - directories in the source/build directories if those exist and we > - are running uninstalled. > - > - Uses the following logic: > - If !will_dump: Use PATH_LOADSEARCH. > - The remainder is what happens when dumping is about to happen: > - If dumping, just use PATH_DUMPLOADSEARCH. > - Otherwise use PATH_LOADSEARCH. > - > - If !initialized, then just return PATH_DUMPLOADSEARCH. > - If initialized: > - If Vinstallation_directory is not nil (ie, running uninstalled): > - If installation-dir/lisp exists and not already a member, > - we must be running uninstalled. Reset the load-path > - to just installation-dir/lisp. (The default PATH_LOADSEARCH > - refers to the eventual installation directories. Since we > - are not yet installed, we should not use them, even if they exist.) > - If installation-dir/lisp does not exist, just add > - PATH_DUMPLOADSEARCH at the end instead. > - Add installation-dir/site-lisp (if !no_site_lisp, and exists > - and not already a member) at the front. > - If installation-dir != source-dir (ie running an uninstalled, > - out-of-tree build) AND install-dir/src/Makefile exists BUT > - install-dir/src/Makefile.in does NOT exist (this is a sanity > - check), then repeat the above steps for source-dir/lisp, site-lisp. */ > +/* Dig toplevel LOAD-PATH out of epaths.h. */ Fat chance we will ever accept such "changes". These details might bore you, but they are there for a reason: so that people who need to make changes in this tricky code could be aware of all the pitfalls that others in their good time fell into. > static Lisp_Object > load_path_default (void) > { > if (will_dump_p ()) > - /* PATH_DUMPLOADSEARCH is the lisp dir in the source directory. > - We used to add ../lisp (ie the lisp dir in the build > - directory) at the front here, but that should not be > - necessary, since in out of tree builds lisp/ is empty, save > - for Makefile. */ > + /* PATH_DUMPLOADSEARCH is the lisp dir in the source directory. */ > return decode_env_path (0, PATH_DUMPLOADSEARCH, 0); And this. > - Lisp_Object lpath = Qnil; > - > - lpath = decode_env_path (0, PATH_LOADSEARCH, 0); > + Lisp_Object lpath = decode_env_path (0, PATH_LOADSEARCH, 0); > > + /* Counter-intuitively Vinstallation_directory is nil for > + invocations of the `make install` executable, and is > + Vsource_directory for invocations of the within-repo `make` > + executable. > + */ And this. (The comment style is also not our style.) > + DEFVAR_LISP ("installed-directory", Vinstalled_directory, > + doc: /* Install path of built-in lisp libraries. > +This directory contains the `etc`, `lisp`, and `site-lisp` > +installables, and is determined at configure time in the epaths-force > +make target. Not to be confused with the legacy > +`installation-directory' nor `invocation-directory'. */); > + Vinstalled_directory > + = Fexpand_file_name (build_string ("../"), > + Fcar (decode_env_path (0, PATH_LOADSEARCH, 0))); This won't work reliably, because it assumes PATH_LOADSEARCH is determined at build time. That is only true for some builds, but not for others. It also disregards EMACSLOADPATH. To be reliable, the variable's value needs to be recalculated at startup, each time anew. From unknown Sat Sep 13 05:10:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55778: 29.0.50; [PATCH] M-. into a .gz; we've all been there. Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 03 Jun 2022 13:25:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55778 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: dick.r.chiang@gmail.com, 55778@debbugs.gnu.org Received: via spool by 55778-submit@debbugs.gnu.org id=B55778.165426267718648 (code B ref 55778); Fri, 03 Jun 2022 13:25:01 +0000 Received: (at 55778) by debbugs.gnu.org; 3 Jun 2022 13:24:37 +0000 Received: from localhost ([127.0.0.1]:55546 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nx7I4-0004qi-U2 for submit@debbugs.gnu.org; Fri, 03 Jun 2022 09:24:37 -0400 Received: from mail-ed1-f52.google.com ([209.85.208.52]:44727) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nx7I3-0004qV-J7 for 55778@debbugs.gnu.org; Fri, 03 Jun 2022 09:24:35 -0400 Received: by mail-ed1-f52.google.com with SMTP id b8so10109238edf.11 for <55778@debbugs.gnu.org>; Fri, 03 Jun 2022 06:24:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:message-id:date:mime-version:user-agent:subject :content-language:to:references:from:in-reply-to :content-transfer-encoding; bh=RCi3TSdT9Mg36HFwjb87UcvWBD3WZANqPFWKLHmeDfQ=; b=O9kunINQ79yWN1oE+qmzuSfEdM55OwUmNTUYeYcoZX4RFQ0ivpTqUThl8QIgFlBAKy Ct3IJvZx8PJw3pARUZQYexFauEshuJ4ANXWfU+p48cEZXQtV7t+Z0ecHJYWbZhn555MD XUh4RREsiEROoeeI7TZ5DaPNpK0mJ+bgrbFayZpoj/HDFmRJVHhHhOvV5Qc+JBX0ZW65 w9dPwWTcEh7IuV2Z95UYPAwJxMUcbVLOngjuRAJ2Knc9Z7fL0SQHp8N1eLi3x8jirsB/ Gcrz3y48KuDdmCTrNbeuUa5oZx8Cy1FUuMs3A3VPkes0q/7IO337EeKtnunIa7NWP5ir 7WMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:message-id:date:mime-version:user-agent :subject:content-language:to:references:from:in-reply-to :content-transfer-encoding; bh=RCi3TSdT9Mg36HFwjb87UcvWBD3WZANqPFWKLHmeDfQ=; b=654ZX6V3D12zrXhm0fs2101AUh7asNsb58kaS0fXWaJIoMIaNnJTQf8I/YH9sbQKjc /en9FXXfVG4/C+ecyTrCv2ymqjvehHDkd0yhwWx6gunkt4xXC3OQtEMwszbwdH8D5xjj 59mYktTRMJ1V8aY/Oqxz9Gor7dOeECksSGv3i2fNSNGW6KRZbw+O1HRpA0UN7aZjNhK6 jCAG1BYizVnEjd4CKYMiSLfZAyA7GJAX2AUwq+JYWofZJ6nX9mLPn/wK6CAA5WHQeUUF 9pZb71UrDOYCsoE7vd4it+Og4Sfmw9G45f9n4/yvWGhg6v3Ca31ekKWVj4udh8PJaMQC KoXw== X-Gm-Message-State: AOAM531bNU4MdCLJkXzYc/ev4lP69vZ4WsYkKqd7KMeGYIm9bXahrB4/ /xlvGu+4+RqBNXw07NQBXo4= X-Google-Smtp-Source: ABdhPJwKIIl3lml3an+4sOW0OJh/Vbi44uSu+ehrKSoZqgATAOtre0DKi1xoR1L89ANSkqSKj7RRzA== X-Received: by 2002:a05:6402:1f8c:b0:42d:c3a9:5beb with SMTP id c12-20020a0564021f8c00b0042dc3a95bebmr10787435edc.160.1654262669569; Fri, 03 Jun 2022 06:24:29 -0700 (PDT) Received: from [192.168.236.48] ([173.237.64.48]) by smtp.googlemail.com with ESMTPSA id g8-20020a1709064e4800b0070f8590ee8fsm296024ejw.159.2022.06.03.06.24.28 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 03 Jun 2022 06:24:28 -0700 (PDT) Message-ID: <74f9bdc3-5591-9098-0562-bfcfd2b9b92e@yandex.ru> Date: Fri, 3 Jun 2022 16:24:26 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.1 Content-Language: en-US References: <87k09yw9ao.fsf@dick> From: Dmitry Gutov In-Reply-To: <87k09yw9ao.fsf@dick> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.5 (/) 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: -0.5 (/) On 03.06.2022 09:27, dick.r.chiang@gmail.com wrote: > emacs -Q --eval "(custom-set-variables '(xref-prefer-source-directory t))" Unrelated changes aside, this new option seems to be designed for and only affect the elisp backend, right? Then it should reside in elisp-mode.el, shouldn't it? The way xref-preferred-source breaks the abstraction doesn't look great either. Maybe that logic could live in help-fns.el or find-func.el. From unknown Sat Sep 13 05:10:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55778: 29.0.50; [PATCH] M-. into a .gz; we've all been there. Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 03 Jun 2022 13:42:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55778 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Dmitry Gutov Cc: 55778@debbugs.gnu.org, dick.r.chiang@gmail.com Received: via spool by 55778-submit@debbugs.gnu.org id=B55778.165426368520372 (code B ref 55778); Fri, 03 Jun 2022 13:42:01 +0000 Received: (at 55778) by debbugs.gnu.org; 3 Jun 2022 13:41:25 +0000 Received: from localhost ([127.0.0.1]:55586 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nx7YK-0005IU-R1 for submit@debbugs.gnu.org; Fri, 03 Jun 2022 09:41:25 -0400 Received: from eggs.gnu.org ([209.51.188.92]:33090) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nx7YH-0005IE-Mg for 55778@debbugs.gnu.org; Fri, 03 Jun 2022 09:41:23 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:53046) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nx7YC-0002hN-DV; Fri, 03 Jun 2022 09:41:16 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=jeFQ6aUuqHTT+MQsZAcyZmTE1xdlaHtin4gxSZKYk0k=; b=XOX2VjHMiKb7 S5lcgXBghtpJbV6HBIhDZWXpn0uV1UniiBd8AzAEAqBv2fmXiScjv/rV9WHywdCDzANbtkyi7GFjd UBmTCAOnUZvcxlBGI9PW5WCSvNxLxSDA5sJxzcLqUU56NHHeMw8qPMxmE0Y/QzQH6vpnXDXNksA9N HqgNGMyxo/MGGoFIjTybhx1c4IKfwanJioV79KnxIDcqZFnmVDPYnWEdA7b3GMV5OQIG7XXKixu46 F1ExmtIvYTzXwqqBlDHq6q5uFKx/DGm/1jY27xUXbb6ZPE01TNJMrKjKvF805lcMMJEEGyGQST4ki jngFfih48pZT2tJyau/N3g==; Received: from [87.69.77.57] (port=2926 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nx7YB-0008Ru-SQ; Fri, 03 Jun 2022 09:41:16 -0400 Date: Fri, 03 Jun 2022 16:41:28 +0300 Message-Id: <837d5xdfuf.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <74f9bdc3-5591-9098-0562-bfcfd2b9b92e@yandex.ru> (message from Dmitry Gutov on Fri, 3 Jun 2022 16:24:26 +0300) References: <87k09yw9ao.fsf@dick> <74f9bdc3-5591-9098-0562-bfcfd2b9b92e@yandex.ru> X-Spam-Score: -2.3 (--) 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: -3.3 (---) > Date: Fri, 3 Jun 2022 16:24:26 +0300 > From: Dmitry Gutov > > On 03.06.2022 09:27, dick.r.chiang@gmail.com wrote: > > emacs -Q --eval "(custom-set-variables '(xref-prefer-source-directory t))" > > Unrelated changes aside, this new option seems to be designed for and > only affect the elisp backend, right? > > Then it should reside in elisp-mode.el, shouldn't it? Yes, I think so. I don't see how it could be related to anything else but the way Emacs installs the *.el files. From unknown Sat Sep 13 05:10:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55778: 29.0.50; [PATCH] M-. into a .gz; we've all been there. Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 04 Jun 2022 17:31:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55778 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: dick Cc: 55778@debbugs.gnu.org Received: via spool by 55778-submit@debbugs.gnu.org id=B55778.165436385120963 (code B ref 55778); Sat, 04 Jun 2022 17:31:01 +0000 Received: (at 55778) by debbugs.gnu.org; 4 Jun 2022 17:30:51 +0000 Received: from localhost ([127.0.0.1]:59601 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nxXbv-0005S2-44 for submit@debbugs.gnu.org; Sat, 04 Jun 2022 13:30:51 -0400 Received: from eggs.gnu.org ([209.51.188.92]:58144) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nxXbs-0005Rm-Oc for 55778@debbugs.gnu.org; Sat, 04 Jun 2022 13:30:50 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:56078) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nxXbn-00032A-Fs; Sat, 04 Jun 2022 13:30:43 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=MIzgwm5CiYj7DD4YgVkHAxCWA8+JzcHl/3wNQ0uJonM=; b=aPWdkeJ8pMh2 STtkkn3q5oOnA/fLNWG1kXu+K8ItNcIqmXQRnS+xG42lzeaVjBbXwqkU/9B9BOR8yY1sW5tKP3Rhm fPBbgjg5KZfBcmAbovKWHGSZDbssIRVGxRRsOxTNLqOPNIA91mvCV+PuZE2mKCJYNjV9XmqBZtkGj xd57YZXW9mRl1DCUd8x3rBE39olOnirbBn2RhYWcpgRtea4myFQw37ITDKuI34say96OjGHzpiPnJ QLWLa2qB5ZAwtqhHVCSsURA2mmJkMTY8uPy8WIcDg/9vi3tBd80Xjsi9+VPkmtlO7Voti5etvnYF9 aghANrg//9sy4r3TmmJIAQ==; Received: from [87.69.77.57] (port=3539 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nxXbC-0004q2-8e; Sat, 04 Jun 2022 13:30:42 -0400 Date: Sat, 04 Jun 2022 20:29:52 +0300 Message-Id: <8335gkbalr.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87czfoxtfn.fsf@dick> (message from dick on Sat, 04 Jun 2022 12:52:12 -0400) References: <87k09yw9ao.fsf@dick> <83mteuc6tb.fsf@gnu.org> <87czfoxtfn.fsf@dick> X-Spam-Score: -2.3 (--) 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: -3.3 (---) > From: dick > Cc: 55778@debbugs.gnu.org > Date: Sat, 04 Jun 2022 12:52:12 -0400 > > EZ> to make changes in this tricky code could be aware of all the > > If by "tricky" you mean "written by a recent graduate", you may have a point. I think you simply don't understand what that code does and why. Your mistake in initializing the installed-directory variable is a clear evidence that you have a lot to learn about the various aspects of the Emacs startup, before your conclusions about the code which supports that could be taken seriously. From unknown Sat Sep 13 05:10:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55778: 29.0.50; [PATCH] M-. into a .gz; we've all been there. Resent-From: dick Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 05 Jun 2022 06:12:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55778 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: 55778@debbugs.gnu.org Received: via spool by 55778-submit@debbugs.gnu.org id=B55778.16544095199410 (code B ref 55778); Sun, 05 Jun 2022 06:12:02 +0000 Received: (at 55778) by debbugs.gnu.org; 5 Jun 2022 06:11:59 +0000 Received: from localhost ([127.0.0.1]:59959 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nxjUT-0002Rf-RW for submit@debbugs.gnu.org; Sun, 05 Jun 2022 02:11:59 -0400 Received: from mail-qk1-f182.google.com ([209.85.222.182]:40550) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nxX0d-0004RQ-In for 55778@debbugs.gnu.org; Sat, 04 Jun 2022 12:52:22 -0400 Received: by mail-qk1-f182.google.com with SMTP id o73so3247230qke.7 for <55778@debbugs.gnu.org>; Sat, 04 Jun 2022 09:52:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=327ACUP4xbs1Vji+VoIL9WhaMWPHGWTJ5+eh0m5Ww+Q=; b=ZyNrXe43uO48LVilkkakNYw87eUlOhXludyD0/m4rzLW9TG5TPL/lueBAFoi2hkWav vtBDA5fmd/NRhbx3HPmevIg99foWpHT/lH+aLlz8NJ9x37A82ukGzCAsaZYXPs8qEDYl G3Ef/AgqNB6sah4OIvEZsepugRLC3yuvRxMDaIwfJIteZZxT27WRQQBaA7CorzQO4NKK VTSok+7cPaJH3wBAiJ7Kl8LUUMDTOymE/D9nZFXhLaAcvM+dWszwBO8DkI+QbNPEnJMl DcdLLSNThauSaSJ5x2WZenKsQtykGV0HLn/3gu3V5JHfpnkaXbAfHGKBPedP6qhBqPbS AN6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=327ACUP4xbs1Vji+VoIL9WhaMWPHGWTJ5+eh0m5Ww+Q=; b=TESW5melIj79GNdoePdIzl0UB87ne7rAE8s4ozqDfplHi6p5ScQu7QR9TFV1q7mIHO 9cCbWLqrmtHcwNLkb98EAMbgnmufbsGFnwVvELYGSAsnr7s7dWyDNvgqaPmnL/Hgm6hA 0+5zCa0BligWjf+GRw4Z3MGEJCKgfPvdYREWybO/4p3XZUSV373guPeJ+2aqYlYD7Des irYi1ferznMuNoe+nUh781olmQzlwklDMFTrFqKPwtYQ25kbk/FKir60O2pwudQBc7J6 ekQwRJZCHKOA3pT5SXPnyqN7/w4GSLGGe77jh7qo687hjKCSZU2wCu7fWG4POMvC3kyz 6asg== X-Gm-Message-State: AOAM530La8tOubLrbmtvvnQ8oFO+eUscc3noFlOClhYqgpF3CGe4/367 ISe44at1F0mJSBoWn3fiQ8o/v4dMoqc= X-Google-Smtp-Source: ABdhPJwh5Y9ZHTDE6kY0t5gQkp5HLGGM6yl+jY2rBzW+PYnKxh+E8QpL7HLyrWQZ5pdNsb0+ZkSEqA== X-Received: by 2002:a05:620a:2047:b0:6a3:3063:aa29 with SMTP id d7-20020a05620a204700b006a33063aa29mr10955397qka.144.1654361533886; Sat, 04 Jun 2022 09:52:13 -0700 (PDT) Received: from localhost (pool-96-232-253-158.nycmny.fios.verizon.net. [96.232.253.158]) by smtp.gmail.com with ESMTPSA id l22-20020a05620a28d600b006a5bc8e956esm7966096qkp.133.2022.06.04.09.52.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 04 Jun 2022 09:52:13 -0700 (PDT) From: dick References: <87k09yw9ao.fsf@dick> <83mteuc6tb.fsf@gnu.org> Date: Sat, 04 Jun 2022 12:52:12 -0400 In-Reply-To: <83mteuc6tb.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 03 Jun 2022 14:41:52 +0300") Message-ID: <87czfoxtfn.fsf@dick> User-Agent: Gnus/5.14 (Gnus v5.14) Commercial/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Mailman-Approved-At: Sun, 05 Jun 2022 02:11:57 -0400 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 (-) EZ> to make changes in this tricky code could be aware of all the If by "tricky" you mean "written by a recent graduate", you may have a point. From unknown Sat Sep 13 05:10:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55778: 29.0.50; [PATCH] M-. into a .gz; we've all been there. Resent-From: Lars Ingebrigtsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 05 Jun 2022 13:50:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55778 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: dick.r.chiang@gmail.com Cc: 55778@debbugs.gnu.org, Stefan Monnier Received: via spool by 55778-submit@debbugs.gnu.org id=B55778.165443696028940 (code B ref 55778); Sun, 05 Jun 2022 13:50:02 +0000 Received: (at 55778) by debbugs.gnu.org; 5 Jun 2022 13:49:20 +0000 Received: from localhost ([127.0.0.1]:60346 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nxqd5-0007Wi-SH for submit@debbugs.gnu.org; Sun, 05 Jun 2022 09:49:20 -0400 Received: from quimby.gnus.org ([95.216.78.240]:56946) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nxqd2-0007WS-CR for 55778@debbugs.gnu.org; Sun, 05 Jun 2022 09:49:19 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: 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=h6ZUq0FW3be4veivo/YSJwRlVFp3S8V2mxsJJnjoyD0=; b=KFF6r5krII/RDBH0iCqE5QssHT JBWIzkNR0B1MvdGZFNB1xKDgJuOZuUCfpdLAjBl433x4ExUIlvJ0rkaYkTwBi+VWPsmlSrGZxKsuk SYNLbcuCUsw8tz/i1mE7Mq+Y68oWrsK5Bf1R96gifWX8XNKTrCslDiq25EL76HR1RHiY=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nxqcr-0001VG-O1; Sun, 05 Jun 2022 15:49:08 +0200 From: Lars Ingebrigtsen References: <87k09yw9ao.fsf@dick> <874k12auir.fsf@gnus.org> X-Now-Playing: 1CD (2022) - 09 Aquabat's _Illusion_: "(Circle Of Whispers)" Date: Sun, 05 Jun 2022 15:49:04 +0200 In-Reply-To: <874k12auir.fsf@gnus.org> (Lars Ingebrigtsen's message of "Fri, 03 Jun 2022 12:52:44 +0200") Message-ID: <87r14343vz.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain 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: > The idea of the feature is good, though, but can probably be implemented > as a simple file name regexp substitution in the xref machinery that > says "if we were going to jump to > /usr/share/emacs [...] 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: -2.3 (--) 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: -3.3 (---) Lars Ingebrigtsen writes: > The idea of the feature is good, though, but can probably be implemented > as a simple file name regexp substitution in the xref machinery that > says "if we were going to jump to > /usr/share/emacs/27.1/lisp/gnus/gnus.el.gz, then jump to > /usr/src/emacs/27.1/lisp/gnus/gnus.el" instead. This reminded me of something Stefan M said the other day(ish) -- it'd be nice to be able to jump to "another file" that's somehow tied to the current file. For instance, jump to files-tests.el from files.el, or to emacs-28/lisp/files.el when you're in trunk/lisp/files.el, or jump to foo.h when you're in foo.c. And this is basically the same -- if you're in /usr/share/emacs/27.1/lisp/abbrev.el.gz, then you want to jump to the development sources. So I've now added a new command `find-sibling-file' to Emacs 29. This setting does what the latter: (setq find-sibling-rules '(("\\(/usr/share/emacs.*/\\(lisp/.*.el\\).gz\\)" "/home/larsi/src/emacs/trunk/\\2\\'"))) Something like this does the Emacs development sibling dance: (setq find-sibling-rules '(("src/emacs/trunk/[^/]+/\\(.*\\)\\'" "src/emacs/emacs-28/.*/\\1\\'") ("emacs/trunk/\\(.*\\)\\.\\(c\\|el\\)\\'" "emacs/trunk/test/\\1-tests.el\\'"))) And this is foo.c -> foo.h: (setq find-sibling-rules '(("\\([^/]+\\)\\.c\\'" "\\1.h"))) I'm not 100% sure about the semantics of the match/expansions here -- there may well be use cases I haven't considered, so this should probably be tweaked a bit. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From unknown Sat Sep 13 05:10:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55778: 29.0.50; [PATCH] M-. into a .gz; we've all been there. Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 05 Jun 2022 13:59:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55778 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Lars Ingebrigtsen Cc: 55778@debbugs.gnu.org, dick.r.chiang@gmail.com, monnier@iro.umontreal.ca Received: via spool by 55778-submit@debbugs.gnu.org id=B55778.165443749530688 (code B ref 55778); Sun, 05 Jun 2022 13:59:02 +0000 Received: (at 55778) by debbugs.gnu.org; 5 Jun 2022 13:58:15 +0000 Received: from localhost ([127.0.0.1]:33098 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nxqlj-0007yu-4b for submit@debbugs.gnu.org; Sun, 05 Jun 2022 09:58:15 -0400 Received: from eggs.gnu.org ([209.51.188.92]:44220) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nxqlT-0007xk-1Q for 55778@debbugs.gnu.org; Sun, 05 Jun 2022 09:58:13 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:43864) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nxqlN-0006o9-3C; Sun, 05 Jun 2022 09:57:53 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=PvYjjfQ1HFFdJvt6FFPaXaShIvWrDMVr/b5fTDpPCtU=; b=amiu6uHKNXVn MHeCCQDYa1TFS5UGSqbF91vl+mNaBemjovWISh+SGjWqO79oKlJfb5y6FUSiWDjcxA71vc+kWCRHd EL0Ms1DzO2NmCV1J/Ief/dJ2eCX8H++ZRvarzyIM8SaSvq0xfkVyz+qjfq9k/gMIPxf/3bfEnuC3i UCWXovBOC8bzBvciAP7adPfCzn//zLuLjEuosx5gQB/Hp/RskshQwEuMtPCYLopKANYHKdyTo2VcK Yqes/R1qg+Ok8ywGr/mu5t4lo6+7FN1KmVL4/cPwditoS49jVbUzTfzpZYcCVdieVylf/Y2/smCtm TDAXMaQnfdg+YGbUiROJ9g==; Received: from [87.69.77.57] (port=4015 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nxqlM-0001KI-DX; Sun, 05 Jun 2022 09:57:52 -0400 Date: Sun, 05 Jun 2022 16:57:39 +0300 Message-Id: <83ee039prg.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87r14343vz.fsf@gnus.org> (message from Lars Ingebrigtsen on Sun, 05 Jun 2022 15:49:04 +0200) References: <87k09yw9ao.fsf@dick> <874k12auir.fsf@gnus.org> <87r14343vz.fsf@gnus.org> X-Spam-Score: -0.0 (/) 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: -3.3 (---) > Cc: 55778@debbugs.gnu.org, Stefan Monnier > From: Lars Ingebrigtsen > Date: Sun, 05 Jun 2022 15:49:04 +0200 > > So I've now added a new command `find-sibling-file' to Emacs 29. This > setting does what the latter: > > (setq find-sibling-rules > '(("\\(/usr/share/emacs.*/\\(lisp/.*.el\\).gz\\)" > "/home/larsi/src/emacs/trunk/\\2\\'"))) We already have ff-find-related-file, why not expand that facility instead? the new command sounds like a subset of what ff-find-related-file can do. From unknown Sat Sep 13 05:10:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55778: 29.0.50; [PATCH] M-. into a .gz; we've all been there. Resent-From: Lars Ingebrigtsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 05 Jun 2022 14:03:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55778 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: 55778@debbugs.gnu.org, dick.r.chiang@gmail.com, monnier@iro.umontreal.ca Received: via spool by 55778-submit@debbugs.gnu.org id=B55778.165443777431197 (code B ref 55778); Sun, 05 Jun 2022 14:03:02 +0000 Received: (at 55778) by debbugs.gnu.org; 5 Jun 2022 14:02:54 +0000 Received: from localhost ([127.0.0.1]:33103 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nxqqD-000876-RM for submit@debbugs.gnu.org; Sun, 05 Jun 2022 10:02:54 -0400 Received: from quimby.gnus.org ([95.216.78.240]:57046) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nxqqC-00086u-Q9 for 55778@debbugs.gnu.org; Sun, 05 Jun 2022 10:02:53 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: 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=ZQJd9Ta7/EkbmD9LtQ8iRGqS12zTVYSKxWUIX7XRooA=; b=TSKeKbjH7FZFH/8Gj92Ui59Oe4 NbKTzmgiss4rA+xZs8y2Mc+9O1w27C16FqOlnUYOVt5TavzxB+vuZQ3mXxPI6pvu58BU5hnuZPvoP nIFIlRDALfS/zOB8axZpFVjlOpWBUE+v3OpVUKHFKRT8qcQ1U8HwfoCwM3RoM939xXtk=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nxqq2-0001gU-5e; Sun, 05 Jun 2022 16:02:44 +0200 From: Lars Ingebrigtsen References: <87k09yw9ao.fsf@dick> <874k12auir.fsf@gnus.org> <87r14343vz.fsf@gnus.org> <83ee039prg.fsf@gnu.org> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAElBMVEUPDxInHCONbKxO KEOiOy3///9uRwijAAAAAWJLR0QF+G/pxwAAAAd0SU1FB+YGBAw1FyQTjt0AAAGlSURBVDjLpZNh mqMwCIbh6R4AxAOsZA4gkAO0mvufaUk6M9raf8uPqLx8BAkB+G9DZiY6vpl/QaIDYLEkmA40PoOb aiG4/e1axFMqdFUCfN9wWmCO+A07FF6wHXJkW79fdaGGcNryJ0QXvCP4+gmswG7v4KaZCFivCg+T 2q4AoC5Sd71uPredUK4AYvrKDpVrpy0bslzjYX508OFoNkbxxwfQcvnzAcwje7sWuw3XdH/zCzde 8zznB9tJ5CAzZb8ni7oTUJ8RxhXZgTM55TnDfO/eCBZfOY+TmxsHO0sfD9UOTRaE1vwrYtOwaoxf zVjUpoVBS4R6aEQsnL0Jm8oAHl5105yrnsSTh1rk+Eno0zL+Vlt0VckoiAGiuJqI1j3qpsWLQd84 N8j+lmAte6L82hp0l46lKGW0L2WEgfZUuw8Vieoj/zHzOvQ6m0VUcqMMshyw4iFQIr3ELBRMWRAT S+nXKPhpQsYkcUwj/9j7UOPTO4alL3CSjEf22T4oXi7kGfQrzG/kW5ANfSXS0mysO13AHn2NFwkP V9Sk9lIA15OCjuL+AZFuUILiwA2mAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIyLTA2LTA0VDEyOjUz OjIzKzAwOjAwf9+2egAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMi0wNi0wNFQxMjo1MzoyMyswMDow MA6CDsYAAAAASUVORK5CYII= X-Now-Playing: 1CD (2022) - 12 Fortune Teller's _Illusion_: "(Circle Of Whispers)" Date: Sun, 05 Jun 2022 16:02:40 +0200 In-Reply-To: <83ee039prg.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 05 Jun 2022 16:57:39 +0300") Message-ID: <87ee03439b.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain 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: Eli Zaretskii writes: > We already have ff-find-related-file, why not expand that facility > instead? the new command sounds like a subset of what > ff-find-related-file can do. I thought that one was quite centred on knowing a lot of magical rules for C files, so it doesn't really seem general enough... 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: -2.3 (--) 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: -3.3 (---) Eli Zaretskii writes: > We already have ff-find-related-file, why not expand that facility > instead? the new command sounds like a subset of what > ff-find-related-file can do. I thought that one was quite centred on knowing a lot of magical rules for C files, so it doesn't really seem general enough... -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From unknown Sat Sep 13 05:10:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55778: 29.0.50; [PATCH] M-. into a .gz; we've all been there. Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 05 Jun 2022 14:17:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55778 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Lars Ingebrigtsen Cc: 55778@debbugs.gnu.org, dick.r.chiang@gmail.com, monnier@iro.umontreal.ca Received: via spool by 55778-submit@debbugs.gnu.org id=B55778.16544385845184 (code B ref 55778); Sun, 05 Jun 2022 14:17:01 +0000 Received: (at 55778) by debbugs.gnu.org; 5 Jun 2022 14:16:24 +0000 Received: from localhost ([127.0.0.1]:33164 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nxr3I-0001LJ-8n for submit@debbugs.gnu.org; Sun, 05 Jun 2022 10:16:24 -0400 Received: from eggs.gnu.org ([209.51.188.92]:46366) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nxr3G-0001FS-95 for 55778@debbugs.gnu.org; Sun, 05 Jun 2022 10:16:22 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:44076) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nxr35-0001CB-PH; Sun, 05 Jun 2022 10:16:16 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=dZP4qnJnlK2QHSxZGwoG+2TQEOS2I75DYWyz50jEByY=; b=CM+pSWahPYyV TUJb4mVcfBQqc77IBLbC1sTvDuTgkcjrvYrmOzMDoGNd8m9gv7/hAxIyqUEfekWRdhTG+GP6VWses +q+8tOPtQzQU6Ue2JGe9CI/IFscESWNQ7Gaqcjm6sl3yRu/JeOWXess1YCenxJMjrEI4yiFd+ne/U zEobRdwKPpbFjHCQuM2M07uPJeOrsQQqP6Lj9I9WEhLl852wCP99H+sVc8F0KmF5+p5owEQNsSuGz O3gAWpdfruByuVJ/415oH8pw3JI4Us0lMruKbyp1Iuu3pymTV7SU3EqKDEP8h0ZhbQwxYPGxN1kGU 5ftJvUWMfLKaomWXF/BpAA==; Received: from [87.69.77.57] (port=1171 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nxr32-0008CU-3r; Sun, 05 Jun 2022 10:16:11 -0400 Date: Sun, 05 Jun 2022 17:15:54 +0300 Message-Id: <83bkv79ox1.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87ee03439b.fsf@gnus.org> (message from Lars Ingebrigtsen on Sun, 05 Jun 2022 16:02:40 +0200) References: <87k09yw9ao.fsf@dick> <874k12auir.fsf@gnus.org> <87r14343vz.fsf@gnus.org> <83ee039prg.fsf@gnu.org> <87ee03439b.fsf@gnus.org> X-Spam-Score: -2.3 (--) 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: -3.3 (---) > From: Lars Ingebrigtsen > Cc: dick.r.chiang@gmail.com, 55778@debbugs.gnu.org, monnier@iro.umontreal.ca > Date: Sun, 05 Jun 2022 16:02:40 +0200 > > Eli Zaretskii writes: > > > We already have ff-find-related-file, why not expand that facility > > instead? the new command sounds like a subset of what > > ff-find-related-file can do. > > I thought that one was quite centred on knowing a lot of magical rules > for C files, so it doesn't really seem general enough... That it supports C files doesn't mean it cannot support others: the feature is quite general, not tied to C mode in any way. From unknown Sat Sep 13 05:10:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55778: 29.0.50; [PATCH] M-. into a .gz; we've all been there. Resent-From: Lars Ingebrigtsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 06 Jun 2022 12:26:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55778 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: 55778@debbugs.gnu.org, dick.r.chiang@gmail.com, monnier@iro.umontreal.ca Received: via spool by 55778-submit@debbugs.gnu.org id=B55778.165451834925999 (code B ref 55778); Mon, 06 Jun 2022 12:26:02 +0000 Received: (at 55778) by debbugs.gnu.org; 6 Jun 2022 12:25:49 +0000 Received: from localhost ([127.0.0.1]:34584 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nyBnp-0006lG-8n for submit@debbugs.gnu.org; Mon, 06 Jun 2022 08:25:49 -0400 Received: from quimby.gnus.org ([95.216.78.240]:39136) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nyBnn-0006kn-4q for 55778@debbugs.gnu.org; Mon, 06 Jun 2022 08:25:48 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: 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=+OtlMAXcr+eJINg4P3DRF8y+YU3yoiRck2KMl3SuEBc=; b=bL4SUvk+CaN7zm3EKctGrXD8FA 9Ldsc9yDDrBXz41QAj38aII0uTiwLFkA+EKOyim5UxEex2K1gCv6Z/rwD6RWjyHIpTaiZDVr+Cxxe bOVkGw4KxNeEiPbgG4QCGUo5i4Cl1seLP0FcoR0RrS+unMc4gtraUTb+3rDMdDfKQ8eU=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nyBnc-0002U5-EK; Mon, 06 Jun 2022 14:25:38 +0200 From: Lars Ingebrigtsen References: <87k09yw9ao.fsf@dick> <874k12auir.fsf@gnus.org> <87r14343vz.fsf@gnus.org> <83ee039prg.fsf@gnu.org> <87ee03439b.fsf@gnus.org> <83bkv79ox1.fsf@gnu.org> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAD1BMVEXPy7xOQECIeHid UJn///+ao3MeAAAAAWJLR0QEj2jZUQAAAAd0SU1FB+YGBgwWNJLUQEUAAAGxSURBVDjLXZTblcMw CEQxbsCQBgA34N3039sOD3nj6PiD6AoYAQrR/9r0fOcycjEKCz+wy/jkVSBoSxCiAhAOWwpgl4PU AcrFiPb2sAwsLvINOiOAa51Btk7Olr/hIHqkFQvAgleFCk1V8RrASA5p8ECYTJn3uN4ZOMgSQGCF 3ccjlzL2ve0HsIxFqdCYdxrAqWVTgUDYDFV7J69zviJxnAsgglLlLu9Y1aUFqMEkP8o/PK/RMh6q ZCKVsM8iJojVwy8Pl6VqgSyPVHUb2AJ8A6vcdH6EigGsFgPUDNot+yF5u1uuWpUqq5s39Bu0lqpu mqzfAPm1y26dI2LA1vMD+3w0CqOpbd33oJE/A2ePSaTlkc05n4BShvFBfAOeMS0/PbwHLuf+LniG iluuBdfe9b52AL5zcDYa8a+rwO3BA/i6MLKsMkONqUcOfHzkLGPu4vwpAMuJXSEGoVxDqwV4R2pe A4RzANIdyL7FIfWcNcEmEduQqAsa5BZgfXUoHFn3ACBBgAEcMoPme7YlOjme+DGAzt/s5ACDQP/4 j4HgebUsn0XMOq7n7AswdXN0tdbjD0FgXKAO/X3SAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIyLTA2 LTA2VDEyOjIyOjUyKzAwOjAwkjTvCQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMi0wNi0wNlQxMjoy Mjo1MiswMDowMONpV7UAAAAASUVORK5CYII= X-Now-Playing: Hilt's _Stoneman_: "Stoneman (Extended Mix (Mania Edit))" Date: Mon, 06 Jun 2022 14:25:34 +0200 In-Reply-To: <83bkv79ox1.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 05 Jun 2022 17:15:54 +0300") Message-ID: <87zgiqx9kx.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain 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: Eli Zaretskii writes: > That it supports C files doesn't mean it cannot support others: the > feature is quite general, not tied to C mode in any way. It just seems like a really awkward fit -- the features aren't dissimilar in concept, but they're very different in feeling. `ff-get-other-file' tries to magically guess at stuff, while `find-sibling- [...] 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: -2.3 (--) 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: -3.3 (---) Eli Zaretskii writes: > That it supports C files doesn't mean it cannot support others: the > feature is quite general, not tied to C mode in any way. It just seems like a really awkward fit -- the features aren't dissimilar in concept, but they're very different in feeling. `ff-get-other-file' tries to magically guess at stuff, while `find-sibling-file' explicitly leaves it all to the user. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From unknown Sat Sep 13 05:10:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55778: 29.0.50; [PATCH] M-. into a .gz; we've all been there. Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 06 Jun 2022 12:52:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55778 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Lars Ingebrigtsen Cc: 55778@debbugs.gnu.org, dick.r.chiang@gmail.com, monnier@iro.umontreal.ca Received: via spool by 55778-submit@debbugs.gnu.org id=B55778.16545198956039 (code B ref 55778); Mon, 06 Jun 2022 12:52:02 +0000 Received: (at 55778) by debbugs.gnu.org; 6 Jun 2022 12:51:35 +0000 Received: from localhost ([127.0.0.1]:34623 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nyCCl-0001ZL-DQ for submit@debbugs.gnu.org; Mon, 06 Jun 2022 08:51:35 -0400 Received: from eggs.gnu.org ([209.51.188.92]:40278) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nyCCj-0001Z1-RC for 55778@debbugs.gnu.org; Mon, 06 Jun 2022 08:51:34 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:35714) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nyCCe-00062Y-BU; Mon, 06 Jun 2022 08:51:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=7pr0xV25I13hJa7xUSozyqe1JgpzlfVftW+6kQWNodI=; b=SOd8i9eB7iBz Ip8VYPGwjcC2lCrqv9T4Em+oN58C7dyaQZ/3YEVTn5+L9BsFtkzJXfJOgCSohnP9ugp1vxFXuWwVB k8Nz2kUgXtbxT1FeFpLK6gqXOmtQxmc9Uzi+J52rPtxaVSUZ2iN1NVRQ0pmd8EY467Y9kr4hQUrng 14PD3dL35PslpymnqMlse1X2LU7cOshg3Rs2HqdRuUP3vcMTsp9MwjEhCbSjqf1pKNsGyvGDqEcUO 9kNkT0h9TC+NQwrRYT6FgTif6Z5oULg95fTuwPBZ3tnCKUwsC7zl3g9mohFqBWBeIMQGhlsjQCzb8 dSLXk9B+ZvkJryWW5NmU/g==; Received: from [87.69.77.57] (port=4872 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nyCCd-0003tf-RA; Mon, 06 Jun 2022 08:51:28 -0400 Date: Mon, 06 Jun 2022 15:51:17 +0300 Message-Id: <83bkv67y62.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87zgiqx9kx.fsf@gnus.org> (message from Lars Ingebrigtsen on Mon, 06 Jun 2022 14:25:34 +0200) References: <87k09yw9ao.fsf@dick> <874k12auir.fsf@gnus.org> <87r14343vz.fsf@gnus.org> <83ee039prg.fsf@gnu.org> <87ee03439b.fsf@gnus.org> <83bkv79ox1.fsf@gnu.org> <87zgiqx9kx.fsf@gnus.org> X-Spam-Score: -2.3 (--) 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: -3.3 (---) > From: Lars Ingebrigtsen > Cc: dick.r.chiang@gmail.com, 55778@debbugs.gnu.org, monnier@iro.umontreal.ca > Date: Mon, 06 Jun 2022 14:25:34 +0200 > > Eli Zaretskii writes: > > > That it supports C files doesn't mean it cannot support others: the > > feature is quite general, not tied to C mode in any way. > > It just seems like a really awkward fit -- the features aren't > dissimilar in concept, but they're very different in feeling. > `ff-get-other-file' tries to magically guess at stuff, while > `find-sibling-file' explicitly leaves it all to the user. Maybe I'm missing something, but isn't ff-other-file-alist equivalent to your find-sibling-rules? From unknown Sat Sep 13 05:10:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55778: 29.0.50; [PATCH] M-. into a .gz; we've all been there. Resent-From: Lars Ingebrigtsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 07 Jun 2022 09:14:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55778 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: 55778@debbugs.gnu.org, dick.r.chiang@gmail.com, monnier@iro.umontreal.ca Received: via spool by 55778-submit@debbugs.gnu.org id=B55778.165459322614029 (code B ref 55778); Tue, 07 Jun 2022 09:14:02 +0000 Received: (at 55778) by debbugs.gnu.org; 7 Jun 2022 09:13:46 +0000 Received: from localhost ([127.0.0.1]:37625 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nyVHV-0003eD-SG for submit@debbugs.gnu.org; Tue, 07 Jun 2022 05:13:46 -0400 Received: from quimby.gnus.org ([95.216.78.240]:50502) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nyVHU-0003dz-2U for 55778@debbugs.gnu.org; Tue, 07 Jun 2022 05:13:44 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: 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=YmTi+VdZW4TPeSnndAkmYmjAdvHC19TuzdOmOOXCDpE=; b=cou1mdtkTods1x6iKi9MtacPUI wCLJ3rgXSFC081K2HMTSVZG7OgeI8sz1IBv/nsTqdbsIDwrAHUFfYXGpoe2h/vcDbia1KhGHJWWXW FnXJ1kZ1kSvQCeHbecXebU9N77L7HdfuInevFaUVyBYq9rfhqFjN0+VDDoWMF1gy6Hlk=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nyVHI-0000U0-V2; Tue, 07 Jun 2022 11:13:35 +0200 From: Lars Ingebrigtsen References: <87k09yw9ao.fsf@dick> <874k12auir.fsf@gnus.org> <87r14343vz.fsf@gnus.org> <83ee039prg.fsf@gnu.org> <87ee03439b.fsf@gnus.org> <83bkv79ox1.fsf@gnu.org> <87zgiqx9kx.fsf@gnus.org> <83bkv67y62.fsf@gnu.org> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAAAAAByaaZbAAAABGdBTUEAALGPC/xhBQAAAAJi S0dEAP+Hj8y/AAAACXBIWXMAAABkAAAAZAAPlsXdAAAAB3RJTUUH5gYHCQkk/E77MQAAAeZJREFU SMfNlT2OszAQhp9EuImUJg0+w8oSl8gFttg0HMBVTrMVV9gUe4Fs4xtEstJwAdN8DVIaN19BYMFg At26AHk87/x43hlvDONVND8LoADdO9uYwjoACTio8fjQgEAAHjhpTMqKlZrtGnWoimTO3NGCO9p2 7yqg85DlqQgANYC0aiDsAEpfQg97i3IK7qVynbANSQCHKvRQU9sSj61/pWb3DDhLdwuyzrukq2qB OtiV19pL+s8A1GoPEWpk3P3kgU5CMgvxID1yndYXjAHvoIvvRzSkIhA80PDlY/ps7ZT0JOKAMMic M+ifbJpYgu2Q7bzxfYOCz/cYFfPQBOQ5iOmgUhPWwQf/lznAcx7F1lSlSxdVl5OAR7RqLGLrcJq8 BqSXwyqAuBTVYoAATlx7EjcLyH5ycn0ejpO52arQaG4sBnxdjxqyEthLBfb2AuArgM/nrsC98kCm AQrrqPEtu0y8VzKTkZusLxqztXenJ32+AQGxksLH9Pmo4PmstEvGcxC2bDgYGEwA0ubNleCkQ949 8GjvPwBsG0ftVyJnuq0DgKOUd+6UgBJzgITeRQgH1MMODQfdXB0AdsPj3MxWGhh1a8Ib7p8HEAeJ auIpvRcgnnQQiD2Shr4b00Wqx/abBAYH/wGn4ZBKGesgjQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAy Mi0wNi0wN1QwOTowOTozNiswMDowMNQ2T+8AAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjItMDYtMDdU MDk6MDk6MzYrMDA6MDCla/dTAAAAAElFTkSuQmCC X-Now-Playing: Mary Halvorson's Code Girl's _Artlessly Falling_: "Mexican War Streets (Pittsburgh)" Date: Tue, 07 Jun 2022 11:13:31 +0200 In-Reply-To: <83bkv67y62.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 06 Jun 2022 15:51:17 +0300") Message-ID: <87zgioomys.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain 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: Eli Zaretskii writes: > Maybe I'm missing something, but isn't ff-other-file-alist equivalent > to your find-sibling-rules? No? "Alist of extensions to find given the current file's extension." `find-sibling-rules' isn't about extensions. 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: -2.3 (--) 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: -3.3 (---) Eli Zaretskii writes: > Maybe I'm missing something, but isn't ff-other-file-alist equivalent > to your find-sibling-rules? No? "Alist of extensions to find given the current file's extension." `find-sibling-rules' isn't about extensions. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From unknown Sat Sep 13 05:10:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55778: 29.0.50; [PATCH] M-. into a .gz; we've all been there. Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 07 Jun 2022 11:32:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55778 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Lars Ingebrigtsen Cc: 55778@debbugs.gnu.org, dick.r.chiang@gmail.com, monnier@iro.umontreal.ca Received: via spool by 55778-submit@debbugs.gnu.org id=B55778.165460150229992 (code B ref 55778); Tue, 07 Jun 2022 11:32:02 +0000 Received: (at 55778) by debbugs.gnu.org; 7 Jun 2022 11:31:42 +0000 Received: from localhost ([127.0.0.1]:38699 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nyXQz-0007nP-P4 for submit@debbugs.gnu.org; Tue, 07 Jun 2022 07:31:42 -0400 Received: from eggs.gnu.org ([209.51.188.92]:52382) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nyXQv-0007g8-8l for 55778@debbugs.gnu.org; Tue, 07 Jun 2022 07:31:41 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:60362) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nyXQp-00059t-9F; Tue, 07 Jun 2022 07:31:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=w4/fL4VZ1qsqlFd0y/13g9HI1d2ZOZ5Y/VhBIdUFI9M=; b=bot8Ix5ESw0S /hwjP1h60Hf80FWL/aSC6maCMhZ+tv6vPU0SFwdOfh/p74UcYcFskSiaTU6qp0rqfFykO+pdftwiU 3+lw51rxysf0X08RlzOR0Ar4wh5DnlS6RY97uDV0IukjWVYGN92akmpMjJpz7ELOxLujPJuWAn1L6 syE4AmfsRzdrlm4cu2wGI500Tld9Zthnemsdl+5Q9EfDyrVD2inYE/iwQa8FBmmJbzhhnlaogTH+e cgHD62P/S1LhvLZo7IODwf+Uth6EfSBaB+75pBgswXOtsQU43OiiH/8zpd1QNXcDAEcZ7/CeNj5Rl 8hW8Qey++d/DLKG8URN/jQ==; Received: from [87.69.77.57] (port=1354 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nyXQm-0005OD-Nv; Tue, 07 Jun 2022 07:31:29 -0400 Date: Tue, 07 Jun 2022 14:31:20 +0300 Message-Id: <83mteo7lrr.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87zgioomys.fsf@gnus.org> (message from Lars Ingebrigtsen on Tue, 07 Jun 2022 11:13:31 +0200) References: <87k09yw9ao.fsf@dick> <874k12auir.fsf@gnus.org> <87r14343vz.fsf@gnus.org> <83ee039prg.fsf@gnu.org> <87ee03439b.fsf@gnus.org> <83bkv79ox1.fsf@gnu.org> <87zgiqx9kx.fsf@gnus.org> <83bkv67y62.fsf@gnu.org> <87zgioomys.fsf@gnus.org> X-Spam-Score: -2.3 (--) 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: -3.3 (---) > From: Lars Ingebrigtsen > Cc: dick.r.chiang@gmail.com, 55778@debbugs.gnu.org, monnier@iro.umontreal.ca > Date: Tue, 07 Jun 2022 11:13:31 +0200 > > Eli Zaretskii writes: > > > Maybe I'm missing something, but isn't ff-other-file-alist equivalent > > to your find-sibling-rules? > > No? "Alist of extensions to find given the current file's extension." > `find-sibling-rules' isn't about extensions. It isn't? Then why did you show these examples: > So I've now added a new command `find-sibling-file' to Emacs 29. This > setting does what the latter: > > (setq find-sibling-rules > '(("\\(/usr/share/emacs.*/\\(lisp/.*.el\\).gz\\)" > "/home/larsi/src/emacs/trunk/\\2\\'"))) > > Something like this does the Emacs development sibling dance: > > (setq find-sibling-rules > '(("src/emacs/trunk/[^/]+/\\(.*\\)\\'" "src/emacs/emacs-28/.*/\\1\\'") > ("emacs/trunk/\\(.*\\)\\.\\(c\\|el\\)\\'" > "emacs/trunk/test/\\1-tests.el\\'"))) > > And this is foo.c -> foo.h: > > (setq find-sibling-rules > '(("\\([^/]+\\)\\.c\\'" "\\1.h"))) AFAIU, almost all of them are about extensions. find-file.el separates the directory search from the file-name search, while you keep them together, but the approaches are equivalent, and each one has its advantages. Anyway, I'm not saying that find-file.el can support everything you wanted to support OOTB. But it can support most of it, and it can be extended to support the rest. So it sounds strange to me to come up with an entirely new feature, implemented from scratch and with an incompatible API, when these two have such a significant functionality overlap. From unknown Sat Sep 13 05:10:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55778: 29.0.50; [PATCH] M-. into a .gz; we've all been there. Resent-From: Lars Ingebrigtsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 08 Jun 2022 11:41:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55778 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: 55778@debbugs.gnu.org, dick.r.chiang@gmail.com, monnier@iro.umontreal.ca Received: via spool by 55778-submit@debbugs.gnu.org id=B55778.165468841510984 (code B ref 55778); Wed, 08 Jun 2022 11:41:01 +0000 Received: (at 55778) by debbugs.gnu.org; 8 Jun 2022 11:40:15 +0000 Received: from localhost ([127.0.0.1]:42613 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nyu2o-0002r6-Vs for submit@debbugs.gnu.org; Wed, 08 Jun 2022 07:40:15 -0400 Received: from quimby.gnus.org ([95.216.78.240]:36218) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nyu2l-0002qi-H4 for 55778@debbugs.gnu.org; Wed, 08 Jun 2022 07:40:14 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: 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=uCYQuWhYJqzQmyzR9PpNQNEJIpe19Z6/6Z/CZOfGB04=; b=UNHEO7LPynCc2fHcOjqknI+WHh ElBhGUWoaoNnbD+vRK1nKHl4mJxm7q8YT+Q9hc/5XgKPY2yU+AvGY/AWGgpDQ7HtnRH7FLB0PBdbw E2cAYaZZNQey3b9Z6Nyku1SbJsuP/c9t9uIp29ff3k/bTFn0bM3942VLa7J2s5zlZvqQ=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nyu2a-0005es-Q6; Wed, 08 Jun 2022 13:40:03 +0200 From: Lars Ingebrigtsen References: <87k09yw9ao.fsf@dick> <874k12auir.fsf@gnus.org> <87r14343vz.fsf@gnus.org> <83ee039prg.fsf@gnu.org> <87ee03439b.fsf@gnus.org> <83bkv79ox1.fsf@gnu.org> <87zgiqx9kx.fsf@gnus.org> <83bkv67y62.fsf@gnu.org> <87zgioomys.fsf@gnus.org> <83mteo7lrr.fsf@gnu.org> Date: Wed, 08 Jun 2022 13:39:59 +0200 In-Reply-To: <83mteo7lrr.fsf@gnu.org> (Eli Zaretskii's message of "Tue, 07 Jun 2022 14:31:20 +0300") Message-ID: <87tu8vbcz4.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain 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: Eli Zaretskii writes: >> No? "Alist of extensions to find given the current file's extension." >> `find-sibling-rules' isn't about extensions. > > It isn't? Then why did you show these examples: > >> So I've now added a ne [...] 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: -2.3 (--) 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: -3.3 (---) Eli Zaretskii writes: >> No? "Alist of extensions to find given the current file's extension." >> `find-sibling-rules' isn't about extensions. > > It isn't? Then why did you show these examples: > >> So I've now added a new command `find-sibling-file' to Emacs 29. This >> setting does what the latter: >> >> (setq find-sibling-rules >> '(("\\(/usr/share/emacs.*/\\(lisp/.*.el\\).gz\\)" >> "/home/larsi/src/emacs/trunk/\\2\\'"))) That's not about extensions, but finding a related file in a different directory. > Anyway, I'm not saying that find-file.el can support everything you > wanted to support OOTB. But it can support most of it, and it can be > extended to support the rest. So it sounds strange to me to come up > with an entirely new feature, implemented from scratch and with an > incompatible API, when these two have such a significant functionality > overlap. I understand your point, but I don't feel there's much to be gained trying to merge these two things that have somewhat different use cases. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From unknown Sat Sep 13 05:10:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55778: 29.0.50; [PATCH] M-. into a .gz; we've all been there. Resent-From: Lars Ingebrigtsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 14 Jun 2022 12:43:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55778 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: dick.r.chiang@gmail.com Cc: 55778@debbugs.gnu.org Received: via spool by 55778-submit@debbugs.gnu.org id=B55778.165521057712857 (code B ref 55778); Tue, 14 Jun 2022 12:43:02 +0000 Received: (at 55778) by debbugs.gnu.org; 14 Jun 2022 12:42:57 +0000 Received: from localhost ([127.0.0.1]:33404 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1o15sn-0003LI-0c for submit@debbugs.gnu.org; Tue, 14 Jun 2022 08:42:57 -0400 Received: from quimby.gnus.org ([95.216.78.240]:49312) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1o15sl-0003L5-Gw for 55778@debbugs.gnu.org; Tue, 14 Jun 2022 08:42:55 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: 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=79ZgFS/fJJSPzEEeuqpzdzUwDkRxuAZOHH3T0YqUkTM=; b=eR+ZdS+CL3nVOjoK2QOE4rvmU6 Yt0w+aQtkjVHbGpXybgHV2tfqWyE6aIG+1+BqdiSEPqIZdCE8rBUSHgDiUet4y2/+MJuIo4hObPAs Rqbottyx8rLlXF//i2NWVdKVqFvI/DjxH47QdzeSKQiHwQLYYkUKMtSq7WsAKK8yfM0A=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o15sd-0006XB-0Z; Tue, 14 Jun 2022 14:42:49 +0200 From: Lars Ingebrigtsen References: <87k09yw9ao.fsf@dick> X-Now-Playing: Coil's _Heartworms_: "Red Skeletons 2" Date: Tue, 14 Jun 2022 14:42:44 +0200 In-Reply-To: <87k09yw9ao.fsf@dick> (dick r. chiang's message of "Fri, 03 Jun 2022 02:27:59 -0400") Message-ID: <87k09jmn5n.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain 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: Anyway, there was some discussion about whether to fold find-sibling-file into ff-find-file and friends (I still don't think that's a good idea), but in any case, I think this functionality is more ge [...] 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: -2.3 (--) 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: -3.3 (---) Anyway, there was some discussion about whether to fold find-sibling-file into ff-find-file and friends (I still don't think that's a good idea), but in any case, I think this functionality is more generally useful than the proposed changes here (even if it requires an optional step to get from .gz to .el), so I'm closing this bug report. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Tue Jun 14 08:43:02 2022 Received: (at control) by debbugs.gnu.org; 14 Jun 2022 12:43:02 +0000 Received: from localhost ([127.0.0.1]:33408 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1o15ss-0003Lo-7I for submit@debbugs.gnu.org; Tue, 14 Jun 2022 08:43:02 -0400 Received: from quimby.gnus.org ([95.216.78.240]:49326) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1o15sq-0003LB-Jh for control@debbugs.gnu.org; Tue, 14 Jun 2022 08:43:00 -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=hJVrN1rptgPPe3TM3vZGQ/r57ZS5xofgVHhqnx+0W5I=; b=hwDTve9nhwXqmaPHElBNyrpB3p C/IvMnbXpOEACqF/1fXsMP0cH5wCdP20eJT9zy41mp0mNN7Hg7ZR5mMFYIFP3Br5Ypac7dKq0ad0i Sw/CbwKqQxIJYHeYmbV2ktQdsuUiKqZHw/XaV1ebsJXLRrBGUYby8DQ9CbdLwvm/EQW4=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o15si-0006XM-RP for control@debbugs.gnu.org; Tue, 14 Jun 2022 14:42:54 +0200 Date: Tue, 14 Jun 2022 14:42:51 +0200 Message-Id: <87ilp3mn5g.fsf@gnus.org> To: control@debbugs.gnu.org From: Lars Ingebrigtsen Subject: control message for bug #55778 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: close 55778 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: -2.3 (--) 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: -3.3 (---) close 55778 quit