* Re: Etags completion problem for local tags table [not found] <mailman.7663.1203474863.18990.bug-gnu-emacs@gnu.org> @ 2008-04-04 0:55 ` Stefan Monnier 2008-04-24 19:03 ` Radey Shouman ` (3 subsequent siblings) 4 siblings, 0 replies; 10+ messages in thread From: Stefan Monnier @ 2008-04-04 0:55 UTC (permalink / raw) To: Radey Shouman; +Cc: gnu-emacs-bug > In (at least) emacs 22.1, completing reads for find-tag and list-tags > will use the global tags table list even if a local tags file has > been specified using a prefix argument for visit-tags-table. > To reproduce, visit two files, in the first buffer visit a tags file > globally, in the second a different tags file locally. From the > second buffer, try M.[TAB] . The tag list displayed will correspond > to the first, globally visited, tags file. > A patch that works for me is appended. Thank you, it should be fixed on the trunk now, Stefan ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Etags completion problem for local tags table [not found] <mailman.7663.1203474863.18990.bug-gnu-emacs@gnu.org> 2008-04-04 0:55 ` Etags completion problem for local tags table Stefan Monnier @ 2008-04-24 19:03 ` Radey Shouman [not found] ` <mailman.10789.1209074215.18990.bug-gnu-emacs@gnu.org> ` (2 subsequent siblings) 4 siblings, 0 replies; 10+ messages in thread From: Radey Shouman @ 2008-04-24 19:03 UTC (permalink / raw) To: gnu-emacs-bug Radey Shouman <shouman@comcast.net> writes: > In (at least) emacs 22.1, completing reads for find-tag and list-tags > will use the global tags table list even if a local tags file has > been specified using a prefix argument for visit-tags-table. > > To reproduce, visit two files, in the first buffer visit a tags file > globally, in the second a different tags file locally. From the > second buffer, try M.[TAB] . The tag list displayed will correspond > to the first, globally visited, tags file. The patch presented earlier had problems - the root issue is that variables tags-file-name and tags-table-list are used for returning information from functions which may change the current buffer. One manifestation of the problem can be seen by setting a local tags file using C-uM-x visit-tags-table twice in the same buffer. The second attempt will fail to set a local tags table, but will set the global tags table. This patch also modifies visit-tags-table so that it will remove a local tags table if present in the buffer in which it is called to set a global tags table. This is arguably not a bug fix, but seems much less suprising than the current behavior. *** etags.el.dist 2007-01-21 03:20:46.000000000 -0500 --- etags.el 2008-04-24 09:57:37.660821100 -0400 *************** *** 257,262 **** --- 257,264 ---- "Function to do the work of `tags-included-tables' (which see).") (defvar verify-tags-table-function nil "Function to return t iff current buffer contains valid tags file.") + (defvar etags-calling-buffer nil + "Buffer from which a completing read was made, so we can determine the appropriate tags file to visit.") \f ;; Initialize the tags table in the current buffer. ;; Returns non-nil iff it is a valid tags table. On *************** *** 305,323 **** ;; Calling visit-tags-table-buffer with tags-file-name set to FILE will ;; initialize a buffer for FILE and set tags-file-name to the ;; fully-expanded name. ! (let ((tags-file-name file)) (save-excursion (or (visit-tags-table-buffer file) (signal 'file-error (list "Visiting tags table" "file does not exist" ! file))) ! ;; Set FILE to the expanded name. ! (setq file tags-file-name))) (if local ;; Set the local value of tags-file-name. (set (make-local-variable 'tags-file-name) file) ;; Set the global value of tags-file-name. ! (setq-default tags-file-name file))) (defun tags-table-check-computed-list () "Compute `tags-table-computed-list' from `tags-table-list' if necessary." --- 307,335 ---- ;; Calling visit-tags-table-buffer with tags-file-name set to FILE will ;; initialize a buffer for FILE and set tags-file-name to the ;; fully-expanded name. ! (let (table-list) ! (let ((tags-file-name file) ! (tags-table-list tags-table-list)) (save-excursion (or (visit-tags-table-buffer file) (signal 'file-error (list "Visiting tags table" "file does not exist" ! file)))) ! ;; Set FILE to the expanded name. Note that we have to do this from the original ! ;; buffer, in case tags-file-name or tags-table-list are buffer-local. ! (setq file tags-file-name ! table-list tags-table-list)) ! (if local ;; Set the local value of tags-file-name. + (progn (set (make-local-variable 'tags-file-name) file) + (set (make-local-variable 'tags-table-list) table-list)) ;; Set the global value of tags-file-name. ! (kill-local-variable 'tags-file-name) ! (kill-local-variable 'tags-table-list) ! (setq tags-file-name file ! tags-table-list table-list)))) (defun tags-table-check-computed-list () "Compute `tags-table-computed-list' from `tags-table-list' if necessary." *************** *** 444,459 **** (revert-buffer t t) (tags-table-mode))) (and (file-exists-p file) ! (progn (set-buffer (find-file-noselect file)) (or (string= file buffer-file-name) ;; find-file-noselect has changed the file name. ;; Propagate the change to tags-file-name and tags-table-list. (let ((tail (member file tags-table-list))) (if tail (setcar tail buffer-file-name)) (if (eq file tags-file-name) ! (setq tags-file-name buffer-file-name)))) (tags-table-mode))))) ;; Subroutine of visit-tags-table-buffer. Search the current tags tables --- 456,475 ---- (revert-buffer t t) (tags-table-mode))) (and (file-exists-p file) ! (let ((obuf (current-buffer))) (set-buffer (find-file-noselect file)) (or (string= file buffer-file-name) ;; find-file-noselect has changed the file name. ;; Propagate the change to tags-file-name and tags-table-list. + ;; We have to do this in the buffer current when we were called + ;; because tags-table-list and tags-file-name may be buffer local. + (save-excursion + (set-buffer obuf) (let ((tail (member file tags-table-list))) (if tail (setcar tail buffer-file-name)) (if (eq file tags-file-name) ! (setq tags-file-name buffer-file-name))))) (tags-table-mode))))) ;; Subroutine of visit-tags-table-buffer. Search the current tags tables *************** *** 538,543 **** --- 554,564 ---- `tags-file-name', `tags-table-list', `tags-table-list-pointer'. Returns t if it visits a tags table, or nil if there are no more in the list." + ;; We may be called from a minibuffer if invoked during completion. + ;; this can be a problem when the tags tables are buffer-local. + (if etags-calling-buffer + (set-buffer etags-calling-buffer)) + ;; Set tags-file-name to the tags table file we want to visit. (cond ((eq cont 'same) ;; Use the ambient value of tags-file-name. *************** *** 781,787 **** \f ;; Read a tag name from the minibuffer with defaulting and completion. (defun find-tag-tag (string) ! (let* ((completion-ignore-case (if (memq tags-case-fold-search '(t nil)) tags-case-fold-search case-fold-search)) (default (funcall (or find-tag-default-function --- 802,809 ---- \f ;; Read a tag name from the minibuffer with defaulting and completion. (defun find-tag-tag (string) ! (let* ((etags-calling-buffer (current-buffer)) ! (completion-ignore-case (if (memq tags-case-fold-search '(t nil)) tags-case-fold-search case-fold-search)) (default (funcall (or find-tag-default-function ^ permalink raw reply [flat|nested] 10+ messages in thread
[parent not found: <mailman.10789.1209074215.18990.bug-gnu-emacs@gnu.org>]
* Re: Etags completion problem for local tags table [not found] ` <mailman.10789.1209074215.18990.bug-gnu-emacs@gnu.org> @ 2008-04-29 20:08 ` Radey Shouman 0 siblings, 0 replies; 10+ messages in thread From: Radey Shouman @ 2008-04-29 20:08 UTC (permalink / raw) To: gnu-emacs-bug Radey Shouman <shouman@comcast.net> writes: > Radey Shouman <shouman@comcast.net> writes: > > > In (at least) emacs 22.1, completing reads for find-tag and list-tags > > will use the global tags table list even if a local tags file has > > been specified using a prefix argument for visit-tags-table. > > > > To reproduce, visit two files, in the first buffer visit a tags file > > globally, in the second a different tags file locally. From the > > second buffer, try M.[TAB] . The tag list displayed will correspond > > to the first, globally visited, tags file. > > The patch presented earlier had problems - the root issue is that > variables tags-file-name and tags-table-list are used for returning > information from functions which may change the current buffer. > > One manifestation of the problem can be seen by setting a local tags > file using C-uM-x visit-tags-table twice in the same buffer. The > second attempt will fail to set a local tags table, but will set the > global tags table. > > This patch also modifies visit-tags-table so that it will remove a > local tags table if present in the buffer in which it is called to set > a global tags table. This is arguably not a bug fix, but seems much > less suprising than the current behavior. Yet another patch, this one additionally fixes tags-query-replace and other users of next-file. The current etags.el fails when using tags-query-replace with buffer-local tags tables (expand-file is called with an argument of nil). *** /local/emacs/emacs-22.1/lisp/progmodes/etags.el.dist 2007-01-21 03:20:46.000000000 -0500 --- etags.el 2008-04-28 15:05:35.044759300 -0400 *************** *** 257,262 **** --- 257,264 ---- "Function to do the work of `tags-included-tables' (which see).") (defvar verify-tags-table-function nil "Function to return t iff current buffer contains valid tags file.") + (defvar etags-calling-buffer nil + "Buffer from which a completing read was made, so we can determine the appropriate tags file to visit.") \f ;; Initialize the tags table in the current buffer. ;; Returns non-nil iff it is a valid tags table. On *************** *** 305,323 **** ;; Calling visit-tags-table-buffer with tags-file-name set to FILE will ;; initialize a buffer for FILE and set tags-file-name to the ;; fully-expanded name. ! (let ((tags-file-name file)) ! (save-excursion ! (or (visit-tags-table-buffer file) ! (signal 'file-error (list "Visiting tags table" ! "file does not exist" ! file))) ! ;; Set FILE to the expanded name. ! (setq file tags-file-name))) ! (if local ! ;; Set the local value of tags-file-name. ! (set (make-local-variable 'tags-file-name) file) ! ;; Set the global value of tags-file-name. ! (setq-default tags-file-name file))) (defun tags-table-check-computed-list () "Compute `tags-table-computed-list' from `tags-table-list' if necessary." --- 307,335 ---- ;; Calling visit-tags-table-buffer with tags-file-name set to FILE will ;; initialize a buffer for FILE and set tags-file-name to the ;; fully-expanded name. ! (let (table-list) ! (let ((tags-file-name file) ! (tags-table-list tags-table-list)) ! (save-excursion ! (or (visit-tags-table-buffer file) ! (signal 'file-error (list "Visiting tags table" ! "file does not exist" ! file)))) ! ;; Set FILE to the expanded name. Note that we have to do this from the original ! ;; buffer, in case tags-file-name or tags-table-list are buffer-local. ! (setq file tags-file-name ! table-list tags-table-list)) ! ! (if local ! ;; Set the local value of tags-file-name. ! (progn ! (set (make-local-variable 'tags-file-name) file) ! (set (make-local-variable 'tags-table-list) table-list)) ! ;; Set the global value of tags-file-name. ! (kill-local-variable 'tags-file-name) ! (kill-local-variable 'tags-table-list) ! (setq tags-file-name file ! tags-table-list table-list)))) (defun tags-table-check-computed-list () "Compute `tags-table-computed-list' from `tags-table-list' if necessary." *************** *** 444,459 **** (revert-buffer t t) (tags-table-mode))) (and (file-exists-p file) ! (progn (set-buffer (find-file-noselect file)) (or (string= file buffer-file-name) ;; find-file-noselect has changed the file name. ;; Propagate the change to tags-file-name and tags-table-list. ! (let ((tail (member file tags-table-list))) ! (if tail ! (setcar tail buffer-file-name)) ! (if (eq file tags-file-name) ! (setq tags-file-name buffer-file-name)))) (tags-table-mode))))) ;; Subroutine of visit-tags-table-buffer. Search the current tags tables --- 456,475 ---- (revert-buffer t t) (tags-table-mode))) (and (file-exists-p file) ! (let ((obuf (current-buffer))) (set-buffer (find-file-noselect file)) (or (string= file buffer-file-name) ;; find-file-noselect has changed the file name. ;; Propagate the change to tags-file-name and tags-table-list. ! ;; We have to do this in the buffer current when we were called ! ;; because tags-table-list and tags-file-name may be buffer local. ! (save-excursion ! (set-buffer obuf) ! (let ((tail (member file tags-table-list))) ! (if tail ! (setcar tail buffer-file-name)) ! (if (eq file tags-file-name) ! (setq tags-file-name buffer-file-name))))) (tags-table-mode))))) ;; Subroutine of visit-tags-table-buffer. Search the current tags tables *************** *** 538,543 **** --- 554,564 ---- `tags-file-name', `tags-table-list', `tags-table-list-pointer'. Returns t if it visits a tags table, or nil if there are no more in the list." + ;; We may be called from a minibuffer if invoked during completion. + ;; this can be a problem when the tags tables are buffer-local. + (if etags-calling-buffer + (set-buffer etags-calling-buffer)) + ;; Set tags-file-name to the tags table file we want to visit. (cond ((eq cont 'same) ;; Use the ambient value of tags-file-name. *************** *** 781,787 **** \f ;; Read a tag name from the minibuffer with defaulting and completion. (defun find-tag-tag (string) ! (let* ((completion-ignore-case (if (memq tags-case-fold-search '(t nil)) tags-case-fold-search case-fold-search)) (default (funcall (or find-tag-default-function --- 802,809 ---- \f ;; Read a tag name from the minibuffer with defaulting and completion. (defun find-tag-tag (string) ! (let* ((etags-calling-buffer (current-buffer)) ! (completion-ignore-case (if (memq tags-case-fold-search '(t nil)) tags-case-fold-search case-fold-search)) (default (funcall (or find-tag-default-function *************** *** 1658,1682 **** ((eq initialize t) ;; Initialize the list from the tags table. (save-excursion ! ;; Visit the tags table buffer to get its list of files. ! (visit-tags-table-buffer) ! ;; Copy the list so we can setcdr below, and expand the file ! ;; names while we are at it, in this buffer's default directory. ! (setq next-file-list (mapcar 'expand-file-name (tags-table-files))) ! ;; Iterate over all the tags table files, collecting ! ;; a complete list of referenced file names. ! (while (visit-tags-table-buffer t) ! ;; Find the tail of the working list and chain on the new ! ;; sublist for this tags table. ! (let ((tail next-file-list)) ! (while (cdr tail) ! (setq tail (cdr tail))) ! ;; Use a copy so the next loop iteration will not modify the ! ;; list later returned by (tags-table-files). ! (if tail ! (setcdr tail (mapcar 'expand-file-name (tags-table-files))) ! (setq next-file-list (mapcar 'expand-file-name ! (tags-table-files)))))))) (t ;; Initialize the list by evalling the argument. (setq next-file-list (eval initialize)))) --- 1680,1705 ---- ((eq initialize t) ;; Initialize the list from the tags table. (save-excursion ! (let ((etags-calling-buffer (current-buffer))) ! ;; Visit the tags table buffer to get its list of files. ! (visit-tags-table-buffer) ! ;; Copy the list so we can setcdr below, and expand the file ! ;; names while we are at it, in this buffer's default directory. ! (setq next-file-list (mapcar 'expand-file-name (tags-table-files))) ! ;; Iterate over all the tags table files, collecting ! ;; a complete list of referenced file names. ! (while (visit-tags-table-buffer t) ! ;; Find the tail of the working list and chain on the new ! ;; sublist for this tags table. ! (let ((tail next-file-list)) ! (while (cdr tail) ! (setq tail (cdr tail))) ! ;; Use a copy so the next loop iteration will not modify the ! ;; list later returned by (tags-table-files). ! (if tail ! (setcdr tail (mapcar 'expand-file-name (tags-table-files))) ! (setq next-file-list (mapcar 'expand-file-name ! (tags-table-files))))))))) (t ;; Initialize the list by evalling the argument. (setq next-file-list (eval initialize)))) ^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#158: Etags completion problem for local tags table [not found] <mailman.7663.1203474863.18990.bug-gnu-emacs@gnu.org> ` (2 preceding siblings ...) [not found] ` <mailman.10789.1209074215.18990.bug-gnu-emacs@gnu.org> @ 2016-02-29 5:00 ` Lars Ingebrigtsen 2016-02-29 14:58 ` Radey Shouman 2016-11-22 18:23 ` Josiah Schwab 4 siblings, 1 reply; 10+ messages in thread From: Lars Ingebrigtsen @ 2016-02-29 5:00 UTC (permalink / raw) To: Radey Shouman; +Cc: gnu-emacs-bug, 158 Radey Shouman <shouman@comcast.net> writes: > In (at least) emacs 22.1, completing reads for find-tag and list-tags > will use the global tags table list even if a local tags file has > been specified using a prefix argument for visit-tags-table. > > To reproduce, visit two files, in the first buffer visit a tags file > globally, in the second a different tags file locally. From the > second buffer, try M.[TAB] . The tag list displayed will correspond > to the first, globally visited, tags file. > > A patch that works for me is appended. This area of Emacs has changed quite a bit, especially in recent years. Is this still an issue in Emacs 25? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#158: Etags completion problem for local tags table 2016-02-29 5:00 ` bug#158: " Lars Ingebrigtsen @ 2016-02-29 14:58 ` Radey Shouman 0 siblings, 0 replies; 10+ messages in thread From: Radey Shouman @ 2016-02-29 14:58 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: gnu-emacs-bug, 158, Radey Shouman Lars Ingebrigtsen writes: > Radey Shouman <shouman@comcast.net> writes: > > > In (at least) emacs 22.1, completing reads for find-tag and list-tags > > will use the global tags table list even if a local tags file has > > been specified using a prefix argument for visit-tags-table. > > > > To reproduce, visit two files, in the first buffer visit a tags file > > globally, in the second a different tags file locally. From the > > second buffer, try M.[TAB] . The tag list displayed will correspond > > to the first, globally visited, tags file. > > > > A patch that works for me is appended. > > This area of Emacs has changed quite a bit, especially in recent years. > Is this still an issue in Emacs 25? I don't know. I am not an emacs developer and haven't used a pre-release emacs recently. Neither do I remember submitting this bug report, how old is it? It doesn't sound hard to test for someone who does have emacs 25 built. ^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#158: Etags completion problem for local tags table [not found] <mailman.7663.1203474863.18990.bug-gnu-emacs@gnu.org> ` (3 preceding siblings ...) 2016-02-29 5:00 ` bug#158: " Lars Ingebrigtsen @ 2016-11-22 18:23 ` Josiah Schwab 4 siblings, 0 replies; 10+ messages in thread From: Josiah Schwab @ 2016-11-22 18:23 UTC (permalink / raw) To: 158; +Cc: Radey Shouman Hello, > It doesn't sound hard to test for someone who does have emacs 25 > built. I have been able to reproduce this bug under emacs 25.1 and git master (at c542fab). Here are the steps to reproduce. For simplicity, I am using two very minimal tags files (fruits/TAGS and vegetables/TAGS) available from https://github.com/jschwab/emacs-tags-issues but any tags files ought to do. Open emacs with emacs -Q Do ,---- | C-x C-f file1 | M-: (visit-tags-table "fruits/TAGS") | M-. [TAB] `---- The possible completions offered will be fruits, as expected. Continue by doing ,---- | C-x C-f file2 | M-: (visit-tags-table "vegetables/TAGS" t) `---- The user is prompted, "Keep current list of tags tables also? (y or n)". Reply n. Now do ,---- | M-. [TAB] `---- The possible completions offered will be fruits and not vegetables as expected. After this, the *Messages* buffer looks like ,---- | (New file) | Starting a new list of tags tables | "/home/jschwab/Software/emacs-tags-issues/fruits/TAGS" | Making tags completion table for /home/jschwab/Software/emacs-tags-issues/fruits/TAGS...done | Making completion list... | Quit | (New file) | Keep current list of tags tables also? (y or n) n | Starting a new list of tags tables | "/home/jschwab/Software/emacs-tags-issues/vegetables/TAGS" | Making tags completion table for /home/jschwab/Software/emacs-tags-issues/vegetables/TAGS... | Making tags completion table for /home/jschwab/Software/emacs-tags-issues/fruits/TAGS... | Making tags completion table for /home/jschwab/Software/emacs-tags-issues/vegetables/TAGS...done | Making completion list... | Quit `---- It seems like this issue could be related to https://debbugs.gnu.org/cgi/bugreport.cgi?bug=19741 Josiah ^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#158: Etags completion problem for local tags table
@ 2008-05-29 21:36 Stefan Monnier
2008-05-30 7:34 ` Francesco Potorti`
0 siblings, 1 reply; 10+ messages in thread
From: Stefan Monnier @ 2008-05-29 21:36 UTC (permalink / raw)
To: 158
> In (at least) emacs 22.1, completing reads for find-tag and list-tags
> will use the global tags table list even if a local tags file has
> been specified using a prefix argument for visit-tags-table.
I believe this has already been fixed in the Emacs-23 CVS repository.
Could you check it?
About the other problems you mentioned, I don't understand enough of
etags.el's handling of tags-table-list to know what is done on purpose,
what is a limitation, and what is a bug. Francesco?
Stefan
^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#158: Etags completion problem for local tags table 2008-05-29 21:36 Stefan Monnier @ 2008-05-30 7:34 ` Francesco Potorti` 2008-05-30 13:39 ` Stefan Monnier 2008-05-30 13:42 ` Stefan Monnier 0 siblings, 2 replies; 10+ messages in thread From: Francesco Potorti` @ 2008-05-30 7:34 UTC (permalink / raw) To: Stefan Monnier, 158; +Cc: Emacs Bugs >> In (at least) emacs 22.1, completing reads for find-tag and list-tags >> will use the global tags table list even if a local tags file has >> been specified using a prefix argument for visit-tags-table. > >I believe this has already been fixed in the Emacs-23 CVS repository. >Could you check it? > >About the other problems you mentioned, I don't understand enough of >etags.el's handling of tags-table-list to know what is done on purpose, >what is a limitation, and what is a bug. Francesco? I am not sure what are "the other problems ... mentioned". Anyway, regarding the relationship between tags-file-name and tags-table-list, I always found it confusing. I see three documentation problems: First, the help for both variables says that if you set one, you should not set the other, which is not clear: should one set one or the other? Second, neither help mentions the visit-tags-table function, which I think should be the only way to set those variables interactively. Third, there is no single place where the relationships between the two variables are described. ^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#158: Etags completion problem for local tags table 2008-05-30 7:34 ` Francesco Potorti` @ 2008-05-30 13:39 ` Stefan Monnier 2008-05-30 13:42 ` Stefan Monnier 1 sibling, 0 replies; 10+ messages in thread From: Stefan Monnier @ 2008-05-30 13:39 UTC (permalink / raw) To: Francesco Potorti`; +Cc: Emacs Bugs, 158 > I am not sure what are "the other problems ... mentioned". Anyway, http://emacsbugs.donarmstrong.com/cgi-bin/bugreport.cgi?bug=158 Stefan ^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#158: Etags completion problem for local tags table 2008-05-30 7:34 ` Francesco Potorti` 2008-05-30 13:39 ` Stefan Monnier @ 2008-05-30 13:42 ` Stefan Monnier 1 sibling, 0 replies; 10+ messages in thread From: Stefan Monnier @ 2008-05-30 13:42 UTC (permalink / raw) To: Francesco Potorti`; +Cc: Emacs Bugs, 158 owner 158 thanks Sorry, I thought you were the maintainer of etags.el. Stefan ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2016-11-22 18:23 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <mailman.7663.1203474863.18990.bug-gnu-emacs@gnu.org> 2008-04-04 0:55 ` Etags completion problem for local tags table Stefan Monnier 2008-04-24 19:03 ` Radey Shouman [not found] ` <mailman.10789.1209074215.18990.bug-gnu-emacs@gnu.org> 2008-04-29 20:08 ` Radey Shouman 2016-02-29 5:00 ` bug#158: " Lars Ingebrigtsen 2016-02-29 14:58 ` Radey Shouman 2016-11-22 18:23 ` Josiah Schwab 2008-05-29 21:36 Stefan Monnier 2008-05-30 7:34 ` Francesco Potorti` 2008-05-30 13:39 ` Stefan Monnier 2008-05-30 13:42 ` Stefan Monnier
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.