:group 'mouse)
(defcustom mouse-highlight-text 'context
- "*Choose the default double-click highlighting behaviour.
+ "*Choose the default double-click highlighting behavior.
If set to `context', double-click will highlight words when the mouse
is at a word character, or a symbol if the mouse is at a symbol
character.
If set to `word', double-click will always attempt to highlight a word.
If set to `symbol', double-click will always attempt to highlight a
- symbol (the default behaviour in previous XEmacs versions)."
+ symbol (the default behavior in previous XEmacs versions)."
:type '(choice (const context)
(const word)
(const symbol))
"Function that is called upon by `mouse-yank' to actually insert text.")
(defun mouse-consolidated-yank ()
+ "Insert the current selection or, if there is none under X insert
+the X cutbuffer. A mark is pushed, so that the inserted text lies
+between point and mark."
(interactive)
- (case (device-type)
- (x (x-yank-function))
- (tty (yank))
- (otherwise (yank))))
+ (if (and (not (console-on-window-system-p))
+ (and (featurep 'gpm)
+ (not gpm-minor-mode)))
+ (yank)
+ (push-mark)
+ (if (region-active-p)
+ (if (consp zmacs-region-extent)
+ ;; pirated code from insert-rectangle in rect.el
+ ;; perhaps that code should be modified to handle a list of extents
+ ;; as the rectangle to be inserted?
+ (let ((lines zmacs-region-extent)
+ (insertcolumn (current-column))
+ (first t))
+ (push-mark)
+ (while lines
+ (or first
+ (progn
+ (forward-line 1)
+ (or (bolp) (insert ?\n))
+ (move-to-column insertcolumn t)))
+ (setq first nil)
+ (insert (extent-string (car lines)))
+ (setq lines (cdr lines))))
+ (insert (extent-string zmacs-region-extent)))
+ (insert-selection t))))
+
+(defun insert-selection (&optional check-cutbuffer-p move-point-event)
+ "Insert the current selection into buffer at point."
+ (interactive "P")
+ ;; we fallback to the clipboard if the current selection is not existent
+ (let ((text (if check-cutbuffer-p
+ (or (get-selection-no-error)
+ (get-cutbuffer)
+ (get-selection-no-error 'CLIPBOARD)
+ (error "No selection, clipboard or cut buffer available"))
+ (or (get-selection-no-error)
+ (get-selection 'CLIPBOARD)))))
+ (cond (move-point-event
+ (mouse-set-point move-point-event)
+ (push-mark (point)))
+ ((interactive-p)
+ (push-mark (point))))
+ (insert text)
+ ))
\f
(defun mouse-select ()
(if (click-inside-extent-p event zmacs-region-extent)
;; okay, this is a drag
(cond ((featurep 'offix)
- (offix-start-drag-region event
- (extent-start-position zmacs-region-extent)
- (extent-end-position zmacs-region-extent)))
+ (offix-start-drag-region
+ event
+ (extent-start-position zmacs-region-extent)
+ (extent-end-position zmacs-region-extent)))
((featurep 'cde)
;; should also work with CDE
(cde-start-drag-region event
;; always sufficient but it seems to give something
;; approaching a 99% success rate. Making it higher yet
;; would help guarantee success with the price that the
- ;; delay would start to become noticable.
+ ;; delay would start to become noticeable.
;;
(and (eq (console-type) 'x)
(sit-for 0.15 t))
;; vars is a list of glyph variables to check for a pointer
;; value.
(vars (cond
- ;; Checking if button is non-nil is not sufficent
+ ;; Checking if button is non-nil is not sufficient
;; since the pointer could be over a blank portion
;; of the toolbar.
((event-over-toolbar-p event)
(cond ((extentp help)
(or inhibit-help-echo
(eq help last-help-echo-object) ;save some time
+ (eq (selected-window) (minibuffer-window))
(let ((hprop (extent-property help 'help-echo)))
(setq last-help-echo-object help)
(or (stringp hprop)
(toolbar-button-enabled-p help))
(or (not toolbar-help-enabled)
(eq help last-help-echo-object) ;save some time
+ (eq (selected-window) (minibuffer-window))
(let ((hstring (toolbar-button-help-string button)))
(setq last-help-echo-object help)
(or (stringp hstring)
(setq hstring (funcall hstring help)))
- (show-help-echo hstring))))
+ (and hstring (show-help-echo hstring)))))
(last-help-echo-object
(clear-help-echo)))
(if mouse-grabbed-buffer (setq buffer mouse-grabbed-buffer))
(setq last-timestamp (event-timestamp event))
;; Enlarge the window, calculating change in characters
;; of default font. Do not let the window to become
- ;; less than alolwed minimum (not because that's critical
+ ;; less than allowed minimum (not because that's critical
;; for the code performance, just the visual effect is
;; better: when cursor goes to the left of the next left
- ;; divider, the vindow being resized shrinks to minimal
+ ;; divider, the window being resized shrinks to minimal
;; size.
(enlarge-window (max (- window-min-width (window-width window))
(/ (- (event-x-pixel event) old-right)
;; if the change caused more than two windows to resize
;; (shifting the whole stack right is ugly), or if the
;; left window side has slipped (right side cannot be
- ;; moved any funrther to the right, so enlarge-window
+ ;; moved any further to the right, so enlarge-window
;; plays bad games with the left edge.
(if (or (/= (count-windows) (length old-edges-all-windows))
(/= old-left (car (window-pixel-edges window)))