Package: emacs;
Reported by: Vincent Belaïche <vincent.belaiche <at> gmail.com>
Date: Wed, 6 Feb 2019 19:54:02 UTC
Severity: normal
Found in version 27.0.50
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Vincent Belaïche <vincent.belaiche <at> gmail.com> To: bug-gnu-emacs <at> gnu.org Cc: Vincent Belaïche <vincent.belaiche <at> gmail.com> Subject: 27.0.50; ediff-revision broken with SVN backend + non ascii chars both in directory and in filename Date: Wed, 06 Feb 2019 20:52:38 +0100
[Message part 1 (text/plain, inline)]
Hello Emacs experts, I am trying to do some 'M-x ediff-revision' on a file that is under version control with svn locally to my MSWindows-10 machine, and that does not work. The file path is something like c:/blah/blah/blah/ê/trunk/ê.tex
[Message part 2 (text/plain, inline)]
(well, it is not exactly this exact string, but I presume that makes no difference for our concern…).
[Message part 3 (text/plain, inline)]
After some debugging, I realized that the whole thing executes with default-directory set to "c:/blah/blah/blah/ê/trunk/" the following two commands: (process-file "svn" nil t nil "--non-interactive" "status" "-v" "ê.tex") and then: (process-file "svn" nil t nil "--non-interactive" "cat" "ê.tex") The first command works quite fine, but the second one fails, and having a look info the " *temp*" buffer, I saw that svn angrilly barks with some error message like this one:
[Message part 4 (text/plain, inline)]
--8<----8<----8<----8<----8<-- begin -->8---->8---->8---->8---->8---- svn: warning: W200005: 'C:\blah\blah\blah\\trunk\ª.tex' is not under version control svn: E200009: Could not cat all targets because some targets are not versioned svn: E200009: Illegal target for the requested operation --8<----8<----8<----8<----8<-- end -->8---->8---->8---->8---->8---- looking more carefully at things, and having inspected the C code of function call-process, I realized that the variable coding-system-for-write has some importance, and tracing this I realized that when the first svn command is called the variable coding-system-for-write is nil, while when the second svn command is called it is 'no-conversion, which makes it fail.
[Message part 5 (text/plain, inline)]
The problem is that in the vc-find-revision function you have somewhere this setting :
[Message part 6 (text/plain, inline)]
(let ( … (coding-system-for-write 'no-conversion) …) …) here is a backtrace where I marked two lines X and Y.
[Message part 7 (text/plain, inline)]
--8<----8<----8<----8<----8<-- begin -->8---->8---->8---->8---->8---- Debugger entered--Lisp error: (error "Failed (status 1): svn --non-interactive cat ê.tex") signal(error ("Failed (status 1): svn --non-interactive cat ê.tex")) error("Failed (%s): %s" "status 1" "svn --non-interactive cat ê.tex") (progn (if (eq 32 (aref (buffer-name (current-buffer)) 0)) nil (pop-to-buffer (current-buffer)) (goto-char (point-min)) (shrink-window-if-larger-than-buffer)) (error "Failed (%s): %s" (if (integerp status) (format "status %d" status) status) full-command)) Y (if (and (not (eq t okstatus)) (or (not (integerp status)) (and okstatus (< okstatus status)))) (progn (if (eq 32 (aref (buffer-name (current-buffer)) 0)) nil (pop-to-buffer (current-buffer)) (goto-char (point-min)) (shrink-window-if-larger-than-buffer)) (error "Failed (%s): %s" (if (integerp status) (format "status %d" status) status) full-command))) (if (eq okstatus 'async) (let ((proc (let ((process-connection-type nil)) (apply 'start-file-process command (current-buffer) command squeezed)))) (if vc-command-messages (progn (message "Running in background: %s" full-command))) (set-process-sentinel proc #'ignore) (set-process-filter proc 'vc-process-filter) (setq status proc) (if vc-command-messages (progn (vc-exec-after #'(lambda nil (let ... ...)))))) (if vc-command-messages (progn (message "Running in foreground: %s" full-command))) (let ((buffer-undo-list t)) (message "CSFW=%S" coding-system-for-write) (message "CS=%S" (apply 'find-operation-coding-system 'call-process "svn" squeezed)) (message "DIR=%s" default-directory) (message "SQUEEZED=%S" squeezed) (setq status (apply 'process-file command nil t nil squeezed))) (if (and (not (eq t okstatus)) (or (not (integerp status)) (and okstatus (< okstatus status)))) (progn (if (eq 32 (aref (buffer-name (current-buffer)) 0)) nil (pop-to-buffer (current-buffer)) (goto-char (point-min)) (shrink-window-if-larger-than-buffer)) (error "Failed (%s): %s" (if (integerp status) (format "status %d" status) status) full-command))) (if vc-command-messages (progn (message "Done (status=%d): %s" status full-command)))) (let ((process-environment (cons "LC_MESSAGES=C" process-environment)) (w32-quote-process-args t)) (if (eq okstatus 'async) (let ((proc (let ((process-connection-type nil)) (apply 'start-file-process command (current-buffer) command squeezed)))) (if vc-command-messages (progn (message "Running in background: %s" full-command))) (set-process-sentinel proc #'ignore) (set-process-filter proc 'vc-process-filter) (setq status proc) (if vc-command-messages (progn (vc-exec-after #'(lambda nil ...))))) (if vc-command-messages (progn (message "Running in foreground: %s" full-command))) (let ((buffer-undo-list t)) (message "CSFW=%S" coding-system-for-write) (message "CS=%S" (apply 'find-operation-coding-system 'call-process "svn" squeezed)) (message "DIR=%s" default-directory) (message "SQUEEZED=%S" squeezed) (setq status (apply 'process-file command nil t nil squeezed))) (if (and (not (eq t okstatus)) (or (not (integerp status)) (and okstatus (< okstatus status)))) (progn (if (eq 32 (aref (buffer-name ...) 0)) nil (pop-to-buffer (current-buffer)) (goto-char (point-min)) (shrink-window-if-larger-than-buffer)) (error "Failed (%s): %s" (if (integerp status) (format "status %d" status) status) full-command))) (if vc-command-messages (progn (message "Done (status=%d): %s" status full-command))))) (let ((squeezed (remq nil flags)) (inhibit-read-only t) (status 0)) (if files (progn (setq squeezed (nconc squeezed files)))) (let ((process-environment (cons "LC_MESSAGES=C" process-environment)) (w32-quote-process-args t)) (if (eq okstatus 'async) (let ((proc (let (...) (apply ... command ... command squeezed)))) (if vc-command-messages (progn (message "Running in background: %s" full-command))) (set-process-sentinel proc #'ignore) (set-process-filter proc 'vc-process-filter) (setq status proc) (if vc-command-messages (progn (vc-exec-after #'...)))) (if vc-command-messages (progn (message "Running in foreground: %s" full-command))) (let ((buffer-undo-list t)) (message "CSFW=%S" coding-system-for-write) (message "CS=%S" (apply 'find-operation-coding-system 'call-process "svn" squeezed)) (message "DIR=%s" default-directory) (message "SQUEEZED=%S" squeezed) (setq status (apply 'process-file command nil t nil squeezed))) (if (and (not (eq t okstatus)) (or (not (integerp status)) (and okstatus (< okstatus status)))) (progn (if (eq 32 (aref ... 0)) nil (pop-to-buffer (current-buffer)) (goto-char (point-min)) (shrink-window-if-larger-than-buffer)) (error "Failed (%s): %s" (if (integerp status) (format "status %d" status) status) full-command))) (if vc-command-messages (progn (message "Done (status=%d): %s" status full-command))))) (vc-exec-after #'(lambda nil (run-hook-with-args 'vc-post-command-functions command file-or-list flags))) status) (save-current-buffer (if (or (eq buffer t) (and (stringp buffer) (string= (buffer-name) buffer)) (eq buffer (current-buffer))) nil (vc-setup-buffer buffer)) (let ((squeezed (remq nil flags)) (inhibit-read-only t) (status 0)) (if files (progn (setq squeezed (nconc squeezed files)))) (let ((process-environment (cons "LC_MESSAGES=C" process-environment)) (w32-quote-process-args t)) (if (eq okstatus 'async) (let ((proc (let ... ...))) (if vc-command-messages (progn (message "Running in background: %s" full-command))) (set-process-sentinel proc #'ignore) (set-process-filter proc 'vc-process-filter) (setq status proc) (if vc-command-messages (progn (vc-exec-after ...)))) (if vc-command-messages (progn (message "Running in foreground: %s" full-command))) (let ((buffer-undo-list t)) (message "CSFW=%S" coding-system-for-write) (message "CS=%S" (apply 'find-operation-coding-system 'call-process "svn" squeezed)) (message "DIR=%s" default-directory) (message "SQUEEZED=%S" squeezed) (setq status (apply 'process-file command nil t nil squeezed))) (if (and (not (eq t okstatus)) (or (not ...) (and okstatus ...))) (progn (if (eq 32 ...) nil (pop-to-buffer ...) (goto-char ...) (shrink-window-if-larger-than-buffer)) (error "Failed (%s): %s" (if ... ... status) full-command))) (if vc-command-messages (progn (message "Done (status=%d): %s" status full-command))))) (vc-exec-after #'(lambda nil (run-hook-with-args 'vc-post-command-functions command file-or-list flags))) status)) (let* ((files (mapcar #'(lambda (f) (file-relative-name (expand-file-name f))) (if (listp file-or-list) file-or-list (list file-or-list)))) (message-truncate-lines t) (full-command (concat (if (string= (substring command -1) "\n") (substring command 0 -1) command) " " (vc-delistify flags) " " (vc-delistify files)))) (save-current-buffer (if (or (eq buffer t) (and (stringp buffer) (string= (buffer-name) buffer)) (eq buffer (current-buffer))) nil (vc-setup-buffer buffer)) (let ((squeezed (remq nil flags)) (inhibit-read-only t) (status 0)) (if files (progn (setq squeezed (nconc squeezed files)))) (let ((process-environment (cons "LC_MESSAGES=C" process-environment)) (w32-quote-process-args t)) (if (eq okstatus 'async) (let ((proc ...)) (if vc-command-messages (progn ...)) (set-process-sentinel proc #'ignore) (set-process-filter proc 'vc-process-filter) (setq status proc) (if vc-command-messages (progn ...))) (if vc-command-messages (progn (message "Running in foreground: %s" full-command))) (let ((buffer-undo-list t)) (message "CSFW=%S" coding-system-for-write) (message "CS=%S" (apply ... ... "svn" squeezed)) (message "DIR=%s" default-directory) (message "SQUEEZED=%S" squeezed) (setq status (apply ... command nil t nil squeezed))) (if (and (not ...) (or ... ...)) (progn (if ... nil ... ... ...) (error "Failed (%s): %s" ... full-command))) (if vc-command-messages (progn (message "Done (status=%d): %s" status full-command))))) (vc-exec-after #'(lambda nil (run-hook-with-args 'vc-post-command-functions command file-or-list flags))) status))) vc-do-command(#<buffer *temp file*-256291> 0 "svn" "c:/blah/blah/blah/ê/trunk/ê.tex" "--non-interactive" "cat" nil) apply(vc-do-command #<buffer *temp file*-256291> 0 "svn" "c:/blah/blah/blah/ê/trunk/ê.tex" ("--non-interactive" "cat" nil)) vc-svn-command(#<buffer *temp file*-256291> 0 "c:/blah/blah/blah/ê/trunk/ê.tex" "cat" nil) apply(vc-svn-command #<buffer *temp file*-256291> 0 "c:/blah/blah/blah/ê/trunk/ê.tex" "cat" nil nil) (let (process-file-side-effects) (apply 'vc-svn-command buffer 0 file "cat" (and rev (not (string= rev "")) (concat "-r" rev)) (vc-switches 'SVN 'checkout))) vc-svn-find-revision("c:/blah/blah/blah/ê/trunk/ê.tex" nil #<buffer *temp file*-256291>) apply(vc-svn-find-revision ("c:/blah/blah/blah/ê/trunk/ê.tex" nil #<buffer *temp file*-256291>)) vc-call-backend(SVN find-revision "c:/blah/blah/blah/ê/trunk/ê.tex" nil #<buffer *temp file*-256291>) (if backend (vc-call-backend backend 'find-revision file revision outbuf) (vc-call-backend (vc-backend file) 'find-revision file revision outbuf)) (save-current-buffer (set-buffer filebuf) (if backend (vc-call-backend backend 'find-revision file revision outbuf) (vc-call-backend (vc-backend file) 'find-revision file revision outbuf))) (let ((outbuf (current-buffer))) (save-current-buffer (set-buffer filebuf) (if backend (vc-call-backend backend 'find-revision file revision outbuf) (vc-call-backend (vc-backend file) 'find-revision file revision outbuf)))) (save-current-buffer (set-buffer temp-buffer) (let ((outbuf (current-buffer))) (save-current-buffer (set-buffer filebuf) (if backend (vc-call-backend backend 'find-revision file revision outbuf) (vc-call-backend (vc-backend file) 'find-revision file revision outbuf))))) (prog1 (save-current-buffer (set-buffer temp-buffer) (let ((outbuf (current-buffer))) (save-current-buffer (set-buffer filebuf) (if backend (vc-call-backend backend 'find-revision file revision outbuf) (vc-call-backend (vc-backend file) 'find-revision file revision outbuf))))) (save-current-buffer (set-buffer temp-buffer) (write-region nil nil temp-file nil 0))) (unwind-protect (prog1 (save-current-buffer (set-buffer temp-buffer) (let ((outbuf (current-buffer))) (save-current-buffer (set-buffer filebuf) (if backend (vc-call-backend backend 'find-revision file revision outbuf) (vc-call-backend (vc-backend file) 'find-revision file revision outbuf))))) (save-current-buffer (set-buffer temp-buffer) (write-region nil nil temp-file nil 0))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))) (let ((temp-file filename) (temp-buffer (get-buffer-create (generate-new-buffer-name " *temp file*")))) (unwind-protect (prog1 (save-current-buffer (set-buffer temp-buffer) (let ((outbuf (current-buffer))) (save-current-buffer (set-buffer filebuf) (if backend (vc-call-backend backend ... file revision outbuf) (vc-call-backend ... ... file revision outbuf))))) (save-current-buffer (set-buffer temp-buffer) (write-region nil nil temp-file nil 0))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))) X (let ((coding-system-for-read 'no-conversion) (coding-system-for-write 'no-conversion)) (let ((temp-file filename) (temp-buffer (get-buffer-create (generate-new-buffer-name " *temp file*")))) (unwind-protect (prog1 (save-current-buffer (set-buffer temp-buffer) (let ((outbuf ...)) (save-current-buffer (set-buffer filebuf) (if backend ... ...)))) (save-current-buffer (set-buffer temp-buffer) (write-region nil nil temp-file nil 0))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))) (setq failed nil)) (unwind-protect (let ((coding-system-for-read 'no-conversion) (coding-system-for-write 'no-conversion)) (let ((temp-file filename) (temp-buffer (get-buffer-create (generate-new-buffer-name " *temp file*")))) (unwind-protect (prog1 (save-current-buffer (set-buffer temp-buffer) (let (...) (save-current-buffer ... ...))) (save-current-buffer (set-buffer temp-buffer) (write-region nil nil temp-file nil 0))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))) (setq failed nil)) (if (and failed (file-exists-p filename)) (progn (delete-file filename)))) (let ((failed t)) (unwind-protect (let ((coding-system-for-read 'no-conversion) (coding-system-for-write 'no-conversion)) (let ((temp-file filename) (temp-buffer (get-buffer-create (generate-new-buffer-name " *temp file*")))) (unwind-protect (prog1 (save-current-buffer (set-buffer temp-buffer) (let ... ...)) (save-current-buffer (set-buffer temp-buffer) (write-region nil nil temp-file nil 0))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))) (setq failed nil)) (if (and failed (file-exists-p filename)) (progn (delete-file filename))))) (save-current-buffer (set-buffer filebuf) (let ((failed t)) (unwind-protect (let ((coding-system-for-read 'no-conversion) (coding-system-for-write 'no-conversion)) (let ((temp-file filename) (temp-buffer (get-buffer-create ...))) (unwind-protect (prog1 (save-current-buffer ... ...) (save-current-buffer ... ...)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))) (setq failed nil)) (if (and failed (file-exists-p filename)) (progn (delete-file filename))))) (vc-mode-line file)) (if (file-exists-p automatic-backup) (rename-file automatic-backup filename nil) (message "Checking out %s..." filename) (save-current-buffer (set-buffer filebuf) (let ((failed t)) (unwind-protect (let ((coding-system-for-read 'no-conversion) (coding-system-for-write 'no-conversion)) (let ((temp-file filename) (temp-buffer ...)) (unwind-protect (prog1 ... ...) (and ... ...))) (setq failed nil)) (if (and failed (file-exists-p filename)) (progn (delete-file filename))))) (vc-mode-line file)) (message "Checking out %s...done" filename)) (if (file-exists-p filename) nil (if (file-exists-p automatic-backup) (rename-file automatic-backup filename nil) (message "Checking out %s..." filename) (save-current-buffer (set-buffer filebuf) (let ((failed t)) (unwind-protect (let ((coding-system-for-read ...) (coding-system-for-write ...)) (let (... ...) (unwind-protect ... ...)) (setq failed nil)) (if (and failed (file-exists-p filename)) (progn (delete-file filename))))) (vc-mode-line file)) (message "Checking out %s...done" filename))) (let ((automatic-backup (vc-version-backup-file-name file revision)) (filebuf (or (get-file-buffer file) (current-buffer))) (filename (vc-version-backup-file-name file revision 'manual))) (if (file-exists-p filename) nil (if (file-exists-p automatic-backup) (rename-file automatic-backup filename nil) (message "Checking out %s..." filename) (save-current-buffer (set-buffer filebuf) (let ((failed t)) (unwind-protect (let (... ...) (let ... ...) (setq failed nil)) (if (and failed ...) (progn ...)))) (vc-mode-line file)) (message "Checking out %s...done" filename))) (let ((result-buf (find-file-noselect filename))) (save-current-buffer (set-buffer result-buf) (set (make-local-variable 'vc-parent-buffer) filebuf)) result-buf)) vc-find-revision("c:/blah/blah/blah/ê/trunk/ê.tex" nil)
[Message part 8 (text/plain, inline)]
… … … … --8<----8<----8<----8<----8<-- end -->8---->8---->8---->8---->8---- On line X coding-system-for-write is set to 'no-conversion. line Y is shown here in function vc-do-command, where I also marked a line as Z: --8<----8<----8<----8<----8<-- begin -->8---->8---->8---->8---->8---- ;; Run synchronously (when vc-command-messages (message "Running in foreground: %s" full-command)) (let ((buffer-undo-list t)) Z (setq status (apply 'process-file command nil t nil squeezed))) Y (when (and (not (eq t okstatus)) (or (not (integerp status)) (and okstatus (< okstatus status)))) (unless (eq ?\s (aref (buffer-name (current-buffer)) 0)) (pop-to-buffer (current-buffer)) (goto-char (point-min)) (shrink-window-if-larger-than-buffer)) --8<----8<----8<----8<----8<-- end -->8---->8---->8---->8---->8---- Line Z is where the svn command are called, and there a function process-file is called, this function calls in turn function call-process. Function call-process encodes the arguments when necessary, but the setting of coding-system-for-write to 'no-conversion disturbs that, and OUCH, the command line passed to svn is not properly encoded, so with some reason svn unhappilly barks.
[Message part 9 (text/plain, inline)]
OK, I know that some Askese people will probably say something like « don't use non-ASCII characters in file-names » which is IMHO quite a ASCII-centric way of thinking, so just in case, my answer is « Î wîll ùse nôn-ÀSCÎÎ çhærâctèrs név
[Message part 10 (text/plain, inline)]
œrthel
[Message part 11 (text/plain, inline)]
èss, because Î à m mysèlf a nôn-ASCII pèrsôn ! » ;-) Vincent. In GNU Emacs 27.0.50 (build 1, x86_64-w64-mingw32) of 2018-08-10 built on AIGLEROYAL Windowing system distributor 'Microsoft Corp.', version 10.0.17134 Recent messages: Continuing through this frame Checking out c:/Users/Vincent/Documents/administration/divers/20181212_je_veux_être_un_homme_euro/trunk/20181212_je_veux_être_un_homme_euro.tex.~118~... Running in foreground: svn --non-interactive cat 20181212_je_veux_être_un_homme_euro.tex CSFW=no-conversion CS=(windows-1252 . windows-1252) DIR=c:/Users/Vincent/Documents/administration/divers/20181212_je_veux_être_un_homme_euro/trunk/ SQUEEZED=("--non-interactive" "cat" "20181212_je_veux_être_un_homme_euro.tex") Entering debugger... Mark set Making completion list... Configured using: 'configure --prefix=C:/Nos_Programmes/GNU/Emacs PKG_CONFIG_PATH=/mingw64/lib/pkgconfig:/mingw64/share/pkgconfig 'CFLAGS= -Og -g3 -L C:/Programmes/installation/emacs-install/libXpm-3.5.8/src' 'CPPFLAGS= -DFOR_MSW=1 -I C:/Programmes/installation/emacs-install/libXpm-3.5.8/include -I C:/Programmes/installation/emacs-install/libXpm-3.5.8/src -L C:/Programmes/installation/emacs-install/libXpm-3.5.8/src' PKG_CONFIG=/usr/bin/pkg-config.exe' Configured features: XPM JPEG TIFF GIF PNG RSVG SOUND NOTIFY ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS THREADS LCMS2 Important settings: value of $LC_MESSAGES: C value of $LANG: FRA locale-coding-system: cp1252 Major mode: Emacs-Lisp Minor modes in effect: diff-auto-refine-mode: t shell-dirtrack-mode: t TeX-PDF-mode: t recentf-mode: t tooltip-mode: t global-eldoc-mode: t eldoc-mode: t electric-indent-mode: t mouse-wheel-mode: t tool-bar-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t Load-path shadows: c:/Programmes/installation/cedet-install/cedet-git/lisp/speedbar/loaddefs hides c:/Nos_Programmes/GNU/Emacs/share/emacs/27.0.50/lisp/loaddefs c:/Programmes/installation/cedet-install/cedet-git/lisp/speedbar/loaddefs hides c:/Programmes/installation/cedet-install/cedet-git/lisp/cedet/loaddefs Features: (shadow emacsbug vc-annotate vc-filewise edebug completion find-cmd grep find-dired pp face-remap ediff-ptch eieio-opt vc-git diff-mode help-fns radix-tree cl-print debug backtrace ediff-vers ediff-merg ediff-wind ediff-diff ediff-mult ediff-help ediff-init ediff-util ediff vc-rcs vc-dir bbdb-com vc reftex-cite reftex-parse texmathp org-rmail org-mhe org-irc org-info org-gnus nnir gnus-sum gnus-group gnus-undo gnus-start gnus-cloud nnimap nnmail mail-source utf7 netrc nnoo gnus-spec gnus-int gnus-range gnus-win gnus nnheader org-docview doc-view jka-compr image-mode org-bibtex bibtex org-bbdb org-w3m org-element org org-macro org-footnote org-pcomplete org-list org-faces org-entities org-version ob-emacs-lisp ob ob-tangle org-src ob-ref ob-lob ob-table ob-keys ob-exp ob-comint ob-core ob-eval org-compat org-macs org-loaddefs find-func cal-tex cal-menu calendar cal-loaddefs misearch multi-isearch vc-dispatcher vc-svn preview prv-emacs reftex-dcr reftex reftex-loaddefs reftex-vars tex-bar tex-buf toolbar-x noutline outline font-latex latex latex-flymake flymake-proc flymake warnings tex-ispell tex-style tex-mode shell pcomplete latexenc log-edit add-log pcvs pcvs-parse pcvs-info pcvs-defs pcvs-util ewoc calc-undo calccomp calc-vec calc-aent calc-alg calc-menu parse-time vc-cvs hl-line balance calc-forms network-stream nsm mailalias smtpmail qp sort bbdb-message sendmail mail-extr message rmc puny format-spec rfc822 mml mml-sec epa gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader elec-pair edmacro kmacro jdee jdee-wiz jdee-test jdee-archive memoize jdee-stacktrace jdee-refactor dired-aux dired-x dired dired-loaddefs jdee-project-file jdee-maven dash jdee-keys jdee-jdb jdee-java-grammar jdee-which-method jdee-font-lock jdee-issues jdee-help jdee-gen tempo jdee-find jdee-deps jdee-cygwin jdee-custom jdee-compile jdee-class jdee-bytecode jdee-bug easy-mmode jdee-dbs jdee-run jdee-jdk-manager jdee-dbo jdee-widgets jdee-db jdee-open-source semantic/senator semantic/db-find semantic/db-ref semantic/decorate pulse jdee-import jdee-complete semantic/idle working fame jdee-parse jdee-backend jdee-bsh jdee-util arc-mode archive-mode jdee-parse-expr beanshell thingatpt semantic/sb speedbar sb-image dframe jdee-imenu semantic/imenu imenu semantic/sort semantic/db-file semantic/adebug eieio-datadebug data-debug cedet-files semantic/db eieio-base semantic/java semantic/format ezimage semantic/tag-ls semantic/find semantic/doc semantic/ctxt semantic/util-modes semantic/util semantic semantic/tag semantic/lex semantic/fw mode-local jdee-avl-tree avl-tree generator etags xref project efc eieio-compat jdee-annotations jdee-abbrev jdee-classpath jdee-files jdee-activator jdee-log executable cus-edit cus-start cus-load compile comint ansi-color ring cedet cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs browse-url flatland-black-theme calc-misc calc-arith calc-ext calc calc-loaddefs calc-macs skeleton rx tex-mik tex crm advice preview-latex auto-loads tex-site bbdb bbdb-site timezone bbdb-loaddefs template w32utils cl recentf tree-widget wid-edit load-path-to-cedet-svn time-date mule-util finder-inf package let-alist derived pcase cl-extra help-mode easymenu url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache json map url-vars seq byte-opt gv bytecomp byte-compile cconv epg epg-config subr-x cl-loaddefs cl-lib tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel dos-w32 ls-lisp disp-table term/w32-win w32-win w32-vars term/common-win tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame cl-generic 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 charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote threads w32notify w32 lcms2 multi-tty make-network-process emacs) Memory information: ((conses 16 705712 103613) (symbols 56 59375 1) (miscs 48 1904 2148) (strings 32 161627 7850) (string-bytes 1 5385398) (vectors 16 71779) (vector-slots 8 2019402 40514) (floats 8 326 902) (intervals 56 18236 3220) (buffers 992 66))
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.