mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-17 10:27:41 +00:00
* lisp/minibuffer.el (minibuffer-inactive-mode-map): New var.
(minibuffer-inactive-mode): New major mode. * src/minibuf.c (get_minibuffer, read_minibuf_unwind): Call it. * lisp/mouse.el (mouse-drag-region): Remove the "mouse-1 pops up the *Messages* buffer" hack. (mouse-popup-menubar): Don't burp if the event is a normal key.
This commit is contained in:
parent
ec8bd86f04
commit
fd6fa53f88
6 changed files with 88 additions and 45 deletions
4
etc/NEWS
4
etc/NEWS
|
|
@ -68,6 +68,10 @@ and also when HOME is set to C:\ by default.
|
|||
|
||||
* Changes in Emacs 24.1
|
||||
|
||||
** The inactive minibuffer has its own major mode `minibuffer-inactive-mode'.
|
||||
This is handy for minibuffer-only frames, and is also used for the "mouse-1
|
||||
pops up *Messages*" feature, which can now easily be changed.
|
||||
|
||||
** emacsclient changes
|
||||
|
||||
*** New emacsclient argument --parent-id ID can be used to open a
|
||||
|
|
|
|||
|
|
@ -1,5 +1,11 @@
|
|||
2011-06-01 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* minibuffer.el (minibuffer-inactive-mode-map): New var.
|
||||
(minibuffer-inactive-mode): New major mode.
|
||||
* mouse.el (mouse-drag-region): Remove the "mouse-1 pops up
|
||||
the *Messages* buffer" hack.
|
||||
(mouse-popup-menubar): Don't burp if the event is a normal key.
|
||||
|
||||
Miscellaneous tweaks.
|
||||
* emacs-lisp/cl-macs.el (dolist, dotimes): Use the same strategy for
|
||||
lexical scoping as in subr.el's dolist and dotimes.
|
||||
|
|
|
|||
|
|
@ -1657,6 +1657,34 @@ The completion method is determined by `completion-at-point-functions'."
|
|||
(define-key map "\t" 'exit-minibuffer)
|
||||
(define-key map "?" 'self-insert-and-exit))
|
||||
|
||||
(defvar minibuffer-inactive-mode-map
|
||||
(let ((map (make-keymap)))
|
||||
(suppress-keymap map)
|
||||
(define-key map "e" 'find-file-other-frame)
|
||||
(define-key map "f" 'find-file-other-frame)
|
||||
(define-key map "b" 'switch-to-buffer-other-frame)
|
||||
(define-key map "i" 'info)
|
||||
(define-key map "m" 'mail)
|
||||
(define-key map "n" 'make-frame)
|
||||
(define-key map [mouse-1] (lambda () (interactive)
|
||||
(with-current-buffer "*Messages*"
|
||||
(goto-char (point-max))
|
||||
(display-buffer (current-buffer)))))
|
||||
;; So the global down-mouse-1 binding doesn't clutter the execution of the
|
||||
;; above mouse-1 binding.
|
||||
(define-key map [down-mouse-1] #'ignore)
|
||||
map)
|
||||
"Keymap for use in the minibuffer when it is not active.
|
||||
The non-mouse bindings in this keymap can only be used in minibuffer-only
|
||||
frames, since the minibuffer can normally not be selected when it is
|
||||
not active.")
|
||||
|
||||
(define-derived-mode minibuffer-inactive-mode nil "InactiveMinibuffer"
|
||||
:abbrev-table nil ;abbrev.el is not loaded yet during dump.
|
||||
;; Note: this major mode is called from minibuf.c.
|
||||
"Major mode to use in the minibuffer when it is not active.
|
||||
This is only used when the minibuffer area has no active minibuffer.")
|
||||
|
||||
;;; Completion tables.
|
||||
|
||||
(defun minibuffer--double-dollars (str)
|
||||
|
|
|
|||
|
|
@ -278,7 +278,7 @@ The contents are the items that would be in the menu bar whether or
|
|||
not it is actually displayed."
|
||||
(interactive "@e \nP")
|
||||
(run-hooks 'activate-menubar-hook 'menu-bar-update-hook)
|
||||
(popup-menu (mouse-menu-bar-map) event prefix))
|
||||
(popup-menu (mouse-menu-bar-map) (unless (integerp event) event) prefix))
|
||||
(make-obsolete 'mouse-popup-menubar 'mouse-menu-bar-map "23.1")
|
||||
|
||||
(defun mouse-popup-menubar-stuff (event prefix)
|
||||
|
|
@ -790,18 +790,9 @@ remains active. Otherwise, it remains until the next input event.
|
|||
|
||||
If the click is in the echo area, display the `*Messages*' buffer."
|
||||
(interactive "e")
|
||||
(let ((w (posn-window (event-start start-event))))
|
||||
(if (and (window-minibuffer-p w)
|
||||
(not (minibuffer-window-active-p w)))
|
||||
(save-excursion
|
||||
;; Swallow the up-event.
|
||||
(read-event)
|
||||
(set-buffer (get-buffer-create "*Messages*"))
|
||||
(goto-char (point-max))
|
||||
(display-buffer (current-buffer)))
|
||||
;; Give temporary modes such as isearch a chance to turn off.
|
||||
(run-hooks 'mouse-leave-buffer-hook)
|
||||
(mouse-drag-track start-event t))))
|
||||
;; Give temporary modes such as isearch a chance to turn off.
|
||||
(run-hooks 'mouse-leave-buffer-hook)
|
||||
(mouse-drag-track start-event t))
|
||||
|
||||
|
||||
(defun mouse-posn-property (pos property)
|
||||
|
|
|
|||
|
|
@ -1,3 +1,8 @@
|
|||
2011-06-01 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* minibuf.c (get_minibuffer, read_minibuf_unwind):
|
||||
Call minibuffer-inactive-mode.
|
||||
|
||||
2011-05-31 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* makefile.w32-in ($(BLD)/data.$(O), $(BLD)/editfns.$(O)):
|
||||
|
|
@ -181,7 +186,7 @@
|
|||
|
||||
merge count_size_as_multibyte, parse_str_to_multibyte
|
||||
* character.c, character.h (count_size_as_multibyte):
|
||||
Renamed from parse_str_to_multibyte; all uses changed.
|
||||
Rename from parse_str_to_multibyte; all uses changed.
|
||||
Check for integer overflow.
|
||||
* insdel.c, lisp.h (count_size_as_multibyte): Remove,
|
||||
since it's now a duplicate of the other. This is more of
|
||||
|
|
|
|||
|
|
@ -160,7 +160,7 @@ without invoking the usual minibuffer commands. */)
|
|||
}
|
||||
|
||||
|
||||
/* Actual minibuffer invocation. */
|
||||
/* Actual minibuffer invocation. */
|
||||
|
||||
static Lisp_Object read_minibuf_unwind (Lisp_Object);
|
||||
static Lisp_Object run_exit_minibuf_hook (Lisp_Object);
|
||||
|
|
@ -266,7 +266,7 @@ read_minibuf_noninteractive (Lisp_Object map, Lisp_Object initial,
|
|||
error ("Error reading from stdin");
|
||||
}
|
||||
|
||||
/* If Lisp form desired instead of string, parse it. */
|
||||
/* If Lisp form desired instead of string, parse it. */
|
||||
if (expflag)
|
||||
val = string_to_object (val, CONSP (defalt) ? XCAR (defalt) : defalt);
|
||||
|
||||
|
|
@ -743,7 +743,7 @@ read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt,
|
|||
}
|
||||
}
|
||||
|
||||
/* If Lisp form desired instead of string, parse it. */
|
||||
/* If Lisp form desired instead of string, parse it. */
|
||||
if (expflag)
|
||||
val = string_to_object (val, defalt);
|
||||
|
||||
|
|
@ -755,7 +755,7 @@ read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt,
|
|||
|
||||
/* Return a buffer to be used as the minibuffer at depth `depth'.
|
||||
depth = 0 is the lowest allowed argument, and that is the value
|
||||
used for nonrecursive minibuffer invocations */
|
||||
used for nonrecursive minibuffer invocations. */
|
||||
|
||||
Lisp_Object
|
||||
get_minibuffer (int depth)
|
||||
|
|
@ -793,7 +793,10 @@ get_minibuffer (int depth)
|
|||
reset_buffer (XBUFFER (buf));
|
||||
record_unwind_protect (Fset_buffer, Fcurrent_buffer ());
|
||||
Fset_buffer (buf);
|
||||
Fkill_all_local_variables ();
|
||||
if (!NILP (Ffboundp (intern ("minibuffer-inactive-mode"))))
|
||||
call0 (intern ("minibuffer-inactive-mode"));
|
||||
else
|
||||
Fkill_all_local_variables ();
|
||||
unbind_to (count, Qnil);
|
||||
}
|
||||
|
||||
|
|
@ -808,7 +811,7 @@ run_exit_minibuf_hook (Lisp_Object data)
|
|||
}
|
||||
|
||||
/* This function is called on exiting minibuffer, whether normally or
|
||||
not, and it restores the current window, buffer, etc. */
|
||||
not, and it restores the current window, buffer, etc. */
|
||||
|
||||
static Lisp_Object
|
||||
read_minibuf_unwind (Lisp_Object data)
|
||||
|
|
@ -868,6 +871,12 @@ read_minibuf_unwind (Lisp_Object data)
|
|||
windows_or_buffers_changed++;
|
||||
XSETFASTINT (XWINDOW (window)->last_modified, 0);
|
||||
XSETFASTINT (XWINDOW (window)->last_overlay_modified, 0);
|
||||
|
||||
/* In case the previous minibuffer displayed in this miniwindow is
|
||||
dead, we may keep displaying this buffer (tho it's inactive), so reset it,
|
||||
to make sure we don't leave around bindings and stuff which only
|
||||
made sense during the read_minibuf invocation. */
|
||||
call0 (intern ("minibuffer-inactive-mode"));
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
|
|
@ -978,7 +987,7 @@ Such arguments are used as in `read-from-minibuffer'.) */)
|
|||
Qnil);
|
||||
}
|
||||
|
||||
/* Functions that use the minibuffer to read various things. */
|
||||
/* Functions that use the minibuffer to read various things. */
|
||||
|
||||
DEFUN ("read-string", Fread_string, Sread_string, 1, 5, 0,
|
||||
doc: /* Read a string from the minibuffer, prompting with string PROMPT.
|
||||
|
|
@ -1146,7 +1155,7 @@ function, instead of the usual behavior. */)
|
|||
args[1] = prompt;
|
||||
args[2] = def;
|
||||
args[3] = require_match;
|
||||
result = Ffuncall(4, args);
|
||||
result = Ffuncall (4, args);
|
||||
}
|
||||
return unbind_to (count, result);
|
||||
}
|
||||
|
|
@ -1233,10 +1242,10 @@ is used to further constrain the set of candidates. */)
|
|||
|
||||
while (1)
|
||||
{
|
||||
/* Get the next element of the alist, obarray, or hash-table. */
|
||||
/* Exit the loop if the elements are all used up. */
|
||||
/* Get the next element of the alist, obarray, or hash-table. */
|
||||
/* Exit the loop if the elements are all used up. */
|
||||
/* elt gets the alist element or symbol.
|
||||
eltstring gets the name to check as a completion. */
|
||||
eltstring gets the name to check as a completion. */
|
||||
|
||||
if (type == list_table)
|
||||
{
|
||||
|
|
@ -1278,7 +1287,7 @@ is used to further constrain the set of candidates. */)
|
|||
elt = eltstring = HASH_KEY (XHASH_TABLE (collection), idx++);
|
||||
}
|
||||
|
||||
/* Is this element a possible completion? */
|
||||
/* Is this element a possible completion? */
|
||||
|
||||
if (SYMBOLP (eltstring))
|
||||
eltstring = Fsymbol_name (eltstring);
|
||||
|
|
@ -1291,7 +1300,7 @@ is used to further constrain the set of candidates. */)
|
|||
completion_ignore_case ? Qt : Qnil),
|
||||
EQ (Qt, tem)))
|
||||
{
|
||||
/* Yes. */
|
||||
/* Yes. */
|
||||
Lisp_Object regexps;
|
||||
|
||||
/* Ignore this element if it fails to match all the regexps. */
|
||||
|
|
@ -1313,7 +1322,7 @@ is used to further constrain the set of candidates. */)
|
|||
}
|
||||
|
||||
/* Ignore this element if there is a predicate
|
||||
and the predicate doesn't like it. */
|
||||
and the predicate doesn't like it. */
|
||||
|
||||
if (!NILP (predicate))
|
||||
{
|
||||
|
|
@ -1415,7 +1424,7 @@ is used to further constrain the set of candidates. */)
|
|||
}
|
||||
|
||||
if (NILP (bestmatch))
|
||||
return Qnil; /* No completions found */
|
||||
return Qnil; /* No completions found. */
|
||||
/* If we are ignoring case, and there is no exact match,
|
||||
and no additional text was supplied,
|
||||
don't change the case of what the user typed. */
|
||||
|
|
@ -1429,7 +1438,7 @@ is used to further constrain the set of candidates. */)
|
|||
return Qt;
|
||||
|
||||
XSETFASTINT (zero, 0); /* Else extract the part in which */
|
||||
XSETFASTINT (end, bestmatchsize); /* all completions agree */
|
||||
XSETFASTINT (end, bestmatchsize); /* all completions agree. */
|
||||
return Fsubstring (bestmatch, zero, end);
|
||||
}
|
||||
|
||||
|
|
@ -1496,10 +1505,10 @@ with a space are ignored unless STRING itself starts with a space. */)
|
|||
|
||||
while (1)
|
||||
{
|
||||
/* Get the next element of the alist, obarray, or hash-table. */
|
||||
/* Exit the loop if the elements are all used up. */
|
||||
/* Get the next element of the alist, obarray, or hash-table. */
|
||||
/* Exit the loop if the elements are all used up. */
|
||||
/* elt gets the alist element or symbol.
|
||||
eltstring gets the name to check as a completion. */
|
||||
eltstring gets the name to check as a completion. */
|
||||
|
||||
if (type == 1)
|
||||
{
|
||||
|
|
@ -1541,7 +1550,7 @@ with a space are ignored unless STRING itself starts with a space. */)
|
|||
elt = eltstring = HASH_KEY (XHASH_TABLE (collection), idx++);
|
||||
}
|
||||
|
||||
/* Is this element a possible completion? */
|
||||
/* Is this element a possible completion? */
|
||||
|
||||
if (SYMBOLP (eltstring))
|
||||
eltstring = Fsymbol_name (eltstring);
|
||||
|
|
@ -1561,7 +1570,7 @@ with a space are ignored unless STRING itself starts with a space. */)
|
|||
completion_ignore_case ? Qt : Qnil),
|
||||
EQ (Qt, tem)))
|
||||
{
|
||||
/* Yes. */
|
||||
/* Yes. */
|
||||
Lisp_Object regexps;
|
||||
|
||||
/* Ignore this element if it fails to match all the regexps. */
|
||||
|
|
@ -1583,7 +1592,7 @@ with a space are ignored unless STRING itself starts with a space. */)
|
|||
}
|
||||
|
||||
/* Ignore this element if there is a predicate
|
||||
and the predicate doesn't like it. */
|
||||
and the predicate doesn't like it. */
|
||||
|
||||
if (!NILP (predicate))
|
||||
{
|
||||
|
|
@ -1604,7 +1613,7 @@ with a space are ignored unless STRING itself starts with a space. */)
|
|||
}
|
||||
if (NILP (tem)) continue;
|
||||
}
|
||||
/* Ok => put it on the list. */
|
||||
/* Ok => put it on the list. */
|
||||
allmatches = Fcons (eltstring, allmatches);
|
||||
}
|
||||
}
|
||||
|
|
@ -1810,9 +1819,9 @@ the values STRING, PREDICATE and `lambda'. */)
|
|||
if (SYMBOLP (tail))
|
||||
while (1)
|
||||
{
|
||||
if (EQ((Fcompare_strings (string, make_number (0), Qnil,
|
||||
if (EQ (Fcompare_strings (string, make_number (0), Qnil,
|
||||
Fsymbol_name (tail),
|
||||
make_number (0) , Qnil, Qt)),
|
||||
make_number (0) , Qnil, Qt),
|
||||
Qt))
|
||||
{
|
||||
tem = tail;
|
||||
|
|
@ -1836,11 +1845,11 @@ the values STRING, PREDICATE and `lambda'. */)
|
|||
tem = HASH_KEY (h, i);
|
||||
else
|
||||
for (i = 0; i < HASH_TABLE_SIZE (h); ++i)
|
||||
if (!NILP (HASH_HASH (h, i)) &&
|
||||
EQ (Fcompare_strings (string, make_number (0), Qnil,
|
||||
HASH_KEY (h, i), make_number (0) , Qnil,
|
||||
completion_ignore_case ? Qt : Qnil),
|
||||
Qt))
|
||||
if (!NILP (HASH_HASH (h, i))
|
||||
&& EQ (Fcompare_strings (string, make_number (0), Qnil,
|
||||
HASH_KEY (h, i), make_number (0) , Qnil,
|
||||
completion_ignore_case ? Qt : Qnil),
|
||||
Qt))
|
||||
{
|
||||
tem = HASH_KEY (h, i);
|
||||
break;
|
||||
|
|
@ -1887,7 +1896,7 @@ If the argument FLAG is nil, invoke `try-completion', if it's t, invoke
|
|||
`all-completions', otherwise invoke `test-completion'.
|
||||
|
||||
The arguments STRING and PREDICATE are as in `try-completion',
|
||||
`all-completions', and `test-completion'. */)
|
||||
`all-completions', and `test-completion'. */)
|
||||
(Lisp_Object string, Lisp_Object predicate, Lisp_Object flag)
|
||||
{
|
||||
if (NILP (flag))
|
||||
|
|
|
|||
Loading…
Reference in a new issue