From debbugs-submit-bounces@debbugs.gnu.org Sun Jan 23 14:05:16 2011 Received: (at submit) by debbugs.gnu.org; 23 Jan 2011 19:05:16 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Ph5FU-0002yw-6D for submit@debbugs.gnu.org; Sun, 23 Jan 2011 14:05:16 -0500 Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Ph5FQ-0002yk-KD for submit@debbugs.gnu.org; Sun, 23 Jan 2011 14:05:13 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Ph5N8-0006Rf-Tr for submit@debbugs.gnu.org; Sun, 23 Jan 2011 14:13:12 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED autolearn=unavailable version=3.3.1 Received: from lists.gnu.org ([199.232.76.165]:39609) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ph5N8-0006RU-GJ for submit@debbugs.gnu.org; Sun, 23 Jan 2011 14:13:10 -0500 Received: from [140.186.70.92] (port=53313 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Ph5N7-0007H3-1D for bug-gnu-emacs@gnu.org; Sun, 23 Jan 2011 14:13:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Ph5N5-0006Qp-4x for bug-gnu-emacs@gnu.org; Sun, 23 Jan 2011 14:13:08 -0500 Received: from exprod7og121.obsmtp.com ([64.18.2.20]:34871) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1Ph5N4-0006QW-Qc for bug-gnu-emacs@gnu.org; Sun, 23 Jan 2011 14:13:07 -0500 Received: from source ([74.125.82.44]) (using TLSv1) by exprod7ob121.postini.com ([64.18.6.12]) with SMTP ID DSNKTTx9v0y9unN+FJBM4bGjL7vkCJ6HR0Q4@postini.com; Sun, 23 Jan 2011 11:13:06 PST Received: by wwa36 with SMTP id 36so4217652wwa.13 for ; Sun, 23 Jan 2011 11:13:02 -0800 (PST) Received: by 10.216.160.1 with SMTP id t1mr1578011wek.2.1295809967919; Sun, 23 Jan 2011 11:12:47 -0800 (PST) Received: from canta (87-194-87-241.bethere.co.uk [87.194.87.241]) by mx.google.com with ESMTPS id i80sm6154431wej.28.2011.01.23.11.12.46 (version=TLSv1/SSLv3 cipher=RC4-MD5); Sun, 23 Jan 2011 11:12:47 -0800 (PST) From: Reuben Thomas To: bug-gnu-emacs@gnu.org Subject: 23.2.91; Unsatisfactory interaction between shell-mode-hook and comint-read-input-ring Date: Sun, 23 Jan 2011 19:12:45 +0000 Message-ID: <87y66b3042.fsf@sc3d.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Spam-Score: -6.0 (------) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.0 (------) shell-mode runs comint-read-input-ring. This is in a way unfortunate, since this means that if you want to change the parameters of comint-input-ring in shell-mode-hook, then you=E2=80=99re already too late. I have the following in my .emacs: (add-hook 'shell-mode-hook (lambda () (let ((n (getenv "HISTSIZE"))) (if n (progn (setq comint-input-ring-size (string-to-number n= )) (comint-read-input-ring t)))))) This is not appropriate for comint-mode-hook, since HISTSIZE is shell-specific (really, it=E2=80=99s bash-specific, so I should be testing = that I=E2=80=99m running bash). But now I have to run comint-read-input-ring aga= in. Perhaps shell-mode should instead append comint-read-input-ring to shell-mode-hook if it=E2=80=99s not already there, or some such malarky? There is one further thing that is puzzling me about the situation: I have quite a large ~/.bash_history (about 200,000 lines). When I ran shell-mode without first setting comint-input-ring-size correctly, it was truncated to 500 lines when I killed the shell-mode buffer (as I would expect). However, after setting comint-input-ring-size to HISTSIZE (which is 400,000), ~/.bash_history was no longer translated _even though, as I was not yet running comint-read-input-ring in my shell-mode hook, only 500 entries were being read_. This seems to contradict the docstring of comint-write-input-ring, which says that it overwrites comint-input-ring-file-name if comint-input-ring is non-empty. (However, it is correct behavior for my shell: I have set shopt histappend. But this is surely a coincidence, as bash will update the history file before Emacs, so Emacs should =E2=80=9Cwin=E2=80=9D, right?) In GNU Emacs 23.2.91.4 (i686-pc-linux-gnu, GTK+ Version 2.22.0) of 2011-01-13 on canta Windowing system distributor `The X.Org Foundation', version 11.0.10900000 Important settings: value of $LC_ALL: nil 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: en_GB.UTF-8 value of $XMODIFIERS: nil locale-coding-system: utf-8-unix default enable-multibyte-characters: t Major mode: Shell Minor modes in effect: shell-dirtrack-mode: t recentf-mode: t show-paren-mode: t savehist-mode: t minibuffer-electric-default-mode: t iswitchb-mode: t icomplete-mode: t global-whitespace-mode: t global-auto-revert-mode: t desktop-save-mode: t yas/global-mode: t mouse-wheel-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-encryption-mode: t auto-compression-mode: t column-number-mode: t line-number-mode: t transient-mark-mode: t Recent input: M-x s h e l l C-h v c o m i n t - i n p u=20 t - r i n g M-> M-< M-< C-x k a M-p=20 M-p M-p M-p M-p M-p M-p M-p M-p M-p M-p M-n M-n M-n=20 M-n M-n M-n M-n M-n M-n M-n M-n M-n M-n M-n M-n M-n=20 M-n M-n M-n M-n M-n M-n M-n M-n M-n M-n M-n M-n M-n=20 M-n M-n M-n M-n M-n M-n M-n M-n M-n M-n M-n M-n M-n=20 M-n M-n M-n M-n M-n M-n M-n =20 . / M-p M-p M-p M-p M-p M-p M-p M-p M-p M-p=20 M-p M-p M-p M-p M-p C-a C-k M-x r=20 e p o r t - e m a c s - b u g Recent messages: History item: 897 History item: 900 History item: 912 History item: 913 History item: 1202 History item: 1203 History item: 1206 History item: 1399 History item: 1400 History item: 1404 Load-path shadows: /home/rrt/.emacs.d/elpa/ruby-mode-1.1/ruby-mode hides /usr/share/emacs-snap= shot/site-lisp/ruby1.8-elisp/ruby-mode /home/rrt/local/share/emacs/site-lisp/popup hides /usr/local/share/emacs/23= .2.91/site-lisp/auto-complete/popup /home/rrt/local/share/emacs/site-lisp/fuzzy hides /usr/local/share/emacs/23= .2.91/site-lisp/auto-complete/fuzzy /home/rrt/.emacs.d/elpa/css-mode-1.0/css-mode hides /usr/local/share/emacs/= 23.2.91/site-lisp/css-mode/css-mode /home/rrt/.emacs.d/elpa/dictionary-1.8.7/link hides /usr/local/share/emacs/= 23.2.91/site-lisp/dictionary-el/link /home/rrt/.emacs.d/elpa/dictionary-1.8.7/connection hides /usr/local/share/= emacs/23.2.91/site-lisp/dictionary-el/connection /home/rrt/.emacs.d/elpa/dictionary-1.8.7/dictionary-init hides /usr/local/s= hare/emacs/23.2.91/site-lisp/dictionary-el/dictionary-init /home/rrt/.emacs.d/elpa/dictionary-1.8.7/dictionary hides /usr/local/share/= emacs/23.2.91/site-lisp/dictionary-el/dictionary /home/rrt/.emacs.d/elpa/css-mode-1.0/css-mode hides /usr/local/share/emacs/= 23.2.91/lisp/textmodes/css-mode /home/rrt/.emacs.d/elpa/ruby-mode-1.1/ruby-mode hides /usr/local/share/emac= s/23.2.91/lisp/progmodes/ruby-mode /home/rrt/.emacs.d/elpa/css-mode-1.0/css-mode hides /usr/share/emacs/site-l= isp/css-mode/css-mode /usr/local/share/emacs/23.2.91/site-lisp/auctex/tex-info hides /usr/share/e= macs/site-lisp/auctex/tex-info /usr/local/share/emacs/23.2.91/site-lisp/auctex/context-nl hides /usr/share= /emacs/site-lisp/auctex/context-nl /usr/local/share/emacs/23.2.91/site-lisp/auctex/context-en hides /usr/share= /emacs/site-lisp/auctex/context-en /usr/local/share/emacs/23.2.91/site-lisp/auctex/latex hides /usr/share/emac= s/site-lisp/auctex/latex /usr/local/share/emacs/23.2.91/site-lisp/auctex/tex-mik hides /usr/share/em= acs/site-lisp/auctex/tex-mik /usr/local/share/emacs/23.2.91/site-lisp/dictionary-el/lpath hides /usr/sha= re/emacs/site-lisp/auctex/lpath /usr/local/share/emacs/23.2.91/site-lisp/auctex/tex-buf hides /usr/share/em= acs/site-lisp/auctex/tex-buf /usr/local/share/emacs/23.2.91/site-lisp/auctex/tex-jp hides /usr/share/ema= cs/site-lisp/auctex/tex-jp /usr/local/share/emacs/23.2.91/site-lisp/auctex/tex-bar hides /usr/share/em= acs/site-lisp/auctex/tex-bar /usr/local/share/emacs/23.2.91/site-lisp/auctex/tex hides /usr/share/emacs/= site-lisp/auctex/tex /usr/local/share/emacs/23.2.91/site-lisp/auctex/multi-prompt hides /usr/sha= re/emacs/site-lisp/auctex/multi-prompt /usr/local/share/emacs/23.2.91/site-lisp/auctex/tex-fptex hides /usr/share/= emacs/site-lisp/auctex/tex-fptex /usr/local/share/emacs/23.2.91/site-lisp/auctex/tex-font hides /usr/share/e= macs/site-lisp/auctex/tex-font /usr/local/share/emacs/23.2.91/site-lisp/auctex/tex-fold hides /usr/share/e= macs/site-lisp/auctex/tex-fold /usr/local/share/emacs/23.2.91/site-lisp/auctex/texmathp hides /usr/share/e= macs/site-lisp/auctex/texmathp /usr/local/share/emacs/23.2.91/site-lisp/auctex/context hides /usr/share/em= acs/site-lisp/auctex/context /usr/local/share/emacs/23.2.91/site-lisp/auctex/font-latex hides /usr/share= /emacs/site-lisp/auctex/font-latex /usr/local/share/emacs/23.2.91/site-lisp/auctex/bib-cite hides /usr/share/e= macs/site-lisp/auctex/bib-cite /usr/local/share/emacs/23.2.91/site-lisp/auctex/toolbar-x hides /usr/share/= emacs/site-lisp/auctex/toolbar-x /usr/local/share/emacs/23.2.91/site-lisp/auctex/tex-style hides /usr/share/= emacs/site-lisp/auctex/tex-style Features: (shadow sort mail-extr message sendmail ecomplete rfc822 mml mml-sec password-cache mm-decode mm-bodies mm-encode mailcap mail-parse rfc2231 rfc2047 rfc2045 qp ietf-drums mailabbrev nnheader gnus-util netrc time-date mm-util mail-prsvr gmm-utils mailheader canlock sha1 hex-util hashcash mail-utils emacsbug vc-git pp help-mode view ansi-color shell jka-compr info face-remap filladapt flyspell completing-help recentf tree-widget wid-edit uniquify paren savehist minibuf-eldef iswitchb icomplete whitespace autorevert time cus-start cus-load desktop server php-mode etags cc-langs cc-mode cc-fonts cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs speedbar sb-image ezimage dframe lua-mode regexp-opt comint ring ropemacs pymacs etags-update smart-quotes ispell auto-dictionary-autoloads css-mode-autoloads dictionary-autoloads diff-git-autoloads dired-isearch-autoloads full-ack-autoloads guess-style-autoloads http-post-simple-autoloads js2-mode-autoloads magit-autoloads mv-shell-autoloads ruby-mode-autoloads package reporter advice advice-preload yasnippet help-fns derived edmacro kmacro easymenu assoc cl cl-19 muse-autoloads emacs-goodies-el emacs-goodies-custom emacs-goodies-loaddefs easy-mmode bbdb-autoloads preview-latex tex-site auto-loads tooltip ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd font-setting tool-bar dnd fontset image fringe lisp-mode register page menu-bar rfn-eshadow timer select scroll-bar mldrag 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 loaddefs button minibuffer faces cus-face files text-properties overlay md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote make-network-process dbusbind system-font-setting font-render-setting gtk x-toolkit x multi-tty emacs) --=20 http://rrt.sc3d.org/ From debbugs-submit-bounces@debbugs.gnu.org Mon May 27 03:45:49 2013 Received: (at 7899) by debbugs.gnu.org; 27 May 2013 07:45:49 +0000 Received: from localhost ([127.0.0.1]:36106 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Ugs7o-0004tz-2B for submit@debbugs.gnu.org; Mon, 27 May 2013 03:45:48 -0400 Received: from blu0-omc1-s5.blu0.hotmail.com ([65.55.116.16]:6638) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Ugs7l-0004tf-1z for 7899@debbugs.gnu.org; Mon, 27 May 2013 03:45:46 -0400 Received: from BLU0-SMTP204 ([65.55.116.9]) by blu0-omc1-s5.blu0.hotmail.com with Microsoft SMTPSVC(6.0.3790.4675); Mon, 27 May 2013 00:44:28 -0700 X-EIP: [Q0gD7MG1Rr70IcrmRT9FBCL16U35x414] X-Originating-Email: [pete.beardmore@msn.com] Message-ID: Received: from elservo.lemondedelabarbe ([93.97.95.47]) by BLU0-SMTP204.phx.gbl over TLS secured channel with Microsoft SMTPSVC(6.0.3790.4675); Mon, 27 May 2013 00:44:26 -0700 Received: by elservo.lemondedelabarbe (Postfix, from userid 80) id A6582140C7A; Mon, 27 May 2013 08:44:25 +0100 (BST) Received: from elbeardo.lemondedelabarbe (elbeardo.lemondedelabarbe [10.0.0.5]) by elservo.lemondedelabarbe (Horde Framework) with HTTP; Mon, 27 May 2013 08:44:25 +0100 Date: Mon, 27 May 2013 08:44:25 +0100 From: Pete Beardmore To: 7899@debbugs.gnu.org Subject: bug#7899 Unsatisfactory interaction between shell-mode-hook and comint-read-input-ring User-Agent: Internet Messaging Program (IMP) H5 (6.0.4) Content-Type: multipart/mixed; boundary="=_1u-lG5sBzdOGXxkkad3Pjw1" MIME-Version: 1.0 X-OriginalArrivalTime: 27 May 2013 07:44:27.0025 (UTC) FILETIME=[03861010:01CE5AAE] X-Spam-Score: 0.8 (/) X-Debbugs-Envelope-To: 7899 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) --=_1u-lG5sBzdOGXxkkad3Pjw1 Content-Type: text/plain; charset="UTF-8"; format=flowed; delsp=Yes Content-Disposition: inline [patches against bzr master attached (hopefully!)] hi, i believe this is a bug in comint-read-input-ring. shell-mode sets a buffer-local version of comint-read-input-size which is effectively ignored due to comint-read-input-ring's use of '(with-temp-buffer ...' . i've lost ~40000 line bash history on more than one occasion over the last several years and am elated to have finally pinned the problem on something (very loosely) related to this issue is the question of why the default of 'comint-input-history-ignore' is set to anything at all? it's currently "^#", and therefore without having pro-actively made any changes to their emacs setup, a user's shell history (for instance) doesn't emerge unscathed from a trip through comint if it contains comments. if modifying this default touches too many other comint uses, perhaps an override in shell-mode.el? cheers, Pete --=_1u-lG5sBzdOGXxkkad3Pjw1 Content-Type: text/x-patch; charset="us-ascii"; name*0="0001.comint_.ensure.buffer.local.comint-input-ring-read-size.variabl"; name*1="e.is.visible.throughout.input-read-ring.diff" Content-Disposition: attachment; filename*0= "0001.comint_.ensure.buffer.local.comint-input-ring-read-size.var"; filename*1="iable.is.visible.throughout.input-read-ring.diff"; size=1582 #------------------------------------------------------------ #revno: 112736 #committer: Pete Beardmore #branch nick: bzr #timestamp: Mon 2013-05-27 07:53:30 +0100 #message: # comint: ensure buffer local comint-input-ring-read-size variable is visible throughout input-read-ring logic === modified file 'lisp/comint.el' --- lisp/comint.el 2013-05-25 02:40:33 +0000 +++ lisp/comint.el 2013-05-27 06:53:30 +0000 @@ -938,6 +938,7 @@ ;; to huge numbers. Don't allocate a huge ring right ;; away; there might not be that much history. (ring-size (min 1500 comint-input-ring-size)) + (ring-size-max (max 1500 comint-input-ring-size)) (ring (make-ring ring-size))) (with-temp-buffer (insert-file-contents file) @@ -945,7 +946,7 @@ ;; Watch for those date stamps in history files! (goto-char (point-max)) (let (start end history) - (while (and (< count comint-input-ring-size) + (while (and (< count ring-size-max) (re-search-backward comint-input-ring-separator nil t) (setq end (match-beginning 0))) @@ -963,7 +964,7 @@ (not (string-equal (ring-ref ring 0) history)))) (when (= count ring-size) - (ring-extend ring (min (- comint-input-ring-size ring-size) + (ring-extend ring (min (- ring-size-max ring-size) ring-size)) (setq ring-size (ring-size ring))) (ring-insert-at-beginning ring history) --=_1u-lG5sBzdOGXxkkad3Pjw1 Content-Type: text/x-patch; charset="us-ascii"; name*0="0001.comint_.don't.strip.anything.by.default.on.comint-input-ring-re"; name*1="ad.diff" Content-Disposition: attachment; filename*0= "0001.comint_.don't.strip.anything.by.default.on.comint-input-rin"; filename*1="g-read.diff"; size=715 #------------------------------------------------------------ #revno: 112737 #committer: Pete Beardmore #branch nick: bzr #timestamp: Mon 2013-05-27 08:12:04 +0100 #message: # comint: don't strip anything by default on comint-input-ring-read === modified file 'lisp/comint.el' --- lisp/comint.el 2013-05-27 06:53:30 +0000 +++ lisp/comint.el 2013-05-27 07:12:04 +0000 @@ -318,7 +318,7 @@ (defvar comint-input-ring-separator "\n" "Separator between commands in the history file.") -(defvar comint-input-history-ignore "^#" +(defvar comint-input-history-ignore "" "Regexp for history entries that should be ignored when Comint initializes.") (defcustom comint-process-echoes nil --=_1u-lG5sBzdOGXxkkad3Pjw1-- From debbugs-submit-bounces@debbugs.gnu.org Thu May 30 08:57:03 2013 Received: (at 7899) by debbugs.gnu.org; 30 May 2013 12:57:04 +0000 Received: from localhost ([127.0.0.1]:41784 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Ui2Pa-0005Bj-Hw for submit@debbugs.gnu.org; Thu, 30 May 2013 08:57:03 -0400 Received: from blu0-omc1-s31.blu0.hotmail.com ([65.55.116.42]:34541) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Ui2PL-0005Al-7U for 7899@debbugs.gnu.org; Thu, 30 May 2013 08:56:51 -0400 Received: from BLU0-SMTP7 ([65.55.116.7]) by blu0-omc1-s31.blu0.hotmail.com with Microsoft SMTPSVC(6.0.3790.4675); Thu, 30 May 2013 05:55:06 -0700 X-EIP: [xhDw84lSxC46ruYMRCgtDHoi2x1NJLz/] X-Originating-Email: [pete.beardmore@msn.com] Message-ID: Received: from elservo.lemondedelabarbe ([93.97.95.47]) by BLU0-SMTP7.phx.gbl over TLS secured channel with Microsoft SMTPSVC(6.0.3790.4675); Thu, 30 May 2013 05:55:05 -0700 Received: by elservo.lemondedelabarbe (Postfix, from userid 80) id 35BAB140C6D; Thu, 30 May 2013 13:55:04 +0100 (BST) Received: from elbeardo.lemondedelabarbe (elbeardo.lemondedelabarbe [10.0.0.5]) by elservo.lemondedelabarbe (Horde Framework) with HTTP; Thu, 30 May 2013 13:55:03 +0100 Date: Thu, 30 May 2013 13:55:03 +0100 From: Pete Beardmore To: 7899@debbugs.gnu.org Subject: Re: bug#7899: Unsatisfactory interaction between shell-mode-hook and comint-read-input-ring References: <87y66b3042.fsf@sc3d.org> In-Reply-To: User-Agent: Internet Messaging Program (IMP) H5 (6.0.4) Content-Type: multipart/mixed; boundary="=_vtE9f0MKYXtD35YXUxzlpw4" MIME-Version: 1.0 X-OriginalArrivalTime: 30 May 2013 12:55:05.0784 (UTC) FILETIME=[E8543B80:01CE5D34] X-Spam-Score: 0.8 (/) X-Debbugs-Envelope-To: 7899 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) --=_vtE9f0MKYXtD35YXUxzlpw4 Content-Type: text/plain; charset="UTF-8"; format=flowed; delsp=Yes Content-Disposition: inline Quoting Pete Beardmore : > [patches against bzr master attached (hopefully!)] > > hi, > > i believe this is a bug in comint-read-input-ring. shell-mode sets a > buffer-local version of comint-read-input-size which is effectively > ignored due to comint-read-input-ring's use of '(with-temp-buffer > ...' . i've lost ~40000 line bash history on more than one occasion > over the last several years and am elated to have finally pinned the > problem on something > > (very loosely) related to this issue is the question of why the > default of 'comint-input-history-ignore' is set to anything at all? > it's currently "^#", and therefore without having pro-actively made > any changes to their emacs setup, a user's shell history (for > instance) doesn't emerge unscathed from a trip through comint if it > contains comments. if modifying this default touches too many other > comint uses, perhaps an override in shell-mode.el? > > cheers, > Pete [patches attached superseed previous patches] hello, patch 1: i've extended the original fix for ignoring buffer-local variables to incorporate 'comint-input-ring-separator', 'comint-input-history-ignore' and 'comint-input-ignoredups' vars which suffered from the same issue patch 2: as before, but note that this request to change the default 'comint-input-history-ignore' from '^#' to '' exposed another bug in the 'comint-read-input-ring' code. see patch 3 patch 3: if 'comint-input-history-ignore' is set to "" (not 'nil' as we're using string-match), string-match will always return 0 ..and as this isn't nil, all potential items are dropped as they match the ignore string. i'll leave 'patch 2' as a request, but the fix for this bug is a necessity i think as there's nothing stopping users setting ignore to "" as it stands, and that causes issues patch 4, the ignore-dupes functionality didn't work at all*. the comparison of the current item (to be placed into the ring) was being made against (ring-ref ring 0) ..which is static, and not the last item we added as is needed here. the docs on 'ring-insert-at-beginning'/'ring-insert'/'ring-ref' would confuse anyone on first glance (in defense of whoever slipped here initially) *it does 'work' if the only dupes in the file are all adjacent and equal to the last item cheers, Pete ps. there's still a nasty mix of tabs/space formatting in 'comint-read-input-ring'. i harmonised only the block i touched --=_vtE9f0MKYXtD35YXUxzlpw4 Content-Type: text/x-patch; charset="us-ascii"; name*0="0001.comint_.ensure.buffer.local.comint-input-ring-_.variables.are.v"; name*1="isible.through.input-read-ring.logic.diff" Content-Disposition: attachment; filename*0= "0001.comint_.ensure.buffer.local.comint-input-ring-_.variables.a"; filename*1="re.visible.through.input-read-ring.logic.diff"; size=3199 #------------------------------------------------------------ #revno: 112736 #committer: Pete Beardmore #branch nick: bzr #timestamp: Thu 2013-05-30 13:17:39 +0100 #message: # comint: ensure buffer local comint-input-ring-* variables are visible through input-read-ring logic === modified file 'lisp/comint.el' --- lisp/comint.el 2013-05-25 02:40:33 +0000 +++ lisp/comint.el 2013-05-30 12:17:39 +0000 @@ -938,33 +938,33 @@ ;; to huge numbers. Don't allocate a huge ring right ;; away; there might not be that much history. (ring-size (min 1500 comint-input-ring-size)) - (ring (make-ring ring-size))) - (with-temp-buffer - (insert-file-contents file) - ;; Save restriction in case file is already visited... - ;; Watch for those date stamps in history files! - (goto-char (point-max)) - (let (start end history) - (while (and (< count comint-input-ring-size) - (re-search-backward comint-input-ring-separator - nil t) - (setq end (match-beginning 0))) - (setq start - (if (re-search-backward comint-input-ring-separator - nil t) - (match-end 0) - (point-min))) - (setq history (buffer-substring start end)) - (goto-char start) - (when (and (not (string-match comint-input-history-ignore - history)) - (or (null comint-input-ignoredups) - (ring-empty-p ring) - (not (string-equal (ring-ref ring 0) - history)))) + (ring-size-max (max 1500 comint-input-ring-size)) + (ring (make-ring ring-size)) + (ring-separator comint-input-ring-separator) + (ignore comint-input-history-ignore) + (ignoredups comint-input-ignoredups)) + (with-temp-buffer + (insert-file-contents file) + ;; Save restriction in case file is already visited... + ;; Watch for those date stamps in history files! + (goto-char (point-max)) + (let (start end history) + (while (and (< count ring-size-max) + (re-search-backward ring-separator nil t) + (setq end (match-beginning 0))) + (setq start + (if (re-search-backward ring-separator nil t) + (match-end 0) + (point-min))) + (setq history (buffer-substring start end)) + (goto-char start) + (when (and (not (string-match ignore history)) + (or (null ignoredups) + (ring-empty-p ring) + (not (string-equal (ring-ref ring 0) + history)))) (when (= count ring-size) - (ring-extend ring (min (- comint-input-ring-size ring-size) - ring-size)) + (ring-extend ring (min (- ring-size-max ring-size) ring-size)) (setq ring-size (ring-size ring))) (ring-insert-at-beginning ring history) (setq count (1+ count)))))) --=_vtE9f0MKYXtD35YXUxzlpw4 Content-Type: text/x-patch; charset="us-ascii"; name*0="0002.comint_.don't.strip.anything.by.default.on.comint-input-ring-re"; name*1="ad.diff" Content-Disposition: attachment; filename*0= "0002.comint_.don't.strip.anything.by.default.on.comint-input-rin"; filename*1="g-read.diff"; size=715 #------------------------------------------------------------ #revno: 112737 #committer: Pete Beardmore #branch nick: bzr #timestamp: Thu 2013-05-30 13:20:40 +0100 #message: # comint: don't strip anything by default on comint-input-ring-read === modified file 'lisp/comint.el' --- lisp/comint.el 2013-05-30 12:17:39 +0000 +++ lisp/comint.el 2013-05-30 12:20:40 +0000 @@ -318,7 +318,7 @@ (defvar comint-input-ring-separator "\n" "Separator between commands in the history file.") -(defvar comint-input-history-ignore "^#" +(defvar comint-input-history-ignore "" "Regexp for history entries that should be ignored when Comint initializes.") (defcustom comint-process-echoes nil --=_vtE9f0MKYXtD35YXUxzlpw4 Content-Type: text/x-patch; charset="us-ascii"; name="0003.comint_.don't.match.an.empty.ignore.string.diff" Content-Disposition: attachment; filename="0003.comint_.don't.match.an.empty.ignore.string.diff"; size=840 #------------------------------------------------------------ #revno: 112738 #committer: Pete Beardmore #branch nick: bzr #timestamp: Thu 2013-05-30 13:29:26 +0100 #message: # comint: don't match an empty ignore string === modified file 'lisp/comint.el' --- lisp/comint.el 2013-05-30 12:20:40 +0000 +++ lisp/comint.el 2013-05-30 12:29:26 +0000 @@ -958,7 +958,8 @@ (point-min))) (setq history (buffer-substring start end)) (goto-char start) - (when (and (not (string-match ignore history)) + (when (and (or (= (length ignore) 0) + (not (string-match ignore history))) (or (null ignoredups) (ring-empty-p ring) (not (string-equal (ring-ref ring 0) --=_vtE9f0MKYXtD35YXUxzlpw4 Content-Type: text/x-patch; charset="us-ascii"; name="0004.comint_.fix.ignore-dupe.functionality.diff" Content-Disposition: attachment; filename="0004.comint_.fix.ignore-dupe.functionality.diff"; size=841 #------------------------------------------------------------ #revno: 112739 #committer: Pete Beardmore #branch nick: bzr #timestamp: Thu 2013-05-30 13:31:52 +0100 #message: # comint: fix ignore-dupe functionality === modified file 'lisp/comint.el' --- lisp/comint.el 2013-05-30 12:29:26 +0000 +++ lisp/comint.el 2013-05-30 12:31:52 +0000 @@ -962,7 +962,7 @@ (not (string-match ignore history))) (or (null ignoredups) (ring-empty-p ring) - (not (string-equal (ring-ref ring 0) + (not (string-equal (ring-ref ring (1- count)) history)))) (when (= count ring-size) (ring-extend ring (min (- ring-size-max ring-size) ring-size)) --=_vtE9f0MKYXtD35YXUxzlpw4-- From debbugs-submit-bounces@debbugs.gnu.org Thu Nov 19 00:08:49 2020 Received: (at control) by debbugs.gnu.org; 19 Nov 2020 05:08:49 +0000 Received: from localhost ([127.0.0.1]:37593 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kfcBd-0000mF-Ca for submit@debbugs.gnu.org; Thu, 19 Nov 2020 00:08:49 -0500 Received: from mail-ej1-f53.google.com ([209.85.218.53]:33919) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kfcBb-0000ls-3L for control@debbugs.gnu.org; Thu, 19 Nov 2020 00:08:48 -0500 Received: by mail-ej1-f53.google.com with SMTP id o9so6099775ejg.1 for ; Wed, 18 Nov 2020 21:08:47 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:mime-version:date:message-id:subject:to; bh=17ssgv1/LD8ZRFRMlyGuqPAjLqyA9m+8BMJw/YwKxBc=; b=ZwhGFdiM0rH1z5kFoCwLikKd3DTboX7x9b565iueDtTTn/j8WyrvGv8xGVC1LQ0NEV UNPrtC5W829t4BUimovjquEIvymrpszjxFk9tfv3QCvaYfmS5KvLqXVbDwymYZw6MENq 9mMSD9YzgNcDz9q/ViviRPbEVxgq6Sk/vdy2pvVpX64hlQwaHkHtCkm3Vk4Eb2UIh/0n pUjOQ0BzqMPZ3LOe2TfO4I4Vmau4fCu2rSyrNlRBgccW62ZqwWdxQnesN4x+xedzbPK4 PfwEbJeeY4ORzlwRmYQD/lLMldz6muvdrYmzyv9omiOc6K6qLEzgVHlfARvIhkMLQcqQ g6cg== X-Gm-Message-State: AOAM530Bd2STmCoWs4LxDxbFHFFDIt8wyNzetq8/UB0zFB4XeMUfYYj3 3EbKntEOUkxVCCDo+xN4Bfm+W3WZMekxvXhq4fFZuyzIZWU= X-Google-Smtp-Source: ABdhPJw9pgeHEnm2Gbd9uAwviapG1ZouPFzQT0uTKySuBb5Nh1vCfeFw6ufPGJplqZD5LFZK9z9mQ43C7iQPAHr5/rg= X-Received: by 2002:a17:906:4e90:: with SMTP id v16mr28137044eju.477.1605762520164; Wed, 18 Nov 2020 21:08:40 -0800 (PST) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Wed, 18 Nov 2020 21:08:39 -0800 From: Stefan Kangas MIME-Version: 1.0 Date: Wed, 18 Nov 2020 21:08:39 -0800 Message-ID: Subject: To: control@debbugs.gnu.org Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 2.5 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: tags 7899 + patch thanks Content analysis details: (2.5 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.2 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.218.53 listed in list.dnswl.org] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stefankangas[at]gmail.com) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [209.85.218.53 listed in wl.mailspike.net] 0.0 UNPARSEABLE_RELAY Informational: message has unparseable relay lines 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders 2.0 BLANK_SUBJECT Subject is present but empty 0.2 FREEMAIL_FORGED_FROMDOMAIN 2nd level domains in From and EnvelopeFrom freemail headers are different X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.5 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: tags 7899 + patch thanks Content analysis details: (1.5 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [209.85.218.53 listed in wl.mailspike.net] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.218.53 listed in list.dnswl.org] 0.2 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stefankangas[at]gmail.com) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record 0.0 UNPARSEABLE_RELAY Informational: message has unparseable relay lines 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders 2.0 BLANK_SUBJECT Subject is present but empty -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager 0.2 FREEMAIL_FORGED_FROMDOMAIN 2nd level domains in From and EnvelopeFrom freemail headers are different tags 7899 + patch thanks From debbugs-submit-bounces@debbugs.gnu.org Mon May 10 07:17:00 2021 Received: (at 7899) by debbugs.gnu.org; 10 May 2021 11:17:00 +0000 Received: from localhost ([127.0.0.1]:57501 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lg3uG-0005aU-Iy for submit@debbugs.gnu.org; Mon, 10 May 2021 07:17:00 -0400 Received: from quimby.gnus.org ([95.216.78.240]:33994) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lg3uF-0005Ve-5f for 7899@debbugs.gnu.org; Mon, 10 May 2021 07:16:59 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=jUDYLvbRJzcYgbIhg1cG1wMVWSItzvdYyGGTuvL/EVs=; b=j1CRPWw+7nCtCpx5sRkFLHSeGc QdHb9InTSUy5enBFiAgyhRMxPpTsgnIQZdUiyfWuZNDAV/x26cijNPUJz4uUVNpXiNOf7+xzjOOvW NDcWNWzAZy7R1QMJJr4+AbiiDK4fFHIDmoKcSTfQSF6Yh1b01AwkN8ydOLbulRu9Db+g=; Received: from cm-84.212.220.105.getinternet.no ([84.212.220.105] helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lg3u7-0007Nx-1Y; Mon, 10 May 2021 13:16:53 +0200 From: Lars Ingebrigtsen To: Pete Beardmore Subject: Re: bug#7899: 23.2.91; Unsatisfactory interaction between shell-mode-hook and comint-read-input-ring References: <87y66b3042.fsf@sc3d.org> X-Now-Playing: Severed Heads's _Gigapus_: "Arrivederci Coma" Date: Mon, 10 May 2021 13:16:50 +0200 In-Reply-To: (Pete Beardmore's message of "Thu, 30 May 2013 13:55:03 +0100") Message-ID: <87bl9iu9ct.fsf_-_@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: Pete Beardmore writes: > patch 1: > i've extended the original fix for ignoring buffer-local variables to > incorporate 'comint-input-ring-separator', > 'comint-input-history-ignore' and 'comint-input-ignoredups' vars which [...] Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 7899 Cc: 7899@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Pete Beardmore writes: > patch 1: > i've extended the original fix for ignoring buffer-local variables to > incorporate 'comint-input-ring-separator', > 'comint-input-history-ignore' and 'comint-input-ignoredups' vars which > suffered from the same issue Thanks for the patch -- it seems like it didn't receive any attention at the time (seven years ago), unfortunately. And if I'm reading the commit logs correctly, this was fixed in 2019 in a slightly different way in commit 9b54d2b66e1e, so I'm closing this bug report. If there's still something to be worked on here, please respond to the debbugs address, and we'll reopne. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Mon May 10 07:17:06 2021 Received: (at control) by debbugs.gnu.org; 10 May 2021 11:17:06 +0000 Received: from localhost ([127.0.0.1]:57505 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lg3uL-0005fB-Q4 for submit@debbugs.gnu.org; Mon, 10 May 2021 07:17:06 -0400 Received: from quimby.gnus.org ([95.216.78.240]:34008) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lg3uK-0005Zd-QS for control@debbugs.gnu.org; Mon, 10 May 2021 07:17:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Subject:From:To:Message-Id:Date:Sender:Reply-To:Cc: MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=G8JADbC9PAZ18DVzxutpLl0NIBAVn40opeBL5fmW3ag=; b=p6x+7TTj3OZOyH6v1MJG2y/gGb ETOjsyibWdxcvuYCneNi7RmAYx9aLuEHG1WYXpQBaaN7KkSqOfkNJlnKS+K/61QXPvI5w1sgWSToi pIR4KGvv9kmUkX1050PnIklcLteZzEwI5Glf/ekzqrySZppdI6kD8LwmYyHBn6Ozc1qc=; Received: from cm-84.212.220.105.getinternet.no ([84.212.220.105] helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lg3uD-0007O9-Da for control@debbugs.gnu.org; Mon, 10 May 2021 13:16:59 +0200 Date: Mon, 10 May 2021 13:16:56 +0200 Message-Id: <87a6p2u9cn.fsf@gnus.org> To: control@debbugs.gnu.org From: Lars Ingebrigtsen Subject: control message for bug #7899 X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: close 7899 quit Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) close 7899 quit From unknown Tue Aug 19 21:04:02 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Mon, 07 Jun 2021 11:24:09 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator