Package: emacs;
Reported by: Jambunathan K <kjambunathan <at> gmail.com>
Date: Sat, 13 Oct 2012 17:33:01 UTC
Severity: wishlist
Found in version 24.2.50
Done: Jambunathan K <kjambunathan <at> gmail.com>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: Jambunathan K <kjambunathan <at> gmail.com> To: Stefan Monnier <monnier <at> iro.umontreal.ca> Cc: 12638 <at> debbugs.gnu.org Subject: bug#12638: 24.2.50; FR: Some suggestions for icomplete-mode Date: Fri, 02 Nov 2012 17:42:27 +0530
Jambunathan K <kjambunathan <at> gmail.com> writes: > 1. `minibuffer-summarize-completions' is meant as a replacement for > `icomplete-exhibit'. As the name suggests, it is meant to go in to > minibuffer.el. It's presence in minibuffer.el proved problematic > (details in followup mail) and I had to move it to icomplete.el. 0. In my earlier patch, remove `minibuffer-summarize-completions' from icomplete.el and shift it enbloc to minibuffer.el. Compile and re-load. emacs -Q 1. M-x icomplete-mode RET 2. M-x load-1 3. See the following error message echoed. ,---- | Icomplete mode enabled | | Error in post-command-hook (#[nil \301\302\303!)\207 [non-essential t | run-hooks icomplete-post-command-hook] 2]): (error "Attempt to modify | read-only object") `---- 4. If I grep for the above error text, it happens in --8<---------------cut here---------------start------------->8--- -*- mode: grep; default-directory: "~/src/emacs/trunk/src/" -*- Grep started at Fri Nov 2 17:35:44 find . -type d \( -path \*/SCCS -o -path \*/RCS -o -path \*/CVS -o -path \*/MCVS -o -path \*/.svn -o -path \*/.git -o -path \*/.hg -o -path \*/.bzr -o -path \*/_MTN -o -path \*/_darcs -o -path \*/\{arch\} \) -prune -o \! -type d \( -name .\#\* -o -name \*.o -o -name \*\~ -o -name \*.bin -o -name \*.lbin -o -name \*.so -o -name \*.a -o -name \*.ln -o -name \*.blg -o -name \*.bbl -o -name \*.elc -o -name \*.lof -o -name \*.glo -o -name \*.idx -o -name \*.lot -o -name \*.fmt -o -name \*.tfm -o -name \*.class -o -name \*.fas -o -name \*.lib -o -name \*.mem -o -name \*.x86f -o -name \*.sparcf -o -name \*.dfsl -o -name \*.pfsl -o -name \*.d64fsl -o -name \*.p64fsl -o -name \*.lx64fsl -o -name \*.lx32fsl -o -name \*.dx64fsl -o -name \*.dx32fsl -o -name \*.fx64fsl -o -name \*.fx32fsl -o -name \*.sx64fsl -o -name \*.sx32fsl -o -name \*.wx64fsl -o -name \*.wx32fsl -o -name \*.fasl -o -name \*.ufsl -o -name \*.fsl -o -name \*.dxl -o -name \*.lo -o -name \*.la -o -name \*.gmo -o -name \*.mo -o -name \*.toc -o -name \*.aux -o -name \*.cp -o -name \*.fn -o -name \*.ky -o -name \*.pg -o -name \*.tp -o -name \*.vr -o -name \*.cps -o -name \*.fns -o -name \*.kys -o -name \*.pgs -o -name \*.tps -o -name \*.vrs -o -name \*.pyc -o -name \*.pyo \) -prune -o -type f \( -name \*.\[ch\] \) -exec grep -nH -e Attempt\ to\ modify\ read-only\ object {} + ./data.c:104: error ("Attempt to modify read-only object"); Grep finished (matches found) at Fri Nov 2 17:35:44 --8<---------------cut here---------------end--------------->8--- which is --8<---------------cut here---------------start------------->8--- void pure_write_error (void) { error ("Attempt to modify read-only object"); } --8<---------------cut here---------------end--------------->8--- this in turn leads to --8<---------------cut here---------------start------------->8--- -*- mode: grep; default-directory: "~/src/emacs/trunk/src/" -*- Grep started at Fri Nov 2 17:37:03 find . -type d \( -path \*/SCCS -o -path \*/RCS -o -path \*/CVS -o -path \*/MCVS -o -path \*/.svn -o -path \*/.git -o -path \*/.hg -o -path \*/.bzr -o -path \*/_MTN -o -path \*/_darcs -o -path \*/\{arch\} \) -prune -o \! -type d \( -name .\#\* -o -name \*.o -o -name \*\~ -o -name \*.bin -o -name \*.lbin -o -name \*.so -o -name \*.a -o -name \*.ln -o -name \*.blg -o -name \*.bbl -o -name \*.elc -o -name \*.lof -o -name \*.glo -o -name \*.idx -o -name \*.lot -o -name \*.fmt -o -name \*.tfm -o -name \*.class -o -name \*.fas -o -name \*.lib -o -name \*.mem -o -name \*.x86f -o -name \*.sparcf -o -name \*.dfsl -o -name \*.pfsl -o -name \*.d64fsl -o -name \*.p64fsl -o -name \*.lx64fsl -o -name \*.lx32fsl -o -name \*.dx64fsl -o -name \*.dx32fsl -o -name \*.fx64fsl -o -name \*.fx32fsl -o -name \*.sx64fsl -o -name \*.sx32fsl -o -name \*.wx64fsl -o -name \*.wx32fsl -o -name \*.fasl -o -name \*.ufsl -o -name \*.fsl -o -name \*.dxl -o -name \*.lo -o -name \*.la -o -name \*.gmo -o -name \*.mo -o -name \*.toc -o -name \*.aux -o -name \*.cp -o -name \*.fn -o -name \*.ky -o -name \*.pg -o -name \*.tp -o -name \*.vr -o -name \*.cps -o -name \*.fns -o -name \*.kys -o -name \*.pgs -o -name \*.tps -o -name \*.vrs -o -name \*.pyc -o -name \*.pyo \) -prune -o -type f \( -name \*.\[ch\] \) -exec grep -nH -e CHECK_IMPURE {} + ./puresize.h:74:#define CHECK_IMPURE(obj) \ ./intervals.c:104: CHECK_IMPURE (parent); ./keymap.c:350: CHECK_IMPURE (prev); ./keymap.c:852: CHECK_IMPURE (elt); ./keymap.c:905: CHECK_IMPURE (elt); ./keymap.c:949: CHECK_IMPURE (insertion_point); ./data.c:490: CHECK_IMPURE (cell); ./data.c:500: CHECK_IMPURE (cell); ./data.c:2120: CHECK_IMPURE (array); Grep finished (matches found) at Fri Nov 2 17:37:03 --8<---------------cut here---------------end--------------->8--- I am pretty sure the error happens during `put-overlay' and my suspect is intervals.c. ,---- from icomplete.el (See `icomplete-exhibit') | (when (stringp text) | (move-overlay icomplete-overlay (point) (point) (current-buffer)) | ;; The current C cursor code doesn't know to use the overlay's | ;; marker's stickiness to figure out whether to place the cursor | ;; before or after the string, so let's spoon-feed it the pos. | (put-text-property 0 1 'cursor t text) <=========================== | (overlay-put icomplete-overlay 'after-string text)) `---- Since this happens when the file is in minibuffer.el and the return values are "string constants", I am suspecting that some config value has to be bumped somewhere.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.