mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-03 02:31:03 -08:00
Remove XEmacs compat code from dframe.el
* lisp/dframe.el (dframe-update-speed, dframe-update-keymap) (dframe-frame-mode, dframe-detach, dframe-set-timer-internal) (dframe-popup-kludge, dframe-mouse-event-p) (dframe-track-mouse, dframe-help-echo, dframe-mouse-set-point) (dframe-double-click, dframe-temp-buffer-show-function) (dframe-hack-buffer-menu, dframe-mouse-hscroll): Remove XEmacs compat code (and some ancient Emacs compat code).
This commit is contained in:
parent
613d3848b8
commit
e46fc9b017
1 changed files with 80 additions and 242 deletions
322
lisp/dframe.el
322
lisp/dframe.el
|
|
@ -135,9 +135,7 @@
|
||||||
This is nil for terminals, since updating a frame in a terminal
|
This is nil for terminals, since updating a frame in a terminal
|
||||||
is not useful to the user.")
|
is not useful to the user.")
|
||||||
|
|
||||||
(defcustom dframe-update-speed
|
(defcustom dframe-update-speed 1
|
||||||
(if (featurep 'xemacs) 2 ; 1 is too obtrusive in XEmacs
|
|
||||||
1)
|
|
||||||
"Idle time in seconds needed before dframe will update itself.
|
"Idle time in seconds needed before dframe will update itself.
|
||||||
Updates occur to allow dframe to display directory information
|
Updates occur to allow dframe to display directory information
|
||||||
relevant to the buffer you are currently editing."
|
relevant to the buffer you are currently editing."
|
||||||
|
|
@ -204,40 +202,28 @@ Local to those buffers, as a function called that created it.")
|
||||||
'dframe-switch-buffer-attached-frame
|
'dframe-switch-buffer-attached-frame
|
||||||
map global-map)
|
map global-map)
|
||||||
|
|
||||||
(if (featurep 'xemacs)
|
;; mouse bindings so we can manipulate the items on each line
|
||||||
(progn
|
;; (define-key map [down-mouse-1] 'dframe-double-click)
|
||||||
;; mouse bindings so we can manipulate the items on each line
|
(define-key map [follow-link] 'mouse-face)
|
||||||
(define-key map 'button2 'dframe-click)
|
(define-key map [mouse-2] 'dframe-click)
|
||||||
(define-key map '(shift button2) 'dframe-power-click)
|
;; This is the power click for new frames, or refreshing a cache
|
||||||
;; Info doc fix from Bob Weiner
|
(define-key map [S-mouse-2] 'dframe-power-click)
|
||||||
(if (featurep 'infodoc)
|
;; This adds a small unnecessary visual effect
|
||||||
nil
|
;;(define-key map [down-mouse-2] 'dframe-quick-mouse)
|
||||||
(define-key map 'button3 'dframe-popup-kludge))
|
|
||||||
)
|
|
||||||
|
|
||||||
;; mouse bindings so we can manipulate the items on each line
|
(define-key map [down-mouse-3] 'dframe-popup-kludge)
|
||||||
;; (define-key map [down-mouse-1] 'dframe-double-click)
|
|
||||||
(define-key map [follow-link] 'mouse-face)
|
|
||||||
(define-key map [mouse-2] 'dframe-click)
|
|
||||||
;; This is the power click for new frames, or refreshing a cache
|
|
||||||
(define-key map [S-mouse-2] 'dframe-power-click)
|
|
||||||
;; This adds a small unnecessary visual effect
|
|
||||||
;;(define-key map [down-mouse-2] 'dframe-quick-mouse)
|
|
||||||
|
|
||||||
(define-key map [down-mouse-3] 'dframe-popup-kludge)
|
;; This lets the user scroll as if we had a scrollbar... well maybe not
|
||||||
|
(define-key map [mode-line mouse-2] 'dframe-mouse-hscroll)
|
||||||
|
;; another handy place users might click to get our menu.
|
||||||
|
(define-key map [mode-line down-mouse-1]
|
||||||
|
'dframe-popup-kludge)
|
||||||
|
|
||||||
;; This lets the user scroll as if we had a scrollbar... well maybe not
|
;; We can't switch buffers with the buffer mouse menu. Lets hack it.
|
||||||
(define-key map [mode-line mouse-2] 'dframe-mouse-hscroll)
|
(define-key map [C-down-mouse-1] 'dframe-hack-buffer-menu)
|
||||||
;; another handy place users might click to get our menu.
|
|
||||||
(define-key map [mode-line down-mouse-1]
|
|
||||||
'dframe-popup-kludge)
|
|
||||||
|
|
||||||
;; We can't switch buffers with the buffer mouse menu. Lets hack it.
|
;; Lastly, we want to track the mouse. Play here
|
||||||
(define-key map [C-down-mouse-1] 'dframe-hack-buffer-menu)
|
(define-key map [mouse-movement] 'dframe-track-mouse))
|
||||||
|
|
||||||
;; Lastly, we want to track the mouse. Play here
|
|
||||||
(define-key map [mouse-movement] 'dframe-track-mouse)
|
|
||||||
))
|
|
||||||
|
|
||||||
(defun dframe-live-p (frame)
|
(defun dframe-live-p (frame)
|
||||||
"Return non-nil if FRAME is currently available."
|
"Return non-nil if FRAME is currently available."
|
||||||
|
|
@ -296,40 +282,10 @@ CREATE-HOOK is a hook to run after creating a frame."
|
||||||
;; Declare this buffer a dedicated frame
|
;; Declare this buffer a dedicated frame
|
||||||
(setq dframe-controlled local-mode-fn)
|
(setq dframe-controlled local-mode-fn)
|
||||||
|
|
||||||
(if (featurep 'xemacs)
|
;; Enable mouse tracking in emacs
|
||||||
(progn
|
(if dframe-track-mouse-function
|
||||||
;; Hack the XEmacs mouse-motion handler
|
(set (make-local-variable 'track-mouse) t)) ;this could be messy.
|
||||||
(set (make-local-variable 'mouse-motion-handler)
|
|
||||||
'dframe-track-mouse-xemacs)
|
|
||||||
;; Hack the double click handler
|
|
||||||
(make-local-variable 'mouse-track-click-hook)
|
|
||||||
(add-hook 'mouse-track-click-hook
|
|
||||||
(lambda (event count)
|
|
||||||
(if (/= (event-button event) 1)
|
|
||||||
nil ; Do normal operations.
|
|
||||||
(cond ((eq count 1)
|
|
||||||
(dframe-quick-mouse event))
|
|
||||||
((or (eq count 2)
|
|
||||||
(eq count 3))
|
|
||||||
(dframe-click event)
|
|
||||||
(dframe-quick-mouse event)))
|
|
||||||
;; Don't do normal operations.
|
|
||||||
t))))
|
|
||||||
;; Enable mouse tracking in emacs
|
|
||||||
(if dframe-track-mouse-function
|
|
||||||
(set (make-local-variable 'track-mouse) t))) ;this could be messy.
|
|
||||||
;;;; DISABLED: This causes problems for users with multiple frames.
|
|
||||||
;;;; ;; Set this up special just for the passed in buffer
|
|
||||||
;;;; ;; Terminal minibuffer stuff does not require this.
|
|
||||||
;;;; (if (and (or (assoc 'minibuffer parameters)
|
|
||||||
;;;; ;; XEmacs plist is not an association list
|
|
||||||
;;;; (member 'minibuffer parameters))
|
|
||||||
;;;; window-system (not (eq window-system 'pc))
|
|
||||||
;;;; (null default-minibuffer-frame))
|
|
||||||
;;;; (progn
|
|
||||||
;;;; (make-local-variable 'default-minibuffer-frame)
|
|
||||||
;;;; (setq default-minibuffer-frame dframe-attached-frame))
|
|
||||||
;;;; )
|
|
||||||
;; Override `temp-buffer-show-hook' so that help and such
|
;; Override `temp-buffer-show-hook' so that help and such
|
||||||
;; put their stuff into a frame other than our own.
|
;; put their stuff into a frame other than our own.
|
||||||
;; Correct use of `temp-buffer-show-function': Bob Weiner
|
;; Correct use of `temp-buffer-show-function': Bob Weiner
|
||||||
|
|
@ -350,8 +306,7 @@ CREATE-HOOK is a hook to run after creating a frame."
|
||||||
(funcall dframe-controlled -1)
|
(funcall dframe-controlled -1)
|
||||||
(set buffer-var nil)
|
(set buffer-var nil)
|
||||||
)))))
|
)))))
|
||||||
t t)
|
t t))
|
||||||
)
|
|
||||||
;; Get the frame to work in
|
;; Get the frame to work in
|
||||||
(if (frame-live-p (symbol-value cache-var))
|
(if (frame-live-p (symbol-value cache-var))
|
||||||
(progn
|
(progn
|
||||||
|
|
@ -367,39 +322,32 @@ CREATE-HOOK is a hook to run after creating a frame."
|
||||||
(if (frame-live-p (symbol-value frame-var))
|
(if (frame-live-p (symbol-value frame-var))
|
||||||
(raise-frame (symbol-value frame-var))
|
(raise-frame (symbol-value frame-var))
|
||||||
(set frame-var
|
(set frame-var
|
||||||
(if (featurep 'xemacs)
|
(let* ((mh (dframe-frame-parameter dframe-attached-frame
|
||||||
;; Only guess height if it is not specified.
|
'menu-bar-lines))
|
||||||
(if (member 'height parameters)
|
(paramsa
|
||||||
(make-frame parameters)
|
;; Only add a guessed height if one is not specified
|
||||||
(make-frame (nconc (list 'height
|
;; in the input parameters.
|
||||||
(dframe-needed-height))
|
(if (assoc 'height parameters)
|
||||||
parameters)))
|
parameters
|
||||||
(let* ((mh (dframe-frame-parameter dframe-attached-frame
|
(append
|
||||||
'menu-bar-lines))
|
parameters
|
||||||
(paramsa
|
(list (cons 'height (+ (or mh 0) (frame-height)))))))
|
||||||
;; Only add a guessed height if one is not specified
|
(params
|
||||||
;; in the input parameters.
|
;; Only add a guessed width if one is not specified
|
||||||
(if (assoc 'height parameters)
|
;; in the input parameters.
|
||||||
parameters
|
(if (assoc 'width parameters)
|
||||||
(append
|
paramsa
|
||||||
parameters
|
(append
|
||||||
(list (cons 'height (+ (or mh 0) (frame-height)))))))
|
paramsa
|
||||||
(params
|
(list (cons 'width (frame-width))))))
|
||||||
;; Only add a guessed width if one is not specified
|
(frame
|
||||||
;; in the input parameters.
|
(if (not (eq window-system 'x))
|
||||||
(if (assoc 'width parameters)
|
(make-frame params)
|
||||||
paramsa
|
(let ((x-pointer-shape x-pointer-top-left-arrow)
|
||||||
(append
|
(x-sensitive-text-pointer-shape
|
||||||
paramsa
|
x-pointer-hand2))
|
||||||
(list (cons 'width (frame-width))))))
|
(make-frame params)))))
|
||||||
(frame
|
frame))
|
||||||
(if (not (eq window-system 'x))
|
|
||||||
(make-frame params)
|
|
||||||
(let ((x-pointer-shape x-pointer-top-left-arrow)
|
|
||||||
(x-sensitive-text-pointer-shape
|
|
||||||
x-pointer-hand2))
|
|
||||||
(make-frame params)))))
|
|
||||||
frame)))
|
|
||||||
;; Put the buffer into the frame
|
;; Put the buffer into the frame
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(select-frame (symbol-value frame-var))
|
(select-frame (symbol-value frame-var))
|
||||||
|
|
@ -416,21 +364,13 @@ CREATE-HOOK is a hook to run after creating a frame."
|
||||||
;; On a terminal, raise the frame or the user will
|
;; On a terminal, raise the frame or the user will
|
||||||
;; be confused.
|
;; be confused.
|
||||||
(if (not window-system)
|
(if (not window-system)
|
||||||
(select-frame (symbol-value frame-var)))
|
(select-frame (symbol-value frame-var)))))))
|
||||||
))) )
|
|
||||||
|
|
||||||
(defun dframe-reposition-frame (new-frame parent-frame location)
|
|
||||||
"Move NEW-FRAME to be relative to PARENT-FRAME.
|
|
||||||
LOCATION can be one of `random', `left', `right', `left-right', or `top-bottom'."
|
|
||||||
(if (featurep 'xemacs)
|
|
||||||
(dframe-reposition-frame-xemacs new-frame parent-frame location)
|
|
||||||
(dframe-reposition-frame-emacs new-frame parent-frame location)))
|
|
||||||
|
|
||||||
;; Not defined in builds without X, but behind window-system test.
|
;; Not defined in builds without X, but behind window-system test.
|
||||||
(declare-function x-display-pixel-width "xfns.c" (&optional terminal))
|
(declare-function x-display-pixel-width "xfns.c" (&optional terminal))
|
||||||
(declare-function x-display-pixel-height "xfns.c" (&optional terminal))
|
(declare-function x-display-pixel-height "xfns.c" (&optional terminal))
|
||||||
|
|
||||||
(defun dframe-reposition-frame-emacs (new-frame parent-frame location)
|
(defun dframe-reposition-frame (new-frame parent-frame location)
|
||||||
"Move NEW-FRAME to be relative to PARENT-FRAME.
|
"Move NEW-FRAME to be relative to PARENT-FRAME.
|
||||||
LOCATION can be one of `random', `left-right', `top-bottom', or
|
LOCATION can be one of `random', `left-right', `top-bottom', or
|
||||||
a cons cell indicating a position of the form (LEFT . TOP)."
|
a cons cell indicating a position of the form (LEFT . TOP)."
|
||||||
|
|
@ -513,22 +453,6 @@ a cons cell indicating a position of the form (LEFT . TOP)."
|
||||||
(list (cons 'left newleft)
|
(list (cons 'left newleft)
|
||||||
(cons 'top newtop))))))
|
(cons 'top newtop))))))
|
||||||
|
|
||||||
(defun dframe-reposition-frame-xemacs (_new-frame _parent-frame _location)
|
|
||||||
"Move NEW-FRAME to be relative to PARENT-FRAME.
|
|
||||||
LOCATION can be one of `random', `left-right', or `top-bottom'."
|
|
||||||
;; Not yet implemented
|
|
||||||
)
|
|
||||||
|
|
||||||
;; XEmacs function only.
|
|
||||||
(defun dframe-needed-height (&optional frame)
|
|
||||||
"The needed height for the tool bar FRAME (in characters)."
|
|
||||||
(or frame (setq frame (selected-frame)))
|
|
||||||
;; The 1 is the missing mode line or minibuffer
|
|
||||||
(+ 1 (/ (frame-pixel-height frame)
|
|
||||||
;; This obscure code avoids a byte compiler warning in Emacs.
|
|
||||||
(let ((f 'face-height))
|
|
||||||
(funcall f 'default frame)))))
|
|
||||||
|
|
||||||
(defun dframe-detach (frame-var cache-var buffer-var)
|
(defun dframe-detach (frame-var cache-var buffer-var)
|
||||||
"Detach the frame in symbol FRAME-VAR.
|
"Detach the frame in symbol FRAME-VAR.
|
||||||
CACHE-VAR and BUFFER-VAR are symbols as in `dframe-frame-mode'."
|
CACHE-VAR and BUFFER-VAR are symbols as in `dframe-frame-mode'."
|
||||||
|
|
@ -540,8 +464,7 @@ CACHE-VAR and BUFFER-VAR are symbols as in `dframe-frame-mode'."
|
||||||
(set cache-var nil)
|
(set cache-var nil)
|
||||||
;; FIXME: Looks very suspicious. Luckily this function is unused.
|
;; FIXME: Looks very suspicious. Luckily this function is unused.
|
||||||
(make-variable-buffer-local frame-var)
|
(make-variable-buffer-local frame-var)
|
||||||
(set frame-var oldframe)
|
(set frame-var oldframe))))
|
||||||
)))
|
|
||||||
|
|
||||||
;;; Special frame event proxies
|
;;; Special frame event proxies
|
||||||
(defvar dframe-setup-hook nil
|
(defvar dframe-setup-hook nil
|
||||||
|
|
@ -748,16 +671,10 @@ who requested the timer. NULL-ON-ERROR is ignored."
|
||||||
(defun dframe-set-timer-internal (timeout &optional _null-on-error)
|
(defun dframe-set-timer-internal (timeout &optional _null-on-error)
|
||||||
"Apply a timer with TIMEOUT to call the dframe timer manager."
|
"Apply a timer with TIMEOUT to call the dframe timer manager."
|
||||||
(when dframe-timer
|
(when dframe-timer
|
||||||
(if (featurep 'xemacs)
|
(cancel-timer dframe-timer)
|
||||||
(delete-itimer dframe-timer)
|
|
||||||
(cancel-timer dframe-timer))
|
|
||||||
(setq dframe-timer nil))
|
(setq dframe-timer nil))
|
||||||
(when timeout
|
(when timeout
|
||||||
(setq dframe-timer
|
(setq dframe-timer (run-with-idle-timer timeout t 'dframe-timer-fn))))
|
||||||
(if (featurep 'xemacs)
|
|
||||||
(start-itimer "dframe" 'dframe-timer-fn
|
|
||||||
timeout timeout t)
|
|
||||||
(run-with-idle-timer timeout t 'dframe-timer-fn)))))
|
|
||||||
|
|
||||||
(defun dframe-timer-fn ()
|
(defun dframe-timer-fn ()
|
||||||
"Called due to the dframe timer.
|
"Called due to the dframe timer.
|
||||||
|
|
@ -768,90 +685,40 @@ Evaluates all cached timer functions in sequence."
|
||||||
(funcall (car l)))
|
(funcall (car l)))
|
||||||
(setq l (cdr l)))))
|
(setq l (cdr l)))))
|
||||||
|
|
||||||
;;; Menu hacking for mouse-3
|
|
||||||
;;
|
|
||||||
(defconst dframe-pass-event-to-popup-mode-menu
|
|
||||||
(let (max-args)
|
|
||||||
(and (fboundp 'popup-mode-menu)
|
|
||||||
(fboundp 'function-max-args)
|
|
||||||
(setq max-args (function-max-args 'popup-mode-menu))
|
|
||||||
(not (zerop max-args))))
|
|
||||||
"The EVENT arg to `popup-mode-menu' was introduced in XEmacs 21.4.0.")
|
|
||||||
|
|
||||||
;; In XEmacs, we make popup menus work on the item over mouse (as
|
|
||||||
;; opposed to where the point happens to be.) We attain this by
|
|
||||||
;; temporarily moving the point to that place.
|
|
||||||
;; Hrvoje Nikšić <hrvoje.niksic@avl.com>
|
|
||||||
(defalias 'dframe-popup-kludge
|
(defalias 'dframe-popup-kludge
|
||||||
(if (featurep 'xemacs)
|
(lambda (e)
|
||||||
(lambda (event) ; XEmacs.
|
"Pop up a menu related to the clicked on item.
|
||||||
"Pop up a menu related to the clicked on item.
|
|
||||||
Must be bound to EVENT."
|
|
||||||
(interactive "e")
|
|
||||||
(save-excursion
|
|
||||||
(if dframe-pass-event-to-popup-mode-menu
|
|
||||||
(popup-mode-menu event)
|
|
||||||
(goto-char (event-closest-point event))
|
|
||||||
(beginning-of-line)
|
|
||||||
(forward-char (min 5 (- (line-end-position)
|
|
||||||
(line-beginning-position))))
|
|
||||||
(popup-mode-menu))
|
|
||||||
;; Wait for menu to bail out. `popup-mode-menu' (and other popup
|
|
||||||
;; menu functions) return immediately.
|
|
||||||
(let (new)
|
|
||||||
(while (not (misc-user-event-p (setq new (next-event))))
|
|
||||||
(dispatch-event new))
|
|
||||||
(dispatch-event new))))
|
|
||||||
|
|
||||||
(lambda (e) ; Emacs.
|
|
||||||
"Pop up a menu related to the clicked on item.
|
|
||||||
Must be bound to event E."
|
Must be bound to event E."
|
||||||
(interactive "e")
|
(interactive "e")
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(mouse-set-point e)
|
(mouse-set-point e)
|
||||||
;; This gets the cursor where the user can see it.
|
;; This gets the cursor where the user can see it.
|
||||||
(if (not (bolp)) (forward-char -1))
|
(if (not (bolp)) (forward-char -1))
|
||||||
(sit-for 0)
|
(sit-for 0)
|
||||||
(if (fboundp 'mouse-menu-major-mode-map)
|
(popup-menu (mouse-menu-major-mode-map) e))))
|
||||||
(popup-menu (mouse-menu-major-mode-map) e)
|
|
||||||
(with-no-warnings ; don't warn about obsolete fallback
|
|
||||||
(mouse-major-mode-menu e nil)))))))
|
|
||||||
|
|
||||||
;;; Interactive user functions for the mouse
|
;;; Interactive user functions for the mouse
|
||||||
;;
|
;;
|
||||||
(defalias 'dframe-mouse-event-p
|
(defalias 'dframe-mouse-event-p
|
||||||
(if (featurep 'xemacs)
|
(lambda (event)
|
||||||
'button-press-event-p
|
"Return t if the event is a mouse related event."
|
||||||
(lambda (event)
|
(if (and (listp event)
|
||||||
"Return t if the event is a mouse related event."
|
(member (event-basic-type event)
|
||||||
(if (and (listp event)
|
'(mouse-1 mouse-2 mouse-3)))
|
||||||
(member (event-basic-type event)
|
t
|
||||||
'(mouse-1 mouse-2 mouse-3)))
|
nil)))
|
||||||
t
|
|
||||||
nil))))
|
|
||||||
|
|
||||||
(defun dframe-track-mouse (event)
|
(defun dframe-track-mouse (event)
|
||||||
"For motion EVENT, display info about the current line."
|
"For motion EVENT, display info about the current line."
|
||||||
(interactive "e")
|
(interactive "e")
|
||||||
(when (and dframe-track-mouse-function
|
(when (and dframe-track-mouse-function
|
||||||
(or (featurep 'xemacs) ;; XEmacs always safe?
|
(windowp (posn-window (event-end event)))) ; Sometimes
|
||||||
(windowp (posn-window (event-end event))) ; Sometimes
|
|
||||||
; there is no window to jump into.
|
; there is no window to jump into.
|
||||||
))
|
|
||||||
|
|
||||||
(funcall dframe-track-mouse-function event)))
|
(funcall dframe-track-mouse-function event)))
|
||||||
|
|
||||||
(defun dframe-track-mouse-xemacs (event)
|
|
||||||
"For motion EVENT, display info about the current line."
|
|
||||||
(if (functionp (default-value 'mouse-motion-handler))
|
|
||||||
(funcall (default-value 'mouse-motion-handler) event))
|
|
||||||
(if dframe-track-mouse-function
|
|
||||||
(funcall dframe-track-mouse-function event)))
|
|
||||||
|
|
||||||
(defun dframe-help-echo (_window &optional buffer position)
|
(defun dframe-help-echo (_window &optional buffer position)
|
||||||
"Display help based context.
|
"Display help based context.
|
||||||
The context is in WINDOW, viewing BUFFER, at POSITION.
|
The context is in WINDOW, viewing BUFFER, at POSITION."
|
||||||
BUFFER and POSITION are optional because XEmacs doesn't use them."
|
|
||||||
(when (and (not dframe-track-mouse-function)
|
(when (and (not dframe-track-mouse-function)
|
||||||
(bufferp buffer)
|
(bufferp buffer)
|
||||||
dframe-help-echo-function)
|
dframe-help-echo-function)
|
||||||
|
|
@ -862,22 +729,8 @@ BUFFER and POSITION are optional because XEmacs doesn't use them."
|
||||||
(funcall dframe-help-echo-function))))))
|
(funcall dframe-help-echo-function))))))
|
||||||
|
|
||||||
(defun dframe-mouse-set-point (e)
|
(defun dframe-mouse-set-point (e)
|
||||||
"Set point based on event E.
|
"Set point based on event E."
|
||||||
Handles clicking on images in XEmacs."
|
(mouse-set-point e))
|
||||||
(if (and (featurep 'xemacs)
|
|
||||||
(save-excursion
|
|
||||||
(save-window-excursion
|
|
||||||
(mouse-set-point e)
|
|
||||||
(event-over-glyph-p e))))
|
|
||||||
;; We are in XEmacs, and clicked on a picture
|
|
||||||
(let ((ext (event-glyph-extent e)))
|
|
||||||
;; This position is back inside the extent where the
|
|
||||||
;; junk we pushed into the property list lives.
|
|
||||||
(if (extent-end-position ext)
|
|
||||||
(goto-char (1- (extent-end-position ext)))
|
|
||||||
(mouse-set-point e)))
|
|
||||||
;; We are not in XEmacs, OR we didn't click on a picture.
|
|
||||||
(mouse-set-point e)))
|
|
||||||
|
|
||||||
(defun dframe-quick-mouse (e)
|
(defun dframe-quick-mouse (e)
|
||||||
"Since mouse events are strange, this will keep the mouse nicely positioned.
|
"Since mouse events are strange, this will keep the mouse nicely positioned.
|
||||||
|
|
@ -912,7 +765,6 @@ E is the event causing the click."
|
||||||
This must be bound to a mouse event.
|
This must be bound to a mouse event.
|
||||||
This should be bound to mouse event E."
|
This should be bound to mouse event E."
|
||||||
(interactive "e")
|
(interactive "e")
|
||||||
;; Emacs only. XEmacs handles this via `mouse-track-click-hook'.
|
|
||||||
(cond ((eq (car e) 'down-mouse-1)
|
(cond ((eq (car e) 'down-mouse-1)
|
||||||
(dframe-mouse-set-point e))
|
(dframe-mouse-set-point e))
|
||||||
((eq (car e) 'mouse-1)
|
((eq (car e) 'mouse-1)
|
||||||
|
|
@ -933,15 +785,7 @@ redirected into a window on the attached frame."
|
||||||
(if dframe-attached-frame (dframe-select-attached-frame))
|
(if dframe-attached-frame (dframe-select-attached-frame))
|
||||||
(pop-to-buffer buffer nil)
|
(pop-to-buffer buffer nil)
|
||||||
(other-window -1)
|
(other-window -1)
|
||||||
;; Fix for using this hook on some platforms: Bob Weiner
|
(run-hooks 'temp-buffer-show-hook))
|
||||||
(cond ((not (featurep 'xemacs))
|
|
||||||
(run-hooks 'temp-buffer-show-hook))
|
|
||||||
((fboundp 'run-hook-with-args)
|
|
||||||
(run-hook-with-args 'temp-buffer-show-hook buffer))
|
|
||||||
((and (boundp 'temp-buffer-show-hook)
|
|
||||||
(listp temp-buffer-show-hook))
|
|
||||||
(mapcar (function (lambda (hook) (funcall hook buffer)))
|
|
||||||
temp-buffer-show-hook))))
|
|
||||||
|
|
||||||
(defun dframe-hack-buffer-menu (_e)
|
(defun dframe-hack-buffer-menu (_e)
|
||||||
"Control mouse 1 is buffer menu.
|
"Control mouse 1 is buffer menu.
|
||||||
|
|
@ -949,9 +793,7 @@ This hack overrides it so that the right thing happens in the main
|
||||||
Emacs frame, not in the dedicated frame.
|
Emacs frame, not in the dedicated frame.
|
||||||
Argument E is the event causing this activity."
|
Argument E is the event causing this activity."
|
||||||
(interactive "e")
|
(interactive "e")
|
||||||
(let ((fn (lookup-key global-map (if (featurep 'xemacs)
|
(let ((fn (lookup-key global-map [C-down-mouse-1]))
|
||||||
'(control button1)
|
|
||||||
[C-down-mouse-1])))
|
|
||||||
(oldbuff (current-buffer))
|
(oldbuff (current-buffer))
|
||||||
(newbuff nil))
|
(newbuff nil))
|
||||||
(unwind-protect
|
(unwind-protect
|
||||||
|
|
@ -977,19 +819,15 @@ broken because of the dedicated frame."
|
||||||
(switch-to-buffer buffer)
|
(switch-to-buffer buffer)
|
||||||
(call-interactively 'switch-to-buffer nil nil)))
|
(call-interactively 'switch-to-buffer nil nil)))
|
||||||
|
|
||||||
;; XEmacs: this can be implemented using mode line keymaps, but there
|
|
||||||
;; is no use, as we have horizontal scrollbar (as the docstring
|
|
||||||
;; hints.)
|
|
||||||
(defun dframe-mouse-hscroll (e)
|
(defun dframe-mouse-hscroll (e)
|
||||||
"Read a mouse event E from the mode line, and horizontally scroll.
|
"Read a mouse event E from the mode line, and horizontally scroll.
|
||||||
If the mouse is being clicked on the far left, or far right of the
|
If the mouse is being clicked on the far left, or far right of
|
||||||
mode-line. This is only useful for non-XEmacs."
|
the mode-line."
|
||||||
(interactive "e")
|
(interactive "e")
|
||||||
(let* ((x-point (car (nth 2 (car (cdr e)))))
|
(let* ((x-point (car (nth 2 (car (cdr e)))))
|
||||||
(pixels-per-10-col (/ (* 10 (frame-pixel-width))
|
(pixels-per-10-col (/ (* 10 (frame-pixel-width))
|
||||||
(frame-width)))
|
(frame-width)))
|
||||||
(click-col (1+ (/ (* 10 x-point) pixels-per-10-col)))
|
(click-col (1+ (/ (* 10 x-point) pixels-per-10-col))))
|
||||||
)
|
|
||||||
(cond ((< click-col 3)
|
(cond ((< click-col 3)
|
||||||
(scroll-left 2))
|
(scroll-left 2))
|
||||||
((> click-col (- (window-width) 5))
|
((> click-col (- (window-width) 5))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue