From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: "Basil L. Contovounesios" Newsgroups: gmane.emacs.bugs Subject: bug#28997: 27.0.50; Error in async shell-command process filter Date: Wed, 25 Oct 2017 16:50:01 +0100 Message-ID: <8737672pna.fsf@gmail.com> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: blaine.gmane.org 1508948856 3361 195.159.176.226 (25 Oct 2017 16:27:36 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Wed, 25 Oct 2017 16:27:36 +0000 (UTC) To: 28997@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Oct 25 18:27:32 2017 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e7OWZ-0007nv-C3 for geb-bug-gnu-emacs@m.gmane.org; Wed, 25 Oct 2017 18:27:23 +0200 Original-Received: from localhost ([::1]:49206 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e7OWg-0000Yz-ME for geb-bug-gnu-emacs@m.gmane.org; Wed, 25 Oct 2017 12:27:30 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:52741) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e7OWH-0000Le-Jv for bug-gnu-emacs@gnu.org; Wed, 25 Oct 2017 12:27:07 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e7OWE-0006zB-B9 for bug-gnu-emacs@gnu.org; Wed, 25 Oct 2017 12:27:05 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:53122) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1e7OWE-0006ym-1m for bug-gnu-emacs@gnu.org; Wed, 25 Oct 2017 12:27:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1e7OWD-0004ff-Sq for bug-gnu-emacs@gnu.org; Wed, 25 Oct 2017 12:27:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: "Basil L. Contovounesios" Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 25 Oct 2017 16:27:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 28997 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.150894878317903 (code B ref -1); Wed, 25 Oct 2017 16:27:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 25 Oct 2017 16:26:23 +0000 Original-Received: from localhost ([127.0.0.1]:33570 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e7OVa-0004eg-HB for submit@debbugs.gnu.org; Wed, 25 Oct 2017 12:26:23 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:50042) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e7Nwp-0003gK-9w for submit@debbugs.gnu.org; Wed, 25 Oct 2017 11:50:28 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e7Nwg-0003qH-CM for submit@debbugs.gnu.org; Wed, 25 Oct 2017 11:50:21 -0400 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:46272) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1e7Nwg-0003pk-5I for submit@debbugs.gnu.org; Wed, 25 Oct 2017 11:50:18 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:40971) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e7Nwa-0003XJ-Il for bug-gnu-emacs@gnu.org; Wed, 25 Oct 2017 11:50:17 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e7NwX-0003VI-7O for bug-gnu-emacs@gnu.org; Wed, 25 Oct 2017 11:50:12 -0400 Original-Received: from mail-wr0-x22b.google.com ([2a00:1450:400c:c0c::22b]:48411) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1e7NwW-0003S5-Ms for bug-gnu-emacs@gnu.org; Wed, 25 Oct 2017 11:50:09 -0400 Original-Received: by mail-wr0-x22b.google.com with SMTP id 15so460480wrb.5 for ; Wed, 25 Oct 2017 08:50:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tcd-ie.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:mime-version; bh=ecpl43zxWCmzzzyI/MTWw1WufETPEPjvNwwB5M0P6/M=; b=yROiFt0ocsTMpOH3d+KV0IiY9kY9jjF1KIwQAbsNHdBvtOdsVLDhuS/U6b0j51+tnp uWSxk2Dgnfx5JjMD/dd/NFIlSnzqYqlONB3nPMBF4GETBPU2VjdamRxSheNRBDA8iQpr 8tt3VrR6N7xItTYAmaMBuwJ4D3T+Dz6VV/jirjQE/2IiTICctZIWUDYvSdCQ5Du66S/O gz77Rpoy8hB3lfJgE3gOOkvpyz401w9KCq00cZL874r7h4OoZ8sgz5flGrktd1gB9RaI J1jW6jJacQyihzhz0wNv6sAKDWkeeUpYeiE6aqMn4romVBpxGNzMa7tspLZ7ei6ErfIS VDrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version; bh=ecpl43zxWCmzzzyI/MTWw1WufETPEPjvNwwB5M0P6/M=; b=dzhRF9al+FtoUxcpnLsJhCcoq61YzqWHEW+MFOyibN2aMwcBFukDXTDec2l0swZekn vC4IKR2FJ/cqCU415Ixoi0m25+sqJ1/h/VjI7WzY1jaYNxosRUZQnq/tMBMdFn/4Cdkf NdnM/X5FhuKGCCzXJ9Fvs7Jmip8bauvhCnm0AR7DtXV1oRpxhnhAyFKEnDvAdYVuMTbI f16FeVC+jEL6RFVzReDPYfobTJMk2AWCBPqrjovgmz8jj3yBpK+NddVfvpC1II+p/hv0 8LOFXwK0NH7vPjxz/tprITB+977bOqX0FxbcqTAbN+HR2YDCXpff1Y3Yf/96w29S5LRx 4BCg== X-Gm-Message-State: AMCzsaWMSBRFwfGtW3Hr5HMfZxiOsiraAyySe+40VrWP7dRX031uO2dA ww1q+oJ4eIt19TCFriRbiHegXr6B X-Google-Smtp-Source: ABhQp+TLmxygwqX3bpd1YFfBncv4py1H5xkTS3DV1VMdezazcOKElxfP9Kcwyks7mOzwK5x3dLStAg== X-Received: by 10.223.160.86 with SMTP id l22mr2640260wrl.187.1508946606913; Wed, 25 Oct 2017 08:50:06 -0700 (PDT) Original-Received: from localhost ([134.226.214.244]) by smtp.gmail.com with ESMTPSA id z192sm2607875wmz.28.2017.10.25.08.50.05 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 25 Oct 2017 08:50:05 -0700 (PDT) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Mailman-Approved-At: Wed, 25 Oct 2017 12:26:19 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:138976 Archived-At: --=-=-= Content-Type: text/plain Content-Disposition: attachment; filename=backtrace.txt Content-Description: Error backtrace Debugger entered--Lisp error: (wrong-type-argument stringp #) string=("home" #) (and (= 0 (buffer-size (process-buffer process))) (string= (buffer-name (process-buffer process)) #)) (if (and (= 0 (buffer-size (process-buffer process))) (string= (buffer-name (process-buffer process)) #)) (progn (display-buffer (process-buffer process)))) (when (and (= 0 (buffer-size (process-buffer process))) (string= (buffer-name (process-buffer process)) #)) (display-buffer (process-buffer process))) (lambda (process string) (when (and (= 0 (buffer-size (process-buffer process))) (string= (buffer-name (process-buffer process)) #)) (display-buffer (process-buffer process))))(# "bin\011\011\011dotfiles Mail Pictures\011 src\nblc-ownertrust-gpg.txt\011Downloads mnt\011 Public\011 Videos\nDesktop\011\011\011Dropbox Music resilio\011 WD-Files\nDocuments\011\011go\011 News skypeforlinux\n") apply((lambda (process string) (when (and (= 0 (buffer-size (process-buffer process))) (string= (buffer-name (process-buffer process)) #)) (display-buffer (process-buffer process)))) (# "bin\011\011\011dotfiles Mail Pictures\011 src\nblc-ownertrust-gpg.txt\011Downloads mnt\011 Public\011 Videos\nDesktop\011\011\011Dropbox Music resilio\011 WD-Files\nDocuments\011\011go\011 News skypeforlinux\n")) #f(advice-wrapper :before comint-output-filter (lambda (process string) (when (and (= 0 (buffer-size (process-buffer process))) (string= (buffer-name (process-buffer process)) #)) (display-buffer (process-buffer process)))))(# "bin\011\011\011dotfiles Mail Pictures\011 src\nblc-ownertrust-gpg.txt\011Downloads mnt\011 Public\011 Videos\nDesktop\011\011\011Dropbox Music resilio\011 WD-Files\nDocuments\011\011go\011 News skypeforlinux\n") --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0001-Fix-buffer-name-comparison-in-async-shell-command.patch >From 064e4e4d9958fcfc0980091f302a0dd31bdc4581 Mon Sep 17 00:00:00 2001 From: "Basil L. Contovounesios" Date: Wed, 25 Oct 2017 16:15:19 +0100 Subject: [PATCH 1/2] Fix buffer name comparison in async shell-command When async-shell-command-display-buffer is nil, the async shell-command process filter passed output-buffer, which could be a buffer object, to string=, resulting in an error. * lisp/simple.el (shell-command): Keep track of output-buffer name to fix this and DRY. Replace quoted lambda with closure. --- lisp/simple.el | 35 ++++++++++++++--------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/lisp/simple.el b/lisp/simple.el index 12d65e50c3..96f5a321f3 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -3487,10 +3487,11 @@ shell-command (save-match-data (if (string-match "[ \t]*&[ \t]*\\'" command) ;; Command ending with ampersand means asynchronous. - (let ((buffer (get-buffer-create - (or output-buffer "*Async Shell Command*"))) - (directory default-directory) - proc) + (let* ((buffer (get-buffer-create + (or output-buffer "*Async Shell Command*"))) + (name (buffer-name buffer)) + (directory default-directory) + proc) ;; Remove the ampersand. (setq command (substring command 0 (match-beginning 0))) ;; Ask the user what to do with already running process. @@ -3505,30 +3506,24 @@ shell-command ((eq async-shell-command-buffer 'confirm-new-buffer) ;; If will create a new buffer, query first. (if (yes-or-no-p "A command is running in the default buffer. Use a new buffer? ") - (setq buffer (generate-new-buffer - (or (and (bufferp output-buffer) (buffer-name output-buffer)) - output-buffer "*Async Shell Command*"))) + (setq buffer (generate-new-buffer name)) (error "Shell command in progress"))) ((eq async-shell-command-buffer 'new-buffer) ;; It will create a new buffer. - (setq buffer (generate-new-buffer - (or (and (bufferp output-buffer) (buffer-name output-buffer)) - output-buffer "*Async Shell Command*")))) + (setq buffer (generate-new-buffer name))) ((eq async-shell-command-buffer 'confirm-rename-buffer) ;; If will rename the buffer, query first. (if (yes-or-no-p "A command is running in the default buffer. Rename it? ") (progn (with-current-buffer buffer (rename-uniquely)) - (setq buffer (get-buffer-create - (or output-buffer "*Async Shell Command*")))) + (setq buffer (get-buffer-create name))) (error "Shell command in progress"))) ((eq async-shell-command-buffer 'rename-buffer) ;; It will rename the buffer. (with-current-buffer buffer (rename-uniquely)) - (setq buffer (get-buffer-create - (or output-buffer "*Async Shell Command*")))))) + (setq buffer (get-buffer-create name))))) (with-current-buffer buffer (shell-command--save-pos-or-erase) (setq default-directory directory) @@ -3543,13 +3538,11 @@ shell-command (if async-shell-command-display-buffer (display-buffer buffer '(nil (allow-no-window . t))) (add-function :before (process-filter proc) - `(lambda (process string) - (when (and (= 0 (buffer-size (process-buffer process))) - (string= (buffer-name (process-buffer process)) - ,(or output-buffer "*Async Shell Command*"))) - (display-buffer (process-buffer process)))) - )) - )) + (lambda (process _string) + (let ((buf (process-buffer process))) + (when (and (zerop (buffer-size buf)) + (string= (buffer-name buf) name)) + (display-buffer buf)))))))) ;; Otherwise, command is executed synchronously. (shell-command-on-region (point) (point) command output-buffer nil error-buffer))))))) -- 2.14.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0002-lisp-simple.el-shell-command-Simplify-cond-with-pcas.patch >From 6e192d6bb5c2c8c3565df14505b15327fb061d48 Mon Sep 17 00:00:00 2001 From: "Basil L. Contovounesios" Date: Wed, 25 Oct 2017 16:22:06 +0100 Subject: [PATCH 2/2] * lisp/simple.el (shell-command): Simplify cond with pcase --- lisp/simple.el | 54 +++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/lisp/simple.el b/lisp/simple.el index 96f5a321f3..147cc34646 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -3497,33 +3497,33 @@ shell-command ;; Ask the user what to do with already running process. (setq proc (get-buffer-process buffer)) (when proc - (cond - ((eq async-shell-command-buffer 'confirm-kill-process) - ;; If will kill a process, query first. - (if (yes-or-no-p "A command is running in the default buffer. Kill it? ") - (kill-process proc) - (error "Shell command in progress"))) - ((eq async-shell-command-buffer 'confirm-new-buffer) - ;; If will create a new buffer, query first. - (if (yes-or-no-p "A command is running in the default buffer. Use a new buffer? ") - (setq buffer (generate-new-buffer name)) - (error "Shell command in progress"))) - ((eq async-shell-command-buffer 'new-buffer) - ;; It will create a new buffer. - (setq buffer (generate-new-buffer name))) - ((eq async-shell-command-buffer 'confirm-rename-buffer) - ;; If will rename the buffer, query first. - (if (yes-or-no-p "A command is running in the default buffer. Rename it? ") - (progn - (with-current-buffer buffer - (rename-uniquely)) - (setq buffer (get-buffer-create name))) - (error "Shell command in progress"))) - ((eq async-shell-command-buffer 'rename-buffer) - ;; It will rename the buffer. - (with-current-buffer buffer - (rename-uniquely)) - (setq buffer (get-buffer-create name))))) + (pcase async-shell-command-buffer + ('confirm-kill-process + ;; If will kill a process, query first. + (if (yes-or-no-p "A command is running in the default buffer. Kill it? ") + (kill-process proc) + (error "Shell command in progress"))) + ('confirm-new-buffer + ;; If will create a new buffer, query first. + (if (yes-or-no-p "A command is running in the default buffer. Use a new buffer? ") + (setq buffer (generate-new-buffer name)) + (error "Shell command in progress"))) + ('new-buffer + ;; It will create a new buffer. + (setq buffer (generate-new-buffer name))) + ('confirm-rename-buffer + ;; If will rename the buffer, query first. + (if (yes-or-no-p "A command is running in the default buffer. Rename it? ") + (progn + (with-current-buffer buffer + (rename-uniquely)) + (setq buffer (get-buffer-create name))) + (error "Shell command in progress"))) + ('rename-buffer + ;; It will rename the buffer. + (with-current-buffer buffer + (rename-uniquely)) + (setq buffer (get-buffer-create name))))) (with-current-buffer buffer (shell-command--save-pos-or-erase) (setq default-directory directory) -- 2.14.2 --=-=-= Content-Type: text/plain # Steps to reproduce 1) emacs -Q 2) M-x set-variable RET async-shell-command-display-buffer RET nil RET 3) M-: (async-shell-command "ls ~" (generate-new-buffer "home")) RET This results in the following error: error in process filter: Wrong type argument: stringp, # I attach the relevant backtrace. # Diagnosis When async-shell-command-display-buffer is nil, the async shell-command process filter passes output-buffer, which could be a buffer object, to string=. # Patch I attach two patches to address this issue. The first patch replaces the quoted lambda process filter with a closure over the name of output-buffer. By keeping track of this name, a lot of the surrounding buffer-name-determining code can be simplified via DRY. The second patch is purely aesthetic and simplifies the cond that is touched by my first patch into an equivalent pcase. # Environment In GNU Emacs 27.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, Xaw3d scroll bars) of 2017-10-25 built on thunk Repository revision: 090f4f157eea6f0d0d13963520f5e05706de142f Windowing system distributor 'The X.Org Foundation', version 11.0.11905000 System Description: Debian GNU/Linux testing (buster) Recent messages: Configuring package avy...done Configuring package ace-window...done Configuring package mm-decode...done Configuring package dired...done Loading /home/blc/.emacs.d/eudc-options... Loading eudcb-bbdb... Configuring package bbdb...done Loading eudcb-bbdb...done Loading /home/blc/.emacs.d/eudc-options...done Configuring package message...done Configured using: 'configure --prefix=/home/blc/.local --enable-locallisppath= --with-mailutils --with-sound=yes --with-x-toolkit=lucid --with-xpm --with-jpeg --with-tiff --with-gif --with-png --with-rsvg --with-libsystemd --with-xml2 --with-imagemagick --with-xft --with-libotf --with-m17n-flt --with-toolkit-scroll-bars --with-xaw3d --with-xim --with-gpm --with-dbus --with-gsettings --with-selinux --with-gnutls --with-zlib --with-modules --with-threads --with-file-notification=yes --with-x --without-gconf --with-lcms2 'CFLAGS=-flto -fomit-frame-pointer -march=native -maes -mavx -mcrc32 -mf16c -mfpmath=sse -mfsgsbase -mfxsr -minline-all-stringops -mmmx -mpclmul -mpopcnt -msahf -msse4.2 -mxsave -mxsaveopt -mvzeroupper -O3 -pipe' LDFLAGS=-flto' Configured features: XAW3D XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS NOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS LUCID X11 MODULES LIBSYSTEMD LCMS2 Important settings: value of $LANG: en_IE.UTF-8 locale-coding-system: utf-8-unix Major mode: Lisp Interaction Minor modes in effect: ace-window-display-mode: t shell-dirtrack-mode: t counsel-mode: t bug-reference-prog-mode: t fic-mode: t global-paren-face-mode: t paren-face-mode: t xterm-mouse-mode: t winner-mode: t global-whitespace-mode: t display-time-mode: t global-subword-mode: t subword-mode: t save-place-mode: t show-paren-mode: t global-hi-lock-mode: t hi-lock-mode: t engine-mode: t delete-selection-mode: t display-battery-mode: t override-global-mode: t blc-dropbox-mode: t blc-rainbow-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 window-divider-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 auto-save-visited-mode: t Features: (shadow sort footnote face-remap mail-extr gnus-msg gnus-art mm-uu mml2015 mm-view mml-smime smime dig mailcap gnus-sum gnus-group gnus-undo gnus-start gnus-cloud nnimap nnmail mail-source tls gnutls utf7 netrc nnoo parse-time gnus-spec gnus-int gnus-range gnus-win gnus nnheader emacsbug eudcb-bbdb bbdb-com crm bbdb bbdb-site timezone eudc eudc-options-file cus-edit eudc-vars wid-edit message rmc puny git-annex dired-x dired dired-loaddefs format-spec rfc822 mml mml-sec epa derived epg gnus-util rmail rmail-loaddefs xdg mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils ace-window avy cl-print debug shell pcomplete comint ansi-color cus-start cus-load colir color counsel jka-compr esh-util etags xref project swiper ivy flx ivy-overlay ffap thingatpt server bug-reference fic-mode fill-column-indicator paren-face elec-pair xt-mouse winner ring disp-table whitespace time cap-words superword subword saveplace paren ibuf-macs highlight-escape-sequences hi-lock time-date engine-mode delsel battery edmacro kmacro cl-extra help-mode delight advice zenburn-theme browse-url use-package diminish bind-key finder-inf tex-site info package easymenu epg-config url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache url-vars blc-macs blc-lib easy-mmode rx pcase thunk subr-x map seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib realpath mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win term/common-win x-dnd 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 dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting x-toolkit x multi-tty make-network-process emacs) Memory information: ((conses 16 359441 89175) (symbols 48 41275 27) (miscs 40 1373 2435) (strings 32 101726 9595) (string-bytes 1 3144509) (vectors 16 36288) (vector-slots 8 830885 84664) (floats 8 420 172) (intervals 56 1018 82) (buffers 992 17)) Thanks, -- Basil --=-=-=--