unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#11679: 24.1.50; gud/pdb3 hangs in lines with list comprehension
@ 2012-06-12  7:22 Andreas Politz
       [not found] ` <handler.11679.B.133948593625855.ack@debbugs.gnu.org>
  2019-09-09  2:38 ` bug#11679: 24.1.50; gud/pdb3 hangs in lines with list comprehension Stefan Kangas
  0 siblings, 2 replies; 3+ messages in thread
From: Andreas Politz @ 2012-06-12  7:22 UTC (permalink / raw)
  To: 11679


For list comprehensions pdb3 outputs a line like this.

> FILE(LINE)<listcomp>()

But the `listcomp' token is not captured by the `gud-pdb-marker-regexp',
resulting in pdb appearing to be hanging.  (This may be python2/3
related.)

diff -c -L /usr/share/emacs/24.1.50/lisp/progmodes/gud.el.gz -L \#\<buffer\ gud.el.gz\> /tmp/jka-com19603ZkZ /tmp/buffer-content-19603z4l
*** /usr/share/emacs/24.1.50/lisp/progmodes/gud.el.gz
--- #<buffer gud.el.gz>
***************
*** 1567,1573 ****
  ;; Last group is for return value, e.g. "> test.py(2)foo()->None"
  ;; Either file or function name may be omitted: "> <string>(0)?()"
  (defvar gud-pdb-marker-regexp
!   "^> \\([-a-zA-Z0-9_/.:\\]*\\|<string>\\)(\\([0-9]+\\))\\([a-zA-Z0-9_]*\\|\\?\\|<module>\\)()\\(->[^\n\r]*\\)?[\n\r]")
  
  (defvar gud-pdb-marker-regexp-file-group 1)
  (defvar gud-pdb-marker-regexp-line-group 2)
--- 1567,1573 ----
  ;; Last group is for return value, e.g. "> test.py(2)foo()->None"
  ;; Either file or function name may be omitted: "> <string>(0)?()"
  (defvar gud-pdb-marker-regexp
!   "^> \\([-a-zA-Z0-9_/.:\\]*\\|<string>\\)(\\([0-9]+\\))\\([a-zA-Z0-9_]*\\|\\?\\|<\\(?:module\\|listcomp\\)>\\)()\\(->[^\n\r]*\\)?[\n\r]")
  
  (defvar gud-pdb-marker-regexp-file-group 1)
  (defvar gud-pdb-marker-regexp-line-group 2)

Diff finished.  Tue Jun 12 09:19:31 2012



In GNU Emacs 24.1.50.1 (x86_64-pc-linux-gnu, GTK+ Version 2.20.1)
 of 2012-06-05 on cw-bkp0, modified by Debian
 (emacs-snapshot package, version 2:20120524-1+squeeze)
Windowing system distributor `The X.Org Foundation', version 11.0.10707000
Configured using:
 `configure '--build' 'x86_64-linux-gnu' '--host' 'x86_64-linux-gnu'
 '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib'
 '--localstatedir=/var' '--infodir=/usr/share/info'
 '--mandir=/usr/share/man' '--with-pop=yes'
 '--enable-locallisppath=/etc/emacs-snapshot:/etc/emacs:/usr/local/share/emacs/24.1.50/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.1.50/site-lisp:/usr/share/emacs/site-lisp'
 '--without-compress-info' '--with-crt-dir=/usr/lib//' '--with-x=yes'
 '--with-x-toolkit=gtk' '--with-imagemagick=yes'
 'build_alias=x86_64-linux-gnu' 'host_alias=x86_64-linux-gnu'
 'CFLAGS=-DDEBIAN -DSITELOAD_PURESIZE_EXTRA=5000 -g -O2' 'LDFLAGS=-g
 -Wl,--as-needed -znocombreloc' 'CPPFLAGS=''

Important settings:
  value of $LC_ALL: C
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: de_DE.UTF-8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: Emacs-Lisp

Minor modes in effect:
  diff-auto-refine-mode: t
  cl-format-font-lock-mode: t
  iswitchb-mode: t
  ispell-track-input-method: t
  recentf-mode: t
  yas/global-mode: t
  yas/minor-mode: t
  workgroups-mode: t
  window-numbering-mode: t
  shell-dirtrack-mode: t
  TeX-PDF-mode: t
  savehist-mode: t
  ekey-mode: t
  eldoc-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
C-n C-n C-n C-x SPC C-x o c <return> s <return> <return> 
<return> C-x b s c <return> C-p C-p C-p C-p C-p C-p 
C-p C-n C-n C-n T h e s SPC DEL DEL SPC l i s t c o 
m p SPC t o k e n SPC i s SPC n o t SPC c p <backspace> 
a p t u r e d SPC b y SPC C-n C-n C-n C-M-b C-M-SPC 
M-w C-p C-p C-p M-m B u t SPC M-l C-f ` M-f ' C-e C-y 
C-M-b ` C-e ' . SPC SPC DEL DEL DEL , SPC r e s u l 
t i n g SPC i n SPC P d <backspace> <backspace> p d 
b SPC a p p e a r i n g M-q SPC t o SPC b e SPC h a 
n g i n g . M-q SPC SPC C-p C-n C-k C-n C-n C-M-b C-M-b 
M-d d e f v a r M-m C-x o C-x b g u <return> C-x b 
C-s C-s <return> C-x o C-n M-m C-M-SPC M-w C-x o C-n 
M-m C-o C-x C-q C-o C-y C-n C-b C-M-b C-M-k M-^ C-e 
M-x d i f f - b u f f <return> <return> C-x o C-x h 
M-w C-x b <return> C-p C-p C-p C-e T h i s SPC m a 
y SPC b e SPC p y t h o n 3 <C-backspace> M-/ C-g C-/ 
C-b 2 / C-e SPC r e a DEL l a t e d C-M-b C-M-b C-M-b 
C-M-b C-M-b ( C-e . ) C-j C-j C-y M-y C-p C-n C-k C-k 
C-M-k C-x h C-w M-x e m a c s - r <backspace> b u g 
<return> C-a r <return>

Recent messages:
call-interactively: Buffer is read-only: #<buffer gud.el.gz>
Mark set
Auto-saving...
Auto-saving gud.el.gz: Opening output file: permission denied, /usr/share/emacs/24.1.50/lisp/progmodes/#gud.el.gz#
uncompressing gud.el.gz...done
Mark set [2 times]
No expansion found
Quit
Undo!
Mark set [3 times]

Load-path shadows:
/home/politza/.emacs.d/plugins/predictive/pos-tip hides /home/politza/.emacs.d/plugins/pos-tip
/home/politza/.emacs.d/plugins/haskell/haskell-cabal hides /usr/share/emacs/site-lisp/haskell-mode/haskell-cabal
/home/politza/.emacs.d/plugins/haskell/haskell-doc hides /usr/share/emacs/site-lisp/haskell-mode/haskell-doc
/home/politza/.emacs.d/plugins/haskell/haskell-mode hides /usr/share/emacs/site-lisp/haskell-mode/haskell-mode
/home/politza/.emacs.d/plugins/haskell/haskell-c hides /usr/share/emacs/site-lisp/haskell-mode/haskell-c
/home/politza/.emacs.d/plugins/haskell/haskell-indentation hides /usr/share/emacs/site-lisp/haskell-mode/haskell-indentation
/home/politza/.emacs.d/plugins/haskell/haskell-site-file hides /usr/share/emacs/site-lisp/haskell-mode/haskell-site-file
/home/politza/.emacs.d/plugins/haskell/haskell-ghci hides /usr/share/emacs/site-lisp/haskell-mode/haskell-ghci
/home/politza/.emacs.d/plugins/haskell/inf-haskell hides /usr/share/emacs/site-lisp/haskell-mode/inf-haskell
/home/politza/.emacs.d/plugins/haskell/haskell-hugs hides /usr/share/emacs/site-lisp/haskell-mode/haskell-hugs
/home/politza/.emacs.d/plugins/haskell/haskell-font-lock hides /usr/share/emacs/site-lisp/haskell-mode/haskell-font-lock
/home/politza/.emacs.d/plugins/haskell/haskell-simple-indent hides /usr/share/emacs/site-lisp/haskell-mode/haskell-simple-indent
/home/politza/.emacs.d/plugins/haskell/haskell-decl-scan hides /usr/share/emacs/site-lisp/haskell-mode/haskell-decl-scan
/home/politza/.emacs.d/plugins/haskell/haskell-indent hides /usr/share/emacs/site-lisp/haskell-mode/haskell-indent
/home/politza/.emacs.d/plugins/haskell/haskell-decl-scan hides /usr/share/emacs/24.1.50/site-lisp/haskell-mode/haskell-decl-scan
/home/politza/.emacs.d/plugins/haskell/haskell-c hides /usr/share/emacs/24.1.50/site-lisp/haskell-mode/haskell-c
/home/politza/.emacs.d/plugins/haskell/haskell-ghci hides /usr/share/emacs/24.1.50/site-lisp/haskell-mode/haskell-ghci
/home/politza/.emacs.d/plugins/haskell/haskell-doc hides /usr/share/emacs/24.1.50/site-lisp/haskell-mode/haskell-doc
/home/politza/.emacs.d/plugins/haskell/haskell-indent hides /usr/share/emacs/24.1.50/site-lisp/haskell-mode/haskell-indent
/home/politza/.emacs.d/plugins/haskell/haskell-mode hides /usr/share/emacs/24.1.50/site-lisp/haskell-mode/haskell-mode
/home/politza/.emacs.d/plugins/haskell/haskell-hugs hides /usr/share/emacs/24.1.50/site-lisp/haskell-mode/haskell-hugs
/home/politza/.emacs.d/plugins/haskell/haskell-site-file hides /usr/share/emacs/24.1.50/site-lisp/haskell-mode/haskell-site-file
/home/politza/.emacs.d/plugins/haskell/haskell-cabal hides /usr/share/emacs/24.1.50/site-lisp/haskell-mode/haskell-cabal
/home/politza/.emacs.d/plugins/haskell/inf-haskell hides /usr/share/emacs/24.1.50/site-lisp/haskell-mode/inf-haskell
/home/politza/.emacs.d/plugins/haskell/haskell-font-lock hides /usr/share/emacs/24.1.50/site-lisp/haskell-mode/haskell-font-lock
/home/politza/.emacs.d/plugins/haskell/haskell-simple-indent hides /usr/share/emacs/24.1.50/site-lisp/haskell-mode/haskell-simple-indent
/home/politza/.emacs.d/plugins/haskell/haskell-indentation hides /usr/share/emacs/24.1.50/site-lisp/haskell-mode/haskell-indentation
/usr/share/emacs/24.1.50/site-lisp/cscope/xcscope hides /usr/share/emacs/site-lisp/xcscope
/usr/share/emacs/24.1.50/site-lisp/debian-startup hides /usr/share/emacs/site-lisp/debian-startup
/home/politza/.emacs.d/plugins/term hides /usr/share/emacs/24.1.50/lisp/term
/usr/share/emacs/site-lisp/remember-el/remember hides /usr/share/emacs/24.1.50/lisp/textmodes/remember
/home/politza/.emacs.d/plugins/python/python/python hides /usr/share/emacs/24.1.50/lisp/progmodes/python
/home/politza/.emacs.d/plugins/predictive/avl-tree hides /usr/share/emacs/24.1.50/lisp/emacs-lisp/avl-tree
/home/politza/.emacs.d/plugins/python/python/sym-comp hides /usr/share/emacs/24.1.50/lisp/obsolete/sym-comp

Features:
(shadow mail-extr emacsbug message rfc822 mml mml-sec mm-decode
mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader
sendmail rfc2047 rfc2045 ietf-drums mail-utils diff-mode diff ibuf-ext
ibuffer dired-aux apropos gdb-mi bindat json re-builder edebug jka-compr
debug find-func imenu gud image-mode multi-isearch vc-dispatcher vc-svn
python-21 python sym-comp cl-format cl-format-builtins clisp-format
cl-format-def emacs-customizations nogroup-customizations
wp-customizations view-customizations tex-customizations
reftex-customizations reftex-miscellaneous-configurations-customizations
reftex-label-support-customizations
reftex-defining-label-environments-customizations AUCTeX-customizations
preview-customizations preview-appearance-customizations
TeX-parse-customizations TeX-command-customizations
TeX-view-customizations table-customizations table-hooks-customizations
outlines-customizations programming-customizations tools-customizations
vc-customizations makefile-customizations ediff-customizations
ediff-window-customizations languages-customizations
matlab-customizations python-customizations haskell-customizations
c-customizations help-customizations ekey-customizations
info-lookup-customizations info-customizations customize-customizations
custom-buffer-customizations apropos-customizations help-mode view
files-customizations uniquify-customizations uniquify
sunrise-customizations recentf-customizations find-file-customizations
backup-customizations external-customizations server-customizations
processes-customizations shell-customizations gud-customizations
tooltip-customizations grep-customizations compilation-customizations
comint-customizations man-customizations environment-customizations
windows-customizations minibuffer-customizations savehist-customizations
menu-customizations initialization-customizations dired-customizations
dired-x-customizations dired-details-customizations
editing-customizations yasnippet-customizations matching-customizations
paren-matching-customizations paren-showing-customizations
isearch-customizations bookmark-customizations killing-customizations
indent-customizations emulations-customizations
editing-basics-customizations development-customizations
lisp-customizations re-builder-customizations
inferior-lisp-customizations ielm-customizations ert-customizations
edebug-customizations bytecomp-customizations advice-customizations
extensions-customizations eldoc-customizations cust-print-customizations
data-customizations save-place-customizations convenience-customizations
workgroups-customizations window-numbering-customizations
pabbrev-customizations kmacro-customizations imenu-customizations
ibuffer-customizations hippie-expand-customizations ffap-customizations
completion-customizations iswitchb-customizations iswitchb
auto-complete-customizations auto-revert-customizations
comm-customizations tramp-customizations browse-url-customizations
applications-customizations mediawiki-customizations w3m-customizations
package-customizations mail-customizations smtpmail-customizations
sendmail-customizations ispell-customizations doc-view-customizations
calendar-customizations org-customizations org-structure-customizations
org-plain-lists-customizations org-edit-structure-customizations
org-startup-customizations org-link-customizations
org-latex-customizations org-appearance-customizations
calc-customizations server recentf tree-widget yasnippet dropdown-list
workgroups bookmark pp window-numbering w3m browse-url timezone w3m-hist
w3m-e23 w3m-ccl ccl w3m-fsf w3m-favicon w3m-image w3m-proc w3m-util
tramp tramp-compat shell tramp-loaddefs tex saveplace savehist reftex
reftex-vars pabbrev thingatpt org ob-emacs-lisp ob-tangle ob-ref ob-lob
ob-table org-footnote org-src ob-comint ob-keys ob ob-eval org-pcomplete
pcomplete org-list org-faces org-compat org-entities org-macs noutline
outline format-spec cal-menu calendar cal-loaddefs lib-kbd lib-isearch
lib-basic lib-lispext info-look hippie-exp grep compile comint
ansi-color eldoc-eval ekey easy-mmode assoc dired-details+ warnings
dired-details anticus edmacro kmacro derived ffap url-parse auth-source
eieio byte-opt bytecomp byte-compile cconv macroexp gnus-util mm-util
mail-prsvr password-cache url-vars eldoc cus-edit cus-start cus-load
wid-edit cl all-autoloads auctex-autoloads tex-site info
browse-kill-ring-autoloads c-eldoc-autoloads cl-format-autoloads
company-autoloads eldoc-eval-autoloads sunrise-x-loop-autoloads
sunrise-x-loop sunrise-commander advice help-fns advice-preload term
ehelp electric ring sort find-dired disp-table enriched dired-x easymenu
dired sunrise-commander-autoloads package remember-autoloads
planner-autoloads w3m-load muse-autoloads time-date tooltip ediff-hook
vc-hooks lisp-float-type mwheel x-win x-dnd tool-bar dnd fontset image
regexp-opt fringe tabulated-list newcomment lisp-mode register page
menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock
syntax facemenu font-core frame cham georgian utf-8-lang misc-lang
vietnamese tibetan thai tai-viet lao korean japanese hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer loaddefs
button faces cus-face files text-properties overlay sha1 md5 base64
format env code-pages mule custom widget hashtable-print-readable
backquote make-network-process dbusbind dynamic-setting
font-render-setting move-toolbar gtk x-toolkit x multi-tty emacs)





^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#11679: Acknowledgement (24.1.50; gud/pdb3 hangs in lines with list comprehension)
       [not found] ` <handler.11679.B.133948593625855.ack@debbugs.gnu.org>
@ 2012-06-12  9:18   ` Andreas Politz, INF|INF-I
  0 siblings, 0 replies; 3+ messages in thread
From: Andreas Politz, INF|INF-I @ 2012-06-12  9:18 UTC (permalink / raw)
  To: 11679

<lambda> may appear as well in pdb3 ...

A. Politz






^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#11679: 24.1.50; gud/pdb3 hangs in lines with list comprehension
  2012-06-12  7:22 bug#11679: 24.1.50; gud/pdb3 hangs in lines with list comprehension Andreas Politz
       [not found] ` <handler.11679.B.133948593625855.ack@debbugs.gnu.org>
@ 2019-09-09  2:38 ` Stefan Kangas
  1 sibling, 0 replies; 3+ messages in thread
From: Stefan Kangas @ 2019-09-09  2:38 UTC (permalink / raw)
  To: Andreas Politz; +Cc: 11679

[-- Attachment #1: Type: text/plain, Size: 2633 bytes --]

tags 11679 fixed
close 11679 27.1
quit

Andreas Politz <politza@fh-trier.de> writes:

> For list comprehensions pdb3 outputs a line like this.
>
>> FILE(LINE)<listcomp>()
>
> But the `listcomp' token is not captured by the `gud-pdb-marker-regexp',
> resulting in pdb appearing to be hanging.  (This may be python2/3
> related.)
>
> diff -c -L /usr/share/emacs/24.1.50/lisp/progmodes/gud.el.gz -L \#\<buffer\ gud.el.gz\> /tmp/jka-com19603ZkZ /tmp/buffer-content-19603z4l
> *** /usr/share/emacs/24.1.50/lisp/progmodes/gud.el.gz
> --- #<buffer gud.el.gz>
> ***************
> *** 1567,1573 ****
>   ;; Last group is for return value, e.g. "> test.py(2)foo()->None"
>   ;; Either file or function name may be omitted: "> <string>(0)?()"
>   (defvar gud-pdb-marker-regexp
> !   "^> \\([-a-zA-Z0-9_/.:\\]*\\|<string>\\)(\\([0-9]+\\))\\([a-zA-Z0-9_]*\\|\\?\\|<module>\\)()\\(->[^\n\r]*\\)?[\n\r]")
>
>   (defvar gud-pdb-marker-regexp-file-group 1)
>   (defvar gud-pdb-marker-regexp-line-group 2)
> --- 1567,1573 ----
>   ;; Last group is for return value, e.g. "> test.py(2)foo()->None"
>   ;; Either file or function name may be omitted: "> <string>(0)?()"
>   (defvar gud-pdb-marker-regexp
> !   "^> \\([-a-zA-Z0-9_/.:\\]*\\|<string>\\)(\\([0-9]+\\))\\([a-zA-Z0-9_]*\\|\\?\\|<\\(?:module\\|listcomp\\)>\\)()\\(->[^\n\r]*\\)?[\n\r]")
>
>   (defvar gud-pdb-marker-regexp-file-group 1)
>   (defvar gud-pdb-marker-regexp-line-group 2)
>
> Diff finished.  Tue Jun 12 09:19:31 2012

I can reproduce this issue on current master, and it is indeed related
to the new code object names for anonymous objects in Python 3.

However, the fix you suggested was not complete, since it lacked
support for other common code objects.  I've therefore installed a
slightly different patch on master (see attached).

You could use the following Python 3 code to verify this fix:

# lambda
(lambda x: x + 1)(2)
# setcomp -- set comprehension
{s for s in [1, 2]}
# dictcomp -- dict comprehension
dict1 = {'a': 1, 'b': 2}
dict1_cond = {k:v for (k,v) in dict1.items() if v>2}
# listcomp -- list comprehension
[x*x for x in range(0,2)]
# genexpr -- generator expression
(x for x in range(5))
tuple(range(5))

Save the above as e.g. foo.py and run:

    M-x pdb RET python3 -m pdb foo.py RET

Then step through this to see output like this:

> /Users/skangas/wip/emacs/lisp/foo.py(7)<dictcomp>()
[...]
> /Users/skangas/wip/emacs/lisp/foo.py(11)<genexpr>()
[etc.]

AFAICT, the list I've installed is exhaustive, but if I've missed
something I'm sure someone will report a new bug report.  I'm
therefore closing this bug report as fixed.

Best regards,
Stefan Kangas

[-- Attachment #2: 0001-Match-Python-3-code-object-names-in-M-x-pdb.patch --]
[-- Type: application/octet-stream, Size: 1150 bytes --]

From 4042dad139d922723aabcfaef5662db8204fb355 Mon Sep 17 00:00:00 2001
From: Stefan Kangas <stefankangas@gmail.com>
Date: Mon, 9 Sep 2019 04:14:50 +0200
Subject: [PATCH] Match Python 3 code object names in "M-x pdb"

* lisp/progmodes/gud.el (gud-pdb-marker-regexp): Match Python 3 code
object names.  (Bug#11679)
---
 lisp/progmodes/gud.el | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el
index 30d4b19911..235546ef2e 100644
--- a/lisp/progmodes/gud.el
+++ b/lisp/progmodes/gud.el
@@ -1610,7 +1610,9 @@ gud-pdb-history
 ;; characters we match in the file name shown in the prompt.
 ;; (Of course, this matches the "<string>" case too.)
 (defvar gud-pdb-marker-regexp
-  "^> \\([[:graph:] \\]*\\)(\\([0-9]+\\))\\([a-zA-Z0-9_]*\\|\\?\\|<module>\\)()\\(->[^\n\r]*\\)?[\n\r]")
+  (concat "^> \\([[:graph:] \\]*\\)(\\([0-9]+\\))\\([a-zA-Z0-9_]*\\|\\?\\|"
+          "<\\(?:module\\|listcomp\\|dictcomp\\|setcomp\\|genexpr\\|lambda\\|\\)>"
+          "\\)()\\(->[^\n\r]*\\)?[\n\r]"))
 
 (defvar gud-pdb-marker-regexp-file-group 1)
 (defvar gud-pdb-marker-regexp-line-group 2)
-- 
2.23.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-09-09  2:38 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-06-12  7:22 bug#11679: 24.1.50; gud/pdb3 hangs in lines with list comprehension Andreas Politz
     [not found] ` <handler.11679.B.133948593625855.ack@debbugs.gnu.org>
2012-06-12  9:18   ` bug#11679: Acknowledgement (24.1.50; gud/pdb3 hangs in lines with list comprehension) Andreas Politz, INF|INF-I
2019-09-09  2:38 ` bug#11679: 24.1.50; gud/pdb3 hangs in lines with list comprehension Stefan Kangas

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).