emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: address@hidden: EVAL and mouse selection in *Completions*]


From: Chong Yidong
Subject: Re: address@hidden: EVAL and mouse selection in *Completions*]
Date: Mon, 05 Mar 2007 22:12:11 -0500
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.95 (gnu/linux)

Glenn Morris <address@hidden> writes:

> Richard Stallman wrote:
>
>> Would someone please fix this, then ack?
>>
>> 1. M-:
>> (setq indent- <TAB>
>>
>> select with the mouse indent-tabs-mode
>>
>> In the minibuffer appears just indent-tabs-mode.
>>
> This bug was already mentioned by Martin Rudalics in reply to your
> mail "address@hidden: Partial completion]" of Feb
> 24th. 
>
> I suggest the following fix, but it seems both this bug and the other
> one need input from the OPs (or those who use partial completion), to
> test that the suggested fixes do not break anything else.

This bug does not refer to partial completion: it happens even for the
ordinary completion mechanism.  The basic problem is that
completion-base-size is set to 0 for minibuffer input, whereas we want
it to be nil when completing a symbol.

The following is the minimal fix I've managed to find.  I don't know
if a less invasive change is possible.

*** emacs/lisp/simple.el.~1.847.~       2007-03-05 09:28:25.000000000 -0500
--- emacs/lisp/simple.el        2007-03-05 21:46:47.000000000 -0500
***************
*** 1056,1064 ****
  If `eval-expression-debug-on-error' is non-nil, which is the default,
  this command arranges for all errors to enter the debugger."
    (interactive
!    (list (read-from-minibuffer "Eval: "
                               nil read-expression-map t
!                              'read-expression-history)
         current-prefix-arg))
  
    (if (null eval-expression-debug-on-error)
--- 1056,1065 ----
  If `eval-expression-debug-on-error' is non-nil, which is the default,
  this command arranges for all errors to enter the debugger."
    (interactive
!    (list (let ((minibuffer-completing-symbol t))
!          (read-from-minibuffer "Eval: "
                               nil read-expression-map t
!                              'read-expression-history))
         current-prefix-arg))
  
    (if (null eval-expression-debug-on-error)
***************
*** 5109,5114 ****
--- 5110,5117 ----
                (save-excursion
                  (skip-chars-backward completion-root-regexp)
                  (- (point) (minibuffer-prompt-end)))))
+            (minibuffer-completing-symbol
+             nil)
             ;; Otherwise, in minibuffer, the base size is 0.
             ((minibufferp mainbuf) 0)))
        (setq common-string-length
*** emacs/src/minibuf.c.~1.326.~        2007-02-23 11:24:42.000000000 -0500
--- emacs/src/minibuf.c 2007-03-05 21:46:15.000000000 -0500
***************
*** 139,144 ****
--- 139,145 ----
  Lisp_Object Vminibuffer_completion_predicate, 
Qminibuffer_completion_predicate;
  Lisp_Object Vminibuffer_completion_confirm, Qminibuffer_completion_confirm;
  Lisp_Object Vminibuffer_completing_file_name;
+ Lisp_Object Vminibuffer_completing_symbol;
  
  Lisp_Object Quser_variable_p;
  
***************
*** 2929,2934 ****
--- 2930,2940 ----
               doc: /* Non-nil and non-`lambda' means completing file names.  
*/);
    Vminibuffer_completing_file_name = Qnil;
  
+   DEFVAR_LISP ("minibuffer-completing-symbol",
+              &Vminibuffer_completing_symbol,
+              doc: /* Non-nil means completing a Lisp symbol in the 
minibuffer.  */);
+   Vminibuffer_completing_symbol = Qnil;
+ 
    DEFVAR_LISP ("minibuffer-help-form", &Vminibuffer_help_form,
               doc: /* Value that `help-form' takes on inside the minibuffer.  
*/);
    Vminibuffer_help_form = Qnil;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]