;ELC ;;; Compiled by cyd@localhost on Mon Apr 23 22:21:00 2007 ;;; from file /home/cyd/emacs/lisp/mouse.el ;;; in Emacs version 22.0.99 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. (if (and (boundp 'emacs-version) (< (aref emacs-version (1- (length emacs-version))) ?A) (or (and (boundp 'epoch::version) epoch::version) (string-lessp emacs-version "19.29"))) (error "`mouse.el' was compiled for Emacs 19.29 or later")) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (put 'track-mouse 'lisp-indent-function 0) #@69 *If non-nil, mouse yank commands yank at point instead of at click. (custom-declare-variable 'mouse-yank-at-point 'nil '(#$ . -600) :type 'boolean :group 'mouse) #@53 *If non-nil, mouse drag copies region to kill-ring. (custom-declare-variable 'mouse-drag-copy-region 't '(#$ . -768) :type 'boolean :version "22.1" :group 'mouse) #@1150 Non-nil means that clicking Mouse-1 on a link follows the link. With the default setting, an ordinary Mouse-1 click on a link performs the same action as Mouse-2 on that link, while a longer Mouse-1 click (hold down the Mouse-1 button for more than 450 milliseconds) performs the original Mouse-1 binding (which typically sets point where you click the mouse). If value is an integer, the time elapsed between pressing and releasing the mouse button determines whether to follow the link or perform the normal Mouse-1 action (typically set point). The absolute numeric value specifices the maximum duration of a "short click" in milliseconds. A positive value means that a short click follows the link, and a longer click performs the normal action. A negative value gives the opposite behavior. If value is `double', a double click follows the link. Otherwise, a single Mouse-1 click unconditionally follows the link. Note that dragging the mouse never follows the link. This feature only works in modes that specifically identify clickable text as links, so it may not work with some external packages. See `mouse-on-link-p' for details. (custom-declare-variable 'mouse-1-click-follows-link '450 '(#$ . 939) :version "22.1" :type '(choice (const :tag "Disabled" nil) (const :tag "Double click" double) (number :tag "Single click time limit" :value 450) (other :tag "Single click" t)) :group 'mouse) #@238 *If non-nil, a Mouse-1 click also follows links in non-selected windows. If nil, a Mouse-1 click on a link in a non-selected window performs the normal mouse-1 binding, typically selects the window and sets point at the click position. (custom-declare-variable 'mouse-1-click-in-non-selected-windows 't '(#$ . -2356) :type 'boolean :version "22.1" :group 'mouse) #@310 Popup the given menu and call the selected option. MENU can be a keymap, an easymenu-style menu or a list of keymaps as for `x-popup-menu'. POSITION can be a click event or ((XOFFSET YOFFSET) WINDOW) and defaults to the current mouse position. PREFIX is the prefix argument (if any) to pass to the command. (defalias 'popup-menu #[(menu &optional position prefix) "\306!\203\n\202:<\203\306@!\203\202:\307@A\"\2119\205,\310 \311N\312\"\211\2038\n K!\2029 *\313\211 \204]\314 \211\211A@)\211AA)D@D) \203\276\315 \316 !\"\211\203\276\306 !\204\246 <\203\246\317\320 \"\313 \203\240\204\240\321 @\"\211\247\203\231\313 A\211\204\204*\202\255\321 \317\320 \"\"\322\323!\210\306\f!\205\271\f\211\204a ?\205\326\324\f!\205\326\325 !@\326\f!+\207" [menu map filter event cmd position keymapp easy-menu-create-menu plist-get menu-prop :filter nil mouse-pixel-position x-popup-menu indirect-function apply vector lookup-key message "" commandp last call-interactively mp x binding mouse-click prefix prefix-arg last-command-event] 6 (#$ . 2727)]) #@114 Pop up a mode-specific menu of mouse commands. Default to the Edit menu if the major mode doesn't define a menu. (defalias 'mouse-major-mode-menu #[(event &optional prefix) "\306\307\310\"\210\311\312\313 \205\314\315!!\211\203\316\n\317P!\202  \203)\320\f \"\210\321\f #+\207" [mouse-major-mode-menu-prefix ancestor mode-name menu-bar-edit-menu newmap event run-hooks activate-menubar-hook menu-bar-update-hook nil mouse-major-mode-menu-1 current-local-map local-key-binding [menu-bar] make-sparse-keymap " Mode" set-keymap-parent popup-menu prefix] 5 (#$ . 3845) "@e\nP"]) (defalias 'mouse-major-mode-menu-1 #[(menubar) "\205;\304\211\203%\n@:\203 \203\305\202\n@\nA\211\204\f \305=\203/\202: @C\306\307 @!\"*\207" [menubar submap tail mouse-major-mode-menu-prefix nil t lookup-key vector] 5]) #@172 Pop up a menu equivalent to the menu bar for keyboard EVENT with PREFIX. The contents are the items that would be in the menu bar whether or not it is actually displayed. (defalias 'mouse-popup-menubar #[(event prefix) "\306\307\310\"\210\311 \205\312\311 \313\"\312 \314\"\315\316\317\320!\"\205&\211A@)\n\211A@)\203B ;\204B\321\322PABB;\204O\321\323\nABB\324\325\nC\205YC ##-\207" [local-menu global-map global-menu minor-mode-menus x local-title-or-map run-hooks activate-menubar-hook menu-bar-update-hook current-local-map lookup-key [menu-bar] [menu-bar] mapcar #[(menu) "@A\211\211A@)\211;\204#\304\305\306\307\310\311 !#!\312PABB+\207" [menu minor-mode x title-or-map keymap capitalize subst-char-in-string 45 32 symbol-name " Menu"] 8] minor-mode-key-binding [menu-bar] keymap " Mode Menu" "Global Menu" popup-menu append global-title-or-map mode-name event prefix] 6 (#$ . 4681) "@e \nP"]) #@141 Popup a menu like either `mouse-major-mode-menu' or `mouse-popup-menubar'. Use the former if the menu bar is showing, otherwise the latter. (defalias 'mouse-popup-menubar-stuff #[(event prefix) "\302\303\304\305 \306\307$!\203\310 \"\207\311 \"\207" [event prefix zerop assoc-default menu-bar-lines frame-parameters eq 0 mouse-popup-menubar mouse-major-mode-menu] 6 (#$ . 5628) "@e \nP"]) (defalias 'mouse-minibuffer-check #[(event) "\211:\203 \3038\202\304 `\305\306F)\306 8)\307\n!\203*\310\n!\204*\311\312!\210)\313\314!\207" [event position w 1 selected-window (0 . 0) 0 window-minibuffer-p minibuffer-window-active-p error "Minibuffer window is not active" run-hooks mouse-leave-buffer-hook] 5]) #@123 Delete the window you click on. Do nothing if the frame has just one window. This command must be bound to a mouse click. (defalias 'mouse-delete-window #[(click) "\303\304!?\205%\305!\210\306\211:\203 A@\202\307 `\310\311F)\211@)!\207" [click event position one-window-p t mouse-minibuffer-check delete-window selected-window (0 . 0) 0] 6 (#$ . 6350) "e"]) #@49 Select the window clicked on; don't move point. (defalias 'mouse-select-window #[(click) "\305!\210\306 \307\211:\203\310 8\202\311 `\312\313F)\313\n8)!\314\211:\2031\310 8\2027\311 `\312\313F)\313\n8)!\210\315 !\210\316 !\210 \f=\206U\317\306 \320 S\313#*\207" [click event position frame oframe mouse-minibuffer-check selected-frame window-frame 1 selected-window (0 . 0) 0 select-window raise-frame select-frame set-mouse-position frame-width] 7 (#$ . 6723) "e"]) #@77 Delete the window clicked on, and create a new frame displaying its buffer. (defalias 'mouse-tear-off-window #[(click) "\306!\210\211:\203\307 8\202\310 `\311\312F)\312\n8)\313 !\314 \315 !\210\316\f!\210\317 !+\207" [click event position window buf frame mouse-minibuffer-check 1 selected-window (0 . 0) 0 window-buffer make-frame select-frame switch-to-buffer delete-window] 5 (#$ . 7212) "e"]) #@49 Delete all windows except the one you click on. (defalias 'mouse-delete-other-windows #[nil "\300 \207" [delete-other-windows] 1 (#$ . 7626) "@"]) #@157 Select Emacs window mouse is on, then split it vertically in half. The window is split at the line clicked on. This command must be bound to a mouse click. (defalias 'mouse-split-window-vertically #[(click) "\306!\210\211:\203\307 8\202\310 `\311\312F)\313\n\312 8)!\210\314\211:\203;\315 8:\2035\315\2026\307 8\202A\310 `\316\312F)!AT\f\317 \fZ W\203\\\320\321!\202e\322] ^!,\207" [click event start position window-min-height last-line mouse-minibuffer-check 1 selected-window (0 . 0) 0 select-window posn-col-row 2 (0 . 0) window-height error "Window too short to split" split-window-vertically first-line new-height] 6 (#$ . 7780) "@e"]) #@161 Select Emacs window mouse is on, then split it horizontally in half. The window is split at the column clicked on. This command must be bound to a mouse click. (defalias 'mouse-split-window-horizontally #[(click) "\306!\210\211:\203\307 8\202\310 `\311\312F)\313\n\312 8)!\210\314\211:\203;\315 8:\2035\315\2026\307 8\202A\310 `\316\312F)!@T\f\317 \fZ W\203\\\320\321!\202e\322] ^!,\207" [click event start position window-min-width last-col mouse-minibuffer-check 1 selected-window (0 . 0) 0 select-window posn-col-row 2 (0 . 0) window-width error "Window too narrow to split" split-window-horizontally first-col new-width] 6 (#$ . 8457) "@e"]) #@126 Return the (or a) window directly above WINDOW. That means one whose bottom edge is at the same height as WINDOW's top edge. (defalias 'mouse-drag-window-above #[(window) "\306!A@\306!@\307\306!8\310\311\312\" \204s\n=\204s\306!@\307\306!8\f \313!\306!A@\\ U\203k \fX\203M \fX\204i\f X\203[ X\204i\f\fX\203k\f X\203k*\311!\202 -\207" [window above-window start-window start-right start-left start-top window-edges 2 nil previous-window 0 window-height right left] 5 (#$ . 9138)]) #@209 Move the bottom of WINDOW up or down by GROWTH lines. Move it down if GROWTH is positive, or up if GROWTH is negative. If this would make WINDOW too short, shrink the window or windows above it to make room. (defalias 'mouse-drag-move-window-bottom #[(window growth) "\300\301\302\217\207" [nil (adjust-window-trailing-edge window growth nil) ((error))] 3 (#$ . 9665)]) #@206 Move the top of WINDOW up or down by GROWTH lines. Move it down if GROWTH is positive, or up if GROWTH is negative. If this would make WINDOW too short, shrink the window or windows above it to make room. (defalias 'mouse-drag-move-window-top #[(window growth) "\303!\211\205 \304 \n[\")\207" [window window-above growth mouse-drag-window-above mouse-drag-move-window-bottom] 4 (#$ . 10042)]) (put 'mouse-drag-move-window-top 'byte-optimizer 'byte-compile-inline-expand) #@204 Change the height of a window by dragging on the mode or header line. START-EVENT is the starting mouse-event of the drag action. MODE-LINE-P non-nil means dragging a mode line; nil means a header line. (defalias 'mouse-drag-mode-line-1 #[(start-event mode-line-p) "\306\307!\210\310\311\n\211:\203\312 8\202\313 `\314\311F)\211\311 8)\315!\316\317!\320\310\321\"\310\211\310\211\310\211\310\211\310\322 .\207" [done echo-keystrokes start-event event start position run-hooks mouse-leave-buffer-hook nil 0 1 selected-window (0 . 0) window-frame count-windows t frame-parameter minibuffer (lambda nil (track-mouse (byte-code "\205 \205\306\307!?\205\310!A@\311\310\n!8U\f?\205\312 \313  \250\2032\307\211\202 @\314>\204 @\315>\204Q :\203K B\307\211\202@=\203A@\203AA\310\n!\211A@\3118 \203\207Z\316Z\202\240ZW\203\231ZZ\317  \320U\204\271\204\271\306\307!\203\271\321\322!\210 \203\313!\204\363\323\n\"\210\202\363 \203\330\323\n\"\210\202\363\n\"\324\"!\211#\205\360\323#[\")\210*$\325\307!U\203 \204\320V\203 \203\310 A@U\204\326 !\210\202\207" [minibuffer mode-line-p start-event-window should-enlarge-minibuffer done event one-window-p t window-edges 3 read-event mouse-position (switch-frame select-window) (mouse-movement scroll-bar-movement) -1 current-window-configuration 0 error "Attempt to resize sole window" mouse-drag-move-window-bottom mouse-drag-window-above count-windows set-window-configuration mouse unread-command-events start-event-frame y edges top bot growth window-min-height wconfig resize-mini-windows window window-above start-nwindows] 5))) start-event-window start-event-frame start-nwindows should-enlarge-minibuffer mouse y top bot edges wconfig growth] 5 (#$ . 10523)]) #@61 Change the height of a window by dragging on the mode line. (defalias 'mouse-drag-mode-line #[(start-event) "\301\302\"\207" [start-event mouse-drag-mode-line-1 t] 3 (#$ . 12392) "e"]) #@167 Change the height of a window by dragging on the header line. Windows whose header-lines are at the top of the frame cannot be resized by dragging their header-line. (defalias 'mouse-drag-header-line #[(start-event) "\211:\203 \306 8\202\307 `\310\311F)\211\311 8)\312\f!\313 !\f=\2068\314\f!A@\314!A@U?\205@\315\316\",\207" [start-event event start position window frame 1 selected-window (0 . 0) 0 window-frame frame-first-window window-edges mouse-drag-mode-line-1 nil first-window] 5 (#$ . 12585) "e"]) #@69 Return a window that is immediately to the right of WINDOW, or nil. (defalias 'mouse-drag-vertical-line-rightward-window #[(window) "\306\307!8\307!@\310\211\311! =\204[\307 !A@\306\307 !8\312\307 !8 \f\211 W\203R\f Y\203R \fW\203R\n\203M \nV\203R  +\311 !\211\202 -\207" [window try best-right best left bottom 3 window-inside-edges nil previous-window 2 try-right try-bottom try-top] 7 (#$ . 13116)]) #@64 Change the width of a window by dragging on the vertical line. (defalias 'mouse-drag-vertical-line #[(start-event) "\306\307!\210\310\311\312\nA@@!\nA@@\310\211\310\211\310\211 \310\313\314 !\236A\2062\315\316\317!\203A\320\321!\210\202o\315=\203[\322\323\f!8\324 !Y\203[\320\325!\210\202o\326=\203o\323\f!@\311U\203o\320\327!\210\330 .\f\207" [done echo-keystrokes start-event start-event-frame start-event-window event run-hooks mouse-leave-buffer-hook nil 0 window-frame vertical-scroll-bars frame-parameters right one-window-p t error "Attempt to resize sole ordinary window" 2 window-inside-edges frame-width "Attempt to drag rightmost scrollbar" left "Attempt to drag leftmost scrollbar" (lambda nil (track-mouse (byte-code "?\205\232\306 \307  \250\203\310\211\202 @\311>\204 @\312>\2043 :\203- B\310\211\202\n@\f=\203\nA@\203 \313=\203K\202O\314!\nA@ \313=\203^\315\202_\316Z\317!\211@\3168 Z\320ZW\203\210\\\320\\ Z\320Z\321\322\323\217\210)\202\207" [done event mouse unread-command-events start-event-frame which-side read-event mouse-position t (switch-frame select-window) (mouse-movement scroll-bar-movement) right mouse-drag-vertical-line-rightward-window 0 2 window-edges -1 nil (adjust-window-trailing-edge window growth t) ((error)) start-event-window window x edges left window-min-width growth] 4))) mouse x edges growth which-side] 4 (#$ . 13553) "e"]) #@105 Move point to the position clicked on with the mouse. This should be bound to a mouse click event type. (defalias 'mouse-set-point #[(event) "\301!\210\302\211:\203\3038:\203\303\202\3048\202#\305 `\306\307F)!\207" [event mouse-minibuffer-check posn-set-point 2 1 selected-window (0 . 0) 0] 6 (#$ . 15027) "e"]) (byte-code "\301B\302\301!\204\303\301\304\"\210\305B\302\305!\204\303\305\304\"\210\306B\302\306!\204-\303\306\304\"\210\304\207" [current-load-list mouse-last-region-beg default-boundp set-default nil mouse-last-region-end mouse-last-region-tick] 3) #@73 Return non-nil if there's an active region that was set with the mouse. (defalias 'mouse-region-match #[nil "\304\305!\205\205 \306 =\205\n\307 =\205 \310 =\207" [mark-active mouse-last-region-beg mouse-last-region-end mouse-last-region-tick mark t region-beginning region-end buffer-modified-tick] 2 (#$ . 15620)]) #@109 Set the region to the text dragged over, and copy to kill ring. This should be bound to a mouse drag event. (defalias 'mouse-set-region #[(click) "\306!\210\211:\203\307 8\202\310 `\311\312F)\211:\2030\313 8:\203*\313\202+\307 8\2026\310 `\314\312F)\315 \312\f8)!\210 \316\f8\206[\307\f8:\203X\307\f8@\202[\307\f8)\247\203| \316\f8\206y\307\f8:\203v\307\f8@\202y\307\f8)b\210 \204\215\317\320 !\321>\204\215\322\307!\210\323 \210\324`!\210\n\316\f8\206\255\307\f8:\203\252\307\f8@\202\255\307\f8)\247\203\316\n\316\f8\206\313\307\f8:\203\310\307\f8@\202\313\307\f8)b\210\203\343\325\211\211\326\327 `\"\210+\330 *\207" [click event end posn position transient-mark-mode mouse-minibuffer-check 1 selected-window (0 . 0) 0 2 (0 . 0) select-window 5 framep selected-frame (x pc w32 mac) sit-for push-mark set-mark nil copy-region-as-kill mark mouse-set-region-1 mouse-drag-copy-region deactivate-mark last-command this-command] 6 (#$ . 15952) "e"]) (defalias 'mouse-set-region-1 #[nil "\304>\203\305\306 \307 \310 \211\207" [transient-mark-mode mouse-last-region-beg mouse-last-region-end mouse-last-region-tick (nil identity) only region-beginning region-end buffer-modified-tick] 2]) #@438 *The pause between scroll steps caused by mouse drags, in seconds. If you drag the mouse beyond the edge of a window, Emacs scrolls the window to bring the text beyond that edge into view, with a delay of this many seconds between scroll steps. Scrolling stops when you move the mouse back into the window, or release the button. This variable's value may be non-integral. Setting this to zero causes Emacs to scroll as fast as it can. (custom-declare-variable 'mouse-scroll-delay '0.25 '(#$ . -17194) :type 'number :group 'mouse) #@379 *The minimum number of lines scrolled by dragging mouse out of window. Moving the mouse out the top or bottom edge of the window begins scrolling repeatedly. The number of lines scrolled per repetition is normally equal to the number of lines beyond the window edge that the mouse has moved. However, it always scrolls at least the number of lines specified by this variable. (custom-declare-variable 'mouse-scroll-min-lines '1 '(#$ . -17733) :type 'integer :group 'mouse) #@232 Scroll the window WINDOW, JUMP lines at a time, until new input arrives. If OVERLAY is an overlay, let it stretch from START to the far edge of the newly visible text. Upon exit, point is at the far edge of the newly visible text. (defalias 'mouse-scroll-subr #[(window jump &optional overlay start) "\306V\203 W\203 \202!\306W\203![ W\203! [`\307 !b\210\310\311 \"!\204{\312 `\"\210\313!\203[\314 !\203P\314 !b\210\311S \"\210\202`\311\315 !\316Z!\210\202`\307 !b\210\f\203j\317\f `#\210 \320 =\204t\nb\210\321!\204# \320 =\206\204\nb)\207" [jump mouse-scroll-min-lines opoint window overlay start 0 window-start zerop vertical-motion set-window-start natnump window-end window-height 2 move-overlay selected-window sit-for mouse-scroll-delay] 4 (#$ . 18215)]) (byte-code "\302B\303\304ee\"\305 !\210\306 \307\310#\210 )!\210\311B\312\311!\204'\313\311\314\"\210\315B\312\315!\2046\313\315\316\"\210\316\207" [current-load-list ol mouse-drag-overlay (lambda (#1=#:defconst-tmp-var) (defconst mouse-drag-overlay #1#)) make-overlay delete-overlay overlay-put face region mouse-selection-click-count default-boundp set-default 0 mouse-selection-click-count-buffer nil] 5) #@360 Set the region to the text that the mouse is dragged over. Highlight the drag area as you move the mouse. This must be bound to a button-down mouse event. In Transient Mark mode, the highlighting remains as long as the mark remains active. Otherwise, it remains until the next input event. If the click is in the echo area, display the `*Messages*' buffer. (defalias 'mouse-drag-region #[(start-event) "\211:\203 \304 8\202\305 `\306\307F)\307\n8)\310 !\2039\311 !\2049\212\312 \210\313\314!q\210db\210\315p!)\202A\316\317!\210\320\321\")\207" [start-event event position w 1 selected-window (0 . 0) 0 window-minibuffer-p minibuffer-window-active-p read-event get-buffer-create "*Messages*" display-buffer run-hooks mouse-leave-buffer-hook mouse-drag-track t] 5 (#$ . 19429) "e"]) #@402 Look for a property at click position. POS may be either a buffer position or a click position like those returned from `event-start'. If the click position is on a string, the text property PROPERTY is examined. If this is nil or the click is not on a string, then the corresponding buffer position is searched for PROPERTY. If PROPERTY is encountered in one of those places, its value is returned. (defalias 'mouse-posn-property #[(pos property) ":\203G\306 8)\307 8\206$\310 8:\203!\310 8@\202$\310 8)\311 8)\n\203<\312\nA \n@#\206E \205E\313 \f#+\207\313 \"\207" [pos position str pt w property 0 5 1 4 get-text-property get-char-property] 4 (#$ . 20230)]) #@1545 Return non-nil if POS is on a link in the current buffer. POS must be a buffer position in the current buffer or a mouse event location in the selected window (see `event-start'). However, if `mouse-1-click-in-non-selected-windows' is non-nil, POS may be a mouse event location in any window. A clickable link is identified by one of the following methods: - If the character at POS has a non-nil `follow-link' text or overlay property, the value of that property determines what to do. - If there is a local key-binding or a keybinding at position POS for the `follow-link' event, the binding of that event determines what to do. The resulting value determine whether POS is inside a link: - If the value is `mouse-face', POS is inside a link if there is a non-nil `mouse-face' property at POS. Return t in this case. - If the value is a function, FUNC, POS is inside a link if the call (FUNC POS) returns non-nil. Return the return value from that call. Arg is (posn-point POS) if POS is a mouse event. - Otherwise, return the value itself. The return value is interpreted as follows: - If it is a string, the mouse-1 event is translated into the first character of the string, i.e. the action of the mouse-1 click is the local or global binding of that character. - If it is a vector, the mouse-1 event is translated into the first element of that vector, i.e. the action of the mouse-1 click is the local or global binding of that event. - Otherwise, the mouse-1 event is translated into a mouse-2 event at the same position. (defalias 'mouse-on-link-p #[(pos) ":\203 \204\304 \305\n8)=\205\"\306\307\"\206\"\310\311\312\313$\211\314=\2034\306\314\"\205q\313\202q\315 !\203p:\203jr\316\305\n8)!q\210 \317\n8\206d\320\n8:\203a\320\n8@\202d\320\n8)!)\202q !\202q )\207" [pos mouse-1-click-in-non-selected-windows position action selected-window 0 mouse-posn-property follow-link key-binding [follow-link] nil t mouse-face functionp window-buffer 5 1] 6 (#$ . 20919)]) #@56 Fix help message MSG for `mouse-1-click-follows-link'. (defalias 'mouse-fixup-help-message #[(msg) "\306\211\n\203\214 ;\203\214\307 \310\216\311\312 \"*\203\214\313 \211\203\214 A\211:\203\214@\203\214@\314Y\203\214A\203\214A\314Y\203\214\315@A @#\211\203\214\316\314 8)!\203\214r\317\314 8)!q\210\320!\203\213\n\321=\203t\322\202\204\n\250\203\203\n\314W\203\203\323\202\204\324\325 \326\306OQ)* \207" [pos mp mouse-1-click-follows-link msg save-match-data-internal position nil match-data ((byte-code "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3)) string-match "^mouse-2" mouse-pixel-position 0 posn-at-x-y windowp window-buffer mouse-on-link-p double "double-" "Long " "" "mouse-1" 7] 5 (#$ . 22938)]) (defalias 'mouse-move-drag-overlay #[(ol start end mode) " U\204b\210 b\210`\305 \n#\306\f @ A@#)\207" [start end mode range ol mouse-start-end move-overlay] 4]) #@237 Track mouse drags by highlighting area between point and cursor. The region will be defined with mark and point, and the overlay will be deleted after return. DO-MOUSE-DRAG-REGION-POST-PROCESS should only be used by mouse-drag-region. (defalias 'mouse-drag-track #[(start-event &optional do-mouse-drag-region-post-process) "\306!\210p\307 \310!\311\211:\203\312 8\202\"\307 `\313\311F)\21145\31458\206C\31258:\203?\31258@\202C\31258)645\31158)7\3157!8\3167!9\3177!:\320;:A@<\3217!\203z\322:8\202\322:8S=>\205\226?\204\2227\n=\205\226\3234!@\211:\203\254\324 8\250\203\254\324 8\202\255\312)SA@\205\301>\325=\205\301A\312UBCD\320CAE`6W\203\3316b\210`6B\203\344\311A\326F6\211A$\210\327F\3307#\210G\331=\203\320G\202G\203\320H\332\333!\210\320\211\211\211IJK\334 \210\335\336 \242!>\203\215 \211:\203>\324 8:\2038\324\2029\312 8\202D\307 `\337\311F)\211K5\31458\206e\31258:\203a\31258@\202e\31258)\211J\203\215K5\31158)7=\203\215\340J!\203\215\326F6JA$\210 :\203\341\341\342 @!!L \211:\203\256\324 8\250\203\256\324 8\202\257\312)\311V\205\301\343L!\205\301L\344>?M\345F!\346F!U\204\314M\204\314 \211:\203\354\324 8:\203\346\324\202\347\312 8\202\362\307 `\337\311F)5\31458\206\31258:\203\f\31258@\202\31258)\247\203U \211:\203-\324 8:\203'\324\202(\312 8\2023\307 `\337\311F)5\31458\206Q\31258:\203M\31258@\202Q\31258)\202WI\211N\203lN6W\203l\345F!\202p\346F!O\346F!\345F!\\OZP\320\211QR\347P\350\211#\210Ob\210S\204\235\351F!\202\310T\203\255\320U\352`\353\350!\"\210)pV\354 \210\353\350!\205\307H\205\307Vp=\205\307\355 )-\202\335M\203\3256b\210\351F!\210\343L!\205\3359\3167!U\205\335J\204\372\3157!8U\205\335@\203\326J\203\fJ6U\203\326 :\203\326B\204\263>\325=\204\326A\311U\203\326 \211:\2038\324 8\250\2038\324 8\2029\312)\312U\203\326>\250\203\263\211:\203R\312 8\202X\307 `\313\311F)5\32258) \211:\203x\324 8:\203r\324\202s\312 8\202~\307 `\337\311F)5\32258)W\211X\250\205\257W\250\205\257>\311V\203\247WXZ>X\202\257XWZ>W*\203\326\356@!\204\300@;\203\310@\311H\202\326\357\n!\210 \360\240\210\361\360\362\363#\210 YB\211Y*\202\345\351F!.\207" [start-event mouse-selection-click-count-buffer original-window _ echo-keystrokes event mouse-minibuffer-check selected-window mouse-set-point 0 1 (0 . 0) 5 window-start window-hscroll window-edges nil window-minibuffer-p 3 mouse-on-link-p 2 double mouse-move-drag-overlay overlay-put window lambda run-hooks deactivate-mark-hook (lambda nil (track-mouse (byte-code "\306 \211\211\242)\307=\204\242\310>\205\304\242\311>\204\n\312 \210)\211:\2039\3138:\2033\313\2024\3148\202?\315 `\316\317F)\211\320 8\206Z A@:\203W A@@\202Z A@)\211\247\203f\f\211@)=\203\206\321!\203\206\322$\210\202\323 AA\211\203\300W\203\251\324Z$\210\202\300Y\203\300\324ZT$\210)\202\207" [event object automatic-hscrolling-saved automatic-hscrolling end position read-event mouse-movement (switch-frame select-window) (switch-frame select-window) redisplay 2 1 selected-window #1=(0 . 0) 0 5 integer-or-marker-p mouse-move-drag-overlay mouse-position mouse-scroll-subr end-point last-end-point start-window mouse-drag-overlay start-point click-count mouse-row top bottom] 6))) drag event-modifiers #1# integer-or-marker-p key-binding vector functionp (mouse-set-point mouse-set-region) overlay-start overlay-end push-mark t delete-overlay copy-region-as-kill mark mouse-show-mark mouse-set-region-1 vectorp select-window mouse-2 put event-kind mouse-click start-posn position start-point start-window start-window-start start-hscroll bounds make-cursor-line-fully-visible top bottom mouse-1-click-follows-link mouse-1-click-in-non-selected-windows on-link click-count remap-double-click automatic-hscrolling automatic-hscrolling-saved mouse-selection-click-count mouse-drag-overlay transient-mark-mode mark-active last-end-point end-point end fun do-multi-click stop-point region-termination region-commencement last-command this-command do-mouse-drag-region-post-process mouse-drag-copy-region deactivate-mark buffer t1 t0 unread-command-events] 6 (#$ . 23882)]) #@126 Skip over word, over whitespace, or over identical punctuation. If DIR is positive skip forward; if negative, skip backward. (defalias 'mouse-skip-word #[(dir) "g\303z!\211\304\230\2031\n\305W\203\306\307!?\205\211\310v\202\211\306\307!\204,\306\311!?\205\211\312v\202\211 \313\230\203I\n\305W\203C\314 !\202\211\315 !\202\211 \316\230\203a\n\305W\203[\314\317!\202\211\315\317!\202\211\n\305W\203xo?\205\211hU\205\211\310u\210\202gm?\205\211gU\205\211\312u\210\202x*\207" [char syntax dir char-to-string "w" 0 looking-at "\\<" -1 "\\>" 1 " " skip-syntax-backward skip-syntax-forward "_" "w_"] 3 (#$ . 28234)]) #@293 Return a list of region bounds based on START and END according to MODE. If MODE is 0 then set point to (min START END), mark to (max START END). If MODE is 1 then set point to start of word at (min START END), mark to end of word at (max START END). If MODE is 2 then do the same for lines. (defalias 'mouse-start-end #[(start end mode) " V\203  \n)\305 \306\"\211\307U\203 D\207 \310U\203B U\203Bf\203Bfz\311U\203B\212b\210\312\310!\210`)D\207 \310U\203j U\203jf\203jfz\313U\203j\212Tb\210\314\310!\210`)TD\207 \310U\203\255 U\203\255f\203\255fz\315U\203\255e=\206\222\212Sb\210\316\317!)\211\203\242\212\320\321\322\217)D\202\253\212\320\323\324\217)TD)\207 \310U\203\311\212b\210\325\326!\210`)\212 b\210\325\310!\210`)D\207 \327U\205\343\212b\210\330\310!\210`)\212 b\210\310y\210`)D\207" [start end temp mode open mod 3 0 1 40 forward-sexp 41 backward-sexp 34 looking-at "\\s(\\|\\s \\|\\s>" nil (byte-code "b\210\301\302!\210`\207" [start forward-sexp 1] 2) ((error end)) (byte-code "Tb\210\301\302!\210`\207" [start backward-sexp 1] 2) ((error end)) mouse-skip-word -1 2 beginning-of-line] 5 (#$ . 28880)]) (defalias 'mouse-set-mark-fast #[(click) "\304!\210\211:\203\305 8\202\306 `\307\310F)\311\n\310 8)!\210\n\312 8\206;\305 8:\2038\305 8@\202;\305 8)\247\205^\313\n\312 8\206Z\305 8:\203W\305 8@\202Z\305 8)\314\211#)\207" [click event posn position mouse-minibuffer-check 1 selected-window (0 . 0) 0 select-window 5 push-mark t] 5]) (defalias 'mouse-undouble-last-event #[(events) "GS\211\233\211@\306 !\307 !\310\311\310\312\313 !\"\" :\2031\314\315\fB!! AB\2022 \n\240\210 \232\204M\316\317\320\"!\203M\321\202R\n \240\210\322.\207" [events index last event basic old-modifiers event-basic-type event-modifiers delq double triple copy-sequence event-convert-list reverse key-binding apply vector t nil modifiers new] 7]) #@64 List of keys that should cause the mouse region to be deleted. (custom-declare-variable 'mouse-region-delete-keys ''([delete] [deletechar] [backspace]) '(#$ . 30814) :group 'mouse :type '(repeat key-sequence)) (defalias 'mouse-show-mark #[nil "\306\307\310\211\211\211\311\300!\205\312!\313\300\314\"\210\203)\315!\210\2022\316`\317\306!#\210\320\321\215\210 \204i\n\235\203c\322\323!\210\324\325!\206U\322\326!\210\327!\210\202i \244\310 ?\205v\315!.\207" [x-lost-selection-functions ignore key events event echo-keystrokes t 0 nil boundp copy-sequence add-hook #[(seltype) "\302=\205\f\303\304\305\303\"\207" [seltype ignore PRIMARY t throw mouse-show-mark] 3] delete-overlay move-overlay mark mouse-show-mark (byte-code "\306 \307 C\"\310\311 \":\203@\312=\204v:\203\\\211:\2037\3138:\2031\313\2022\3148\202=\315 `\316\317F)\320 8\206V\314 8:\203S\314 8@\202V\314 8)\321=\204v\322\323!>\203\330\324\n!\204\330\325 !\204\330\n\f\235\204\330:\203@\312=\204\277\211:\203\232\3138:\203\224\313\202\225\3148\202\240\315 `\316\317F)\320 8\206\271\314 8:\203\266\314 8@\202\271\314 8)\321=\203\311\321\"\324 !\203\324\326\324 !\327 #\210\327)\202\327\207" [event events key position mouse-region-delete-keys keys read-event append apply vector switch-frame 2 1 selected-window (0 . 0) 0 5 vertical-scroll-bar down event-modifiers key-binding mouse-undouble-last-event call-interactively nil] 5) run-hooks post-command-hook delete-region command-remapping pre-command-hook call-interactively inhibit-quit transient-mark-mode mouse-drag-overlay mouse-region-delete-keys this-command last-command this-original-command unread-command-events quit-flag] 8]) #@136 Set mark at the position clicked on with the mouse. Display cursor at that position for a second. This must be bound to a mouse click. (defalias 'mouse-set-mark #[(click) "\305!\210\306\211:\203\307 8\202\310 `\311\312F)\312\n8)!\210`\313\216\314!\210\315\316\317\211#\210\f\2065\320\307!*\207" [click event position point-save transient-mark-mode mouse-minibuffer-check select-window 1 selected-window (0 . 0) 0 ((goto-char point-save)) mouse-set-point push-mark nil t sit-for] 6 (#$ . 32577) "e"]) #@112 Kill the region between point and the mouse click. The text is saved in the kill ring, as with \[kill-region]. (defalias 'mouse-kill #[(click) "\305!\210\211:\203\306 8\202\307 `\310\311F)\211\312 8\2062\306 8:\203/\306 8@\2022\306 8)\313\n\311 8)!\210\f\247\205J\314`\f^`\f]\"*\207" [click event posn position click-posn mouse-minibuffer-check 1 selected-window (0 . 0) 0 5 select-window kill-region] 5 (#$ . 33095) "e"]) #@306 Insert the last stretch of killed text at the position clicked on. Also move point to one end of the text thus inserted (normally the end), and set mark at the beginning. Prefix arguments are interpreted as with \[yank]. If `mouse-yank-at-point' is non-nil, insert at point regardless of where you click. (defalias 'mouse-yank-at-click #[(click arg) "\305\306!\210\204\f\307 !\210\310\311\310\f!\207" [mouse-yank-at-point click this-command mouse-selection-click-count arg run-hooks mouse-leave-buffer-hook mouse-set-point yank 0] 2 (#$ . 33540) "e\nP"]) #@134 Copy the region between point and the mouse click in the kill ring. This does not delete the region; it acts like \[kill-ring-save]. (defalias 'mouse-kill-ring-save #[(click) "\303!\210\304\211\305`\306\307!\"\210*\310 \207" [click last-command this-command mouse-set-mark-fast nil kill-ring-save mark t mouse-show-mark] 4 (#$ . 34106) "e"]) (byte-code "\301B\302\301!\204\303\301\304\"\210\304\207" [current-load-list mouse-save-then-kill-posn default-boundp set-default nil] 3) (defalias 'mouse-save-then-kill-delete-region #[(beg end) "\306 \210 U\204\n\307=\203 |\210\202x\310\211\211 V\203&\311\202'\312\\|\210*\n\310\211\313\311\n\"\210*\307 @G ] ^ZU\204K\314\315!\210 |\210)\n\211\203h@@;\204hA\211\204W\203w @ ^B\240\210)\306 \207" [beg end buffer-undo-list after-change-functions before-change-functions kill-ring undo-boundary t nil 1 -1 primitive-undo error "Lossage in mouse-save-then-kill-delete-region" tail] 5]) #@563 Save text to point in kill ring; the second time, kill the text. If the text between point and the mouse is the same as what's at the front of the kill ring, this deletes the text. Otherwise, it adds the text to the kill ring, like \[kill-ring-save], which prepares for a second click to delete the text. If you have selected words or lines, this command extends the selection through the word or line clicked on. If you do this again in a different position, it extends the selection again. If you do this twice in the same position, the selection is killed. (defalias 'mouse-save-then-kill #[(click) "r\306\211:\203\307 8\202\310 `\311\312F)\312\n8)!q\210 )\313!\210\211:\2032\307 8\2028\310 `\311\312F)\314\n8\206Q\307\n8:\203N\307\n8@\202Q\307\n8) r\306\211:\203e A@\202k\310 `\311\312F)\211@)!q\210\315\316!\205\207\317\320\"\312V\205\207 p=)\203\362!\321=\203\235\"\243\243@\232\204\342\322\211##\323\315\316!Z!\323`Z!W\203\301\324#@!\210\202\307#A@b\210\325`\315\316!{\316\"\210\326 \210$@`E\"\327 )\202\335\330\315 `\"\210\312\331\211\"\202\335!\321=\203 \"\203 \"@$@=\203 \"A`D\232\203 \330`\315 \"\210\331\211\"\202\335!\321=\203,\"\204G%\2036&\204G!\332>\203\267'\204G&\204\267\211:\203T\307 8\202Z\310 `\311\312F)\211(\314\n8\206v\307\n8:\203s\307\n8@\202v\307\n8))\333(\312\n8)!\210)\247\203\252\323)`Z!\323)\315\316!Z!X\203\242)b\210\202\247\324)!\210\331*\325`\315\316!{\316\"\210*\202\315\334!\210\f\203\302\fb\210\335 \210\325`\315\316!{!\210\327 \210\326 \210$@`E\211\"+\207" [click event position point-before-scroll before-scroll this-command window-buffer 1 selected-window (0 . 0) 0 mouse-minibuffer-check 5 mark t mod 3 mouse-save-then-kill mouse-start-end abs set-mark kill-new mouse-set-region-1 mouse-show-mark mouse-save-then-kill-delete-region nil (mouse-drag-region mouse-set-region) select-window mouse-set-mark-fast exchange-point-and-mark click-posn mouse-selection-click-count mouse-selection-click-count-buffer last-command mouse-save-then-kill-posn range kill-ring mark-active transient-mark-mode mark-even-if-inactive posn new deactivate-mark] 6 (#$ . 35085) "e"]) (byte-code "\300\301\302\"\210\300\303\304\"\210\300\305\306\"\210\300\307\310\"\210\300\311\312\"\207" [global-set-key [M-mouse-1] mouse-start-secondary [M-drag-mouse-1] mouse-set-secondary [M-down-mouse-1] mouse-drag-secondary [M-mouse-3] mouse-secondary-save-then-kill [M-mouse-2] mouse-yank-secondary] 3) #@111 An overlay which records the current secondary selection. It is deleted when there is no secondary selection. (defconst mouse-secondary-overlay (byte-code "\301ee\"\302!\210\303\304\305#\210)\207" [ol make-overlay delete-overlay overlay-put face secondary-selection] 4) (#$ . 37618)) (byte-code "\301B\302\301!\204\303\301\304\"\210\305B\302\305!\204\303\305\306\"\210\306\207" [current-load-list mouse-secondary-click-count default-boundp set-default 0 mouse-secondary-start nil] 3) #@165 Set one end of the secondary selection to the position clicked on. Use \[mouse-secondary-save-then-kill] to set the other end and complete the secondary selection. (defalias 'mouse-start-secondary #[(click) "\306!\210\211:\203\307 8\202\310 `\311\312F)r\313\n\312 8)!q\210\314\f!\210\n\315 8\206A\307 8:\203>\307 8@\202A\307 8)\247\205j \204M\316  \n\315 8\206g\307 8:\203d\307 8@\202g\307 8)\317\223*\207" [click event posn position mouse-secondary-overlay mouse-secondary-start mouse-minibuffer-check 1 selected-window (0 . 0) 0 window-buffer delete-overlay 5 make-marker nil] 5 (#$ . 38121) "e"]) #@115 Set the secondary selection to the text that the mouse is dragged over. This must be bound to a mouse drag event. (defalias 'mouse-set-secondary #[(click) "\306!\210\211:\203\307 8\202\310 `\311\312F)\313\211:\2031\314 8:\203+\314\202,\307 8\2027\310 `\315\312F)r\316\f\312 8)!q\210\f\317 8\206_\307 8:\203\\\307 8@\202_\307 8)\247\203\f\317 8\206}\307 8:\203z\307 8@\202}\307 8)\320 \n\317 8\206\234\307 8:\203\231\307 8@\202\234\307 8)#\210\321\322\323!\324!{\",\207" [click event end beg posn position mouse-minibuffer-check 1 selected-window (0 . 0) 0 nil 2 (0 . 0) window-buffer 5 move-overlay x-set-selection SECONDARY overlay-start overlay-end mouse-secondary-overlay] 7 (#$ . 38748) "e"]) #@243 Set the secondary selection to the text that the mouse is dragged over. Highlight the drag area as you move the mouse. This must be bound to a button-down mouse event. The function returns a non-nil value if it creates a secondary selection. (defalias 'mouse-drag-secondary #[(start-event) "\306!\210\307\211:\203\310\n8\202\311 `\312\307F)\211\313\f8\2064\310\f8:\2031\310\f8@\2024\310\f8) \307\f8)\314!\211A@ \315!\203W\3168\202\\\3168S!\211:\203r\317\n8\250\203r\317\n8\202s\310)S\"r\320!q\210\"#\321\"\316\"\307V\203\256\322 \211\"#$%\323\211\223\210\324&$@$A@\320!$\210)\202\302%\204\267\325 %% \323\223\210\326&!\210\323\211\211'(\327 \210\n:\205\352\330%!\203\336\331\213\202\352\332\333\334&!\335&!{\".\f\207" [start-event echo-keystrokes event start-posn position start-point mouse-minibuffer-check 0 1 selected-window (0 . 0) 5 window-edges window-minibuffer-p 3 2 window-buffer mod mouse-start-end nil move-overlay make-marker delete-overlay (lambda nil (track-mouse (byte-code "\306 \211\211\242)\307=\204\242\310>\205\317\242\311>\204\211:\2033\3128:\203-\312\202.\3138\2029\314 `\315\316F)\211\317 8\206T A@:\203Q A@@\202T A@)\n\211@) =\203\223\320\f!\203\223\321\f#\fU\203}\322!\204\217\323\211\223\210\324@A@#\210)\202\325 AA\211\203\313W\203\265\326 Z$\210\202\313Y\203\313\326 ZT$\210)\202\207" [event object end position end-point start-window read-event mouse-movement (switch-frame select-window) (switch-frame select-window) 2 1 selected-window (0 . 0) 0 5 integer-or-marker-p mouse-start-end marker-position nil move-overlay mouse-position mouse-scroll-subr start-point click-count range mouse-secondary-start mouse-secondary-overlay mouse-row top bottom] 6))) marker-position ((byte-code "\303!\210\304\305\306\"\210\307 !\210\212\nb\210\310\311!\210)\306\207" [mouse-secondary-overlay start-window mouse-secondary-start delete-overlay x-set-selection SECONDARY nil select-window sit-for 1] 3)) x-set-selection SECONDARY overlay-start overlay-end start-window bounds top bottom click-count mouse-secondary-click-count range mouse-secondary-start mouse-secondary-overlay end-point end] 7 (#$ . 39490) "e"]) #@188 Insert the secondary selection at the position clicked on. Move point to the end of the inserted text. If `mouse-yank-at-point' is non-nil, insert at point regardless of where you click. (defalias 'mouse-yank-secondary #[(click) "\302\303!\210\204\f\304 !\210\305\306!c\207" [mouse-yank-at-point click run-hooks mouse-leave-buffer-hook mouse-set-point x-get-selection SECONDARY] 2 (#$ . 41774) "e"]) #@310 Kill the text in the secondary selection. This is intended more as a keyboard command than as a mouse command but it can work as either one. The current buffer (in case of keyboard use), or the buffer clicked on, must be the one that the secondary selection is in. This requirement is to prevent accidents. (defalias 'mouse-kill-secondary #[nil "\306 \211\211GS\234\307\n! <\203/\310 \211:\203\311 8\202%\312 `\313\314F)\314\f8)!\2020p=\2048\315\316!\210*\317r\307\n!q\210\320\321\n!\322\n!\"\210*\323\n!\207" [keys click mouse-secondary-overlay event position this-command this-command-keys overlay-buffer window-buffer 1 selected-window (0 . 0) 0 error "Select or click on the buffer where the secondary selection is" nil kill-region overlay-start overlay-end delete-overlay] 7 (#$ . 42183) nil]) #@737 Save text to point in kill ring; the second time, kill the text. You must use this in a buffer where you have recently done \[mouse-start-secondary]. If the text between where you did \[mouse-start-secondary] and where you use this command matches the text at the front of the kill ring, this command deletes the text. Otherwise, it adds the text to the kill ring, like \[kill-ring-save], which prepares for a second click with this command to delete the text. If you have already made a secondary selection in that buffer, this command extends or retracts the selection to where you click. If you do this again in a different position, it extends or retracts again. If you do this twice in the same position, it kills the selection. (defalias 'mouse-secondary-save-then-kill #[(click) "\306!\210\211:\203\307 8\202\310 `\311\312F)\211:\203%\307 8\202+\310 `\311\312F)\313\n8\206D\307\n8:\203A\307\n8@\202D\307\n8) \314 \312\n8)!\315\"!\206a#\205a\316#!=\204i\317\320!\210r\314 \312\n8)!q\210\321$\322\"\312V\203\371%\323=\203\217\f&\243\243@\232\204\340\324\f\211$#'\325\f\326\"!Z!\325\f\327\"!Z!W\203\272\330\"'@\327\"!#\210\202\307\330\"\326\"!'A@#\210\331\326\"!\327\"!{\332\"\210(@`\fE&)\202\264\333\326\"!\327\"!\"\210\334&\312$\335\"!\210\202\264%\323=\203/&\203/&@(@=\203/&A`\fD\232\203/\333\326\"!\327\"!\"\210\334&\335\"!\210\202\264\326\"!\203\222\f\247\203i\325\f\326\"!Z!\325\f\327\"!Z!W\203\\\330\"\f\327\"!#\210\202f\330\"\326\"!\f#\210\334)%\323=\203\200\331\326\"!\327\"!{\332\"\210\202\254\334)\336\326\"!\327\"!\"\210)\202\254#\203\254#\312\\*\337*\f\"\210\330\"*\f#\210)(@`\fE&\315\"!\205\307\340\341\326\"!\327\"!{\",\207" [click event position this-command click-posn posn mouse-minibuffer-check 1 selected-window (0 . 0) 0 5 window-buffer overlay-buffer marker-buffer error "Wrong buffer" mod 3 mouse-secondary-save-then-kill mouse-start-end abs overlay-start overlay-end move-overlay kill-new t mouse-save-then-kill-delete-region nil delete-overlay copy-region-as-kill kill-ring-save x-set-selection SECONDARY mouse-secondary-overlay mouse-secondary-start mouse-secondary-click-count last-command mouse-save-then-kill-posn range kill-ring deactivate-mark start] 6 (#$ . 43002) "e"]) #@187 *Number of buffers in one pane (submenu) of the buffer menu. If we have lots of buffers, divide them into groups of `mouse-buffer-menu-maxlen' and make a pane (or submenu) for each one. (custom-declare-variable 'mouse-buffer-menu-maxlen '20 '(#$ . -45321) :type 'integer :group 'mouse) #@392 *Group the buffers by the major mode groups on \[mouse-buffer-menu]? This number which determines (in a hairy way) whether \[mouse-buffer-menu] will split the buffer menu by the major modes (see `mouse-buffer-menu-mode-groups') or just by menu length. Set to 1 (or even 0!) if you want to group by major mode always, and to a large number if you prefer a mixed multitude. The default is 4. (custom-declare-variable 'mouse-buffer-menu-mode-mult '4 '(#$ . -45614) :type 'integer :group 'mouse :version "20.3") #@187 How to group various major modes together in \[mouse-buffer-menu]. Each element has the form (REGEXP . GROUPNAME). If the major mode's name string matches REGEXP, use GROUPNAME instead. (defvar mouse-buffer-menu-mode-groups '(("Info\\|Help\\|Apropos\\|Man" . "Help") ("\\bVM\\b\\|\\bMH\\b\\|Message\\|Mail\\|Group\\|Score\\|Summary\\|Article" . "Mail/News") ("\\" . "C") ("ObjC" . "C") ("Text" . "Text") ("Outline" . "Text") ("\\(HT\\|SG\\|X\\|XHT\\)ML" . "SGML") ("log\\|diff\\|vc\\|cvs" . "Version Control") ("Lisp" . "Lisp")) (#$ . 46130)) #@138 Pop up a menu of buffers for selection with the mouse. This switches buffers in the window that you clicked on, and selects that window. (defalias 'mouse-buffer-menu #[(event) "\306!\210\307 \310\211\211\211\211\211!\203\210r!@q\210\"#\310$%\211!\203E\311!@@&\"\203<!@A#!A\211!\204+)\312#\n\"\211$\204f#\211;\203]#\202_&D\211$\nB!@$AA>\204~$A!@$AAB\241\210+!A\211!\204)\n!\313!\203\253 !@AAG\211'\211_)\\!A\211!\204\223) (_ G G_W\203+\310 G)*\314\n\315\"\211\203\n@G\316V\203)\317_ GV\203\320\n@AA!\211+\203\363\n@A@+B*B*))\n@AGZ)\nA\211\204\311\n\203!\320\321\322\323\324\n\"\"!\211,\203 \325,B*B*)\326*\237B*\2026\320 !\326\327\330\f\"B\331 \"\211:\203G\3328\202M\333 `\334\313F)-\313-8).\211/\205t\335\336.!\203l\337.!\202n.!\210\340/!.\207" [event sum-of-squares split-by-major-mode menu alist buffers mouse-minibuffer-check buffer-list nil string-match assoc 0 sort #[(elt1 elt2) "G GV\207" [elt1 elt2] 2] 3 10 mouse-buffer-menu-alist apply nconc mapcar cddr "Others" "Buffer Menu" mouse-buffer-menu-split "Select Buffer" x-popup-menu 1 selected-window (0 . 0) select-window framep frame-selected-window switch-to-buffer tail major-mode adjusted-major-mode elt mouse-buffer-menu-mode-groups mode-name len mouse-buffer-menu-mode-mult buffers-left subdivided-menus this-mode-list others-list position window buf] 7 (#$ . 46685) "e"]) (defalias 'mouse-buffer-menu-alist #[(buffers) "\306\307\306\310 \311\"\211\211\203+\312\n@!\307H\313=\204$ \312\n@!G]\nA\211\204 \211\203\205\n@\312\f!\307H\313U\204}\314\211\315 \"\312\f!\316\f!\203P\317\202Q\320\212\fq\210 \203]\321\202^\320)\322\f!\206w\212\fq\210\205r\323!)\206w\324%\fBB)\nA\211\2041\237+\207" [head maxlen tail buffers elt buffer-read-only nil 0 sort #[(elt1 elt2) "\302!\302 !\231\207" [elt1 elt2 buffer-name] 3] buffer-name 32 format "%%%ds %%s%%s %%s" buffer-modified-p "*" " " "%" buffer-file-name expand-file-name "" list-buffers-directory] 8]) (defalias 'mouse-buffer-menu-split #[(title alist) "G \306_\307\245V\203<\310\211\311\211\2038 \233\211\203& S\233\310\241\210\312\313\n\"B\fB\nT \211\204\f\237,\207 BC\207" [alist mouse-buffer-menu-maxlen i next sublists title 3 2 nil 1 format "Buffers %d"] 5]) #@69 Click on an alternative in the `*Completions*' buffer to choose it. (defalias 'mouse-choose-completion #[(event) "\306\307!\210\310 \311\211\212\310 \211:\203\312 8\202 \313 `\314\315F)\315\f8)!q\210 \203/ \212 \211:\203@\312 8\202F\313 `\314\315F)\316\f8\206_\312\f8:\203\\\312\f8@\202_\312\f8)b\210\311\211 m\204z\317`\320\"\203z``T  \204\203\321\322!\210\323 \320\" \324\320\"\206\223d\325 \",\313 !\326 \211:\203\257\312 8\202\265\313 `\314\315F)\315\f8)!\210\327\330\331\"\203\323\332\313 !\203\323\333\331 !\210\202\335\332\313 !\204\335\334 \210\326!!\210)\335 \n#+\207" [base-size choice buffer event position completion-reference-buffer run-hooks mouse-leave-buffer-hook window-buffer nil 1 selected-window (0 . 0) 0 5 get-text-property mouse-face error "No completion here" previous-single-property-change next-single-property-change buffer-substring-no-properties select-window one-window-p t selected-frame window-dedicated-p iconify-frame bury-buffer choose-completion-string completion-base-size end beg owindow] 6 (#$ . 49022) "e"]) (defalias 'font-menu-add-default #[nil "\304\305\306 !\236A \307\310\n\"\206\nA@\307\311 \"\203$\312\307\311 \" \"\210 \311D AB\241+\207" [default x-fixed-font-alist font-alist elt font frame-parameters selected-frame assoc "Misc" "Default" delete] 4]) #@36 X fonts suitable for use in Emacs. (defvar x-fixed-font-alist '("Font menu" ("Misc" ("fixed" "fixed") ("6x10" "-misc-fixed-medium-r-normal--10-*-*-*-c-60-iso8859-1" "6x10") ("6x12" "-misc-fixed-medium-r-semicondensed--12-*-*-*-c-60-iso8859-1" "6x12") ("6x13" "-misc-fixed-medium-r-semicondensed--13-*-*-*-c-60-iso8859-1" "6x13") ("7x13" "-misc-fixed-medium-r-normal--13-*-*-*-c-70-iso8859-1" "7x13") ("7x14" "-misc-fixed-medium-r-normal--14-*-*-*-c-70-iso8859-1" "7x14") ("8x13" "-misc-fixed-medium-r-normal--13-*-*-*-c-80-iso8859-1" "8x13") ("9x15" "-misc-fixed-medium-r-normal--15-*-*-*-c-90-iso8859-1" "9x15") ("10x20" "-misc-fixed-medium-r-normal--20-*-*-*-c-100-iso8859-1" "10x20") ("11x18" "-misc-fixed-medium-r-normal--18-*-*-*-c-110-iso8859-1" "11x18") ("12x24" "-misc-fixed-medium-r-normal--24-*-*-*-c-120-iso8859-1" "12x24") ("") ("clean 5x8" "-schumacher-clean-medium-r-normal--8-*-*-*-c-50-iso8859-1") ("clean 6x8" "-schumacher-clean-medium-r-normal--8-*-*-*-c-60-iso8859-1") ("clean 8x8" "-schumacher-clean-medium-r-normal--8-*-*-*-c-80-iso8859-1") ("clean 8x10" "-schumacher-clean-medium-r-normal--10-*-*-*-c-80-iso8859-1") ("clean 8x14" "-schumacher-clean-medium-r-normal--14-*-*-*-c-80-iso8859-1") ("clean 8x16" "-schumacher-clean-medium-r-normal--16-*-*-*-c-80-iso8859-1") ("") ("sony 8x16" "-sony-fixed-medium-r-normal--16-*-*-*-c-80-iso8859-1") ("lucidasanstypewriter-12" "-b&h-lucidatypewriter-medium-r-normal-sans-*-120-*-*-*-*-iso8859-1") ("lucidasanstypewriter-bold-14" "-b&h-lucidatypewriter-bold-r-normal-sans-*-140-*-*-*-*-iso8859-1") ("lucidasanstypewriter-bold-24" "-b&h-lucidatypewriter-bold-r-normal-sans-*-240-*-*-*-*-iso8859-1")) ("Courier" ("8" "-adobe-courier-medium-r-normal--*-80-*-*-m-*-iso8859-1") ("10" "-adobe-courier-medium-r-normal--*-100-*-*-m-*-iso8859-1") ("12" "-adobe-courier-medium-r-normal--*-120-*-*-m-*-iso8859-1") ("14" "-adobe-courier-medium-r-normal--*-140-*-*-m-*-iso8859-1") ("18" "-adobe-courier-medium-r-normal--*-180-*-*-m-*-iso8859-1") ("24" "-adobe-courier-medium-r-normal--*-240-*-*-m-*-iso8859-1") ("8 bold" "-adobe-courier-bold-r-normal--*-80-*-*-m-*-iso8859-1") ("10 bold" "-adobe-courier-bold-r-normal--*-100-*-*-m-*-iso8859-1") ("12 bold" "-adobe-courier-bold-r-normal--*-120-*-*-m-*-iso8859-1") ("14 bold" "-adobe-courier-bold-r-normal--*-140-*-*-m-*-iso8859-1") ("18 bold" "-adobe-courier-bold-r-normal--*-180-*-*-m-*-iso8859-1") ("24 bold" "-adobe-courier-bold-r-normal--*-240-*-*-m-*-iso8859-1") ("8 slant" "-adobe-courier-medium-o-normal--*-80-*-*-m-*-iso8859-1") ("10 slant" "-adobe-courier-medium-o-normal--*-100-*-*-m-*-iso8859-1") ("12 slant" "-adobe-courier-medium-o-normal--*-120-*-*-m-*-iso8859-1") ("14 slant" "-adobe-courier-medium-o-normal--*-140-*-*-m-*-iso8859-1") ("18 slant" "-adobe-courier-medium-o-normal--*-180-*-*-m-*-iso8859-1") ("24 slant" "-adobe-courier-medium-o-normal--*-240-*-*-m-*-iso8859-1") ("8 bold slant" "-adobe-courier-bold-o-normal--*-80-*-*-m-*-iso8859-1") ("10 bold slant" "-adobe-courier-bold-o-normal--*-100-*-*-m-*-iso8859-1") ("12 bold slant" "-adobe-courier-bold-o-normal--*-120-*-*-m-*-iso8859-1") ("14 bold slant" "-adobe-courier-bold-o-normal--*-140-*-*-m-*-iso8859-1") ("18 bold slant" "-adobe-courier-bold-o-normal--*-180-*-*-m-*-iso8859-1") ("24 bold slant" "-adobe-courier-bold-o-normal--*-240-*-*-m-*-iso8859-1"))) (#$ . 50388)) #@68 Select an Emacs font from a list of known good fonts and fontsets. (defalias 'mouse-set-font #[(&rest fonts) "\205\302\203\302\303\304\217\210\202 ?\205\305\306!)\207" [fonts font nil (byte-code "\302@!\210@\303\211\207" [fonts font set-default-font nil] 3) ((error (byte-code "A\301\207" [fonts nil] 1))) error "Font not found"] 3 (#$ . 53743) (byte-code "\302 \204 \303\304!\210\305<\203\202\306\307 D\310 \311 C\"\"\207" [last-nonmenu-event x-fixed-font-alist display-multi-font-p error "Cannot change fonts on this display" x-popup-menu (0 0) selected-window append generate-fontset-menu] 5)]) (byte-code "\302\303\304#\210\305\306\307\"\210\305\310\311\"\210\305\312\307\"\210\305\313\307\"\210\305\314\307\"\210\305\315\307\"\210\305\316\317\"\210\305\320\317\"\210\305\321\317\"\210\305\322\323\"\210\305\324\323\"\210\305\325\323\"\210\305\326\327\"\210 \330=\204R\305\331\332\"\210\305\333\334\"\210\305\335\336\"\210\305\337\336\"\210\305\340\341\"\210\305\342\343\"\210\305\344\336\"\210\305\345\346\"\210\305\347\350\"\210\305\351\352\"\210\305\353\354\"\210\305\355\354\"\210\305\356\357\"\210\305\360\336\"\210\361\362!\210\363\364\341\"\210\363\365\357\"\210\366\364\341\367#\210\366\365\357\367#\210\361\370!\207" [global-map system-type define-key [down-mouse-1] mouse-drag-region global-set-key [mouse-1] mouse-set-point [drag-mouse-1] mouse-set-region [double-mouse-1] [triple-mouse-1] [left-fringe mouse-1] [right-fringe mouse-1] [mouse-2] mouse-yank-at-click [right-fringe mouse-2] [left-fringe mouse-2] [mouse-3] mouse-save-then-kill [right-fringe mouse-3] [left-fringe mouse-3] [C-down-mouse-1] mouse-buffer-menu ms-dos [S-down-mouse-1] mouse-set-font [C-down-mouse-3] mouse-popup-menubar-stuff [mode-line mouse-1] mouse-select-window [mode-line drag-mouse-1] [mode-line down-mouse-1] mouse-drag-mode-line [header-line down-mouse-1] mouse-drag-header-line [header-line mouse-1] [mode-line mouse-2] mouse-delete-other-windows [mode-line mouse-3] mouse-delete-window [mode-line C-mouse-2] mouse-split-window-horizontally [vertical-scroll-bar C-mouse-2] mouse-split-window-vertically [vertical-line C-mouse-2] [vertical-line down-mouse-1] mouse-drag-vertical-line [vertical-line mouse-1] provide mouse defalias mldrag-drag-mode-line mldrag-drag-vertical-line make-obsolete "21.1" mldrag] 4)