X-Git-Url: https://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Friece-emacs.el;h=74776332e44406ffa730b095212eff73273094ff;hb=7e8f35fb31003a8170c7990d642dd85446d8ec53;hp=0addfbdb0ef4e9e75f32308360b9f34f5ef0587a;hpb=9f0f8e8f7c1fefd0ae6712872f9dcb78ae3ea11c;p=riece diff --git a/lisp/riece-emacs.el b/lisp/riece-emacs.el index 0addfbd..7477633 100644 --- a/lisp/riece-emacs.el +++ b/lisp/riece-emacs.el @@ -24,11 +24,7 @@ ;;; Code: -(defalias 'riece-set-case-syntax-pair - 'set-case-syntax-pair) - ;;; stolen (and renamed) from gnus-ems.el. - ;;; In GNU Emacs, user can intercept whole mouse tracking events by ;;; assigning [mouse-X]. In XEmacs, however, which causes different ;;; effect, that is, the command assigned to [mouse-X] only catches @@ -53,12 +49,91 @@ function))))) (defun riece-popup-menu-popup (menu event) - (let ((function (riece-popup-menu-bogus-filter-constructor menu)) - (pos (event-start event))) - (when (symbolp function) - (select-window (posn-window pos)) - (goto-char (posn-point pos)) - (funcall function)))) + (let ((function (riece-popup-menu-bogus-filter-constructor menu))) + (if function + (funcall function)))) + +(defun riece-event-buffer (event) + "Return the buffer of the window over which mouse event EVENT occurred." + (window-buffer (posn-window (event-start event)))) + +(defun riece-event-point (event) + "Return the character position of the mouse event EVENT." + (posn-point (event-start event))) + +;;; stolen (and renamed) from gnus-ems.el. +(defun riece-region-active-p () + "Say whether the region is active." + (and (boundp 'transient-mark-mode) + transient-mark-mode + (boundp 'mark-active) + mark-active)) + +(defalias 'riece-make-overlay 'make-overlay) +(defalias 'riece-overlay-put 'overlay-put) +(defalias 'riece-overlay-start 'overlay-start) +(defalias 'riece-overlay-buffer 'overlay-buffer) +(defalias 'riece-overlays-in 'overlays-in) +(defalias 'riece-delete-overlay 'delete-overlay) + +(defun riece-kill-all-overlays () + "Delete all overlays in the current buffer." + (let* ((overlay-lists (overlay-lists)) + (buffer-read-only nil) + (overlays (delq nil (nconc (car overlay-lists) (cdr overlay-lists))))) + (while overlays + (delete-overlay (car overlays)) + (setq overlays (cdr overlays))))) + +(defalias 'riece-run-at-time 'run-at-time) +(defalias 'riece-run-with-idle-timer 'run-with-idle-timer) +(defalias 'riece-cancel-timer 'cancel-timer) + +(defalias 'riece-match-string-no-properties 'match-string-no-properties) + +(defun riece-propertize-modeline-string (string &rest properties) + (add-text-properties 0 (length string) properties string) + string) + +(defun riece-normalize-modeline-string-1 (string) + (if string + (if (listp (car string)) + (cons (car (car string)) (riece-normalize-modeline-string-1 + (append (cdr (car string)) (cdr string)))) + (cons (car string) (riece-normalize-modeline-string-1 + (cdr string)))))) + +(defun riece-normalize-modeline-string (string) + (if (listp string) + (list (apply #'concat (riece-normalize-modeline-string-1 string))) + string)) + +(defun riece-put-text-property-nonsticky (start end prop value + &optional object) + (add-text-properties start end + (list prop value 'front-sticky nil 'rear-nonsticky t) + object)) + +(defalias 'riece-facep 'facep) + +;;; stolen (and renamed) from emacsbug.el. +(defun riece-recent-messages (n) + "Return N most recent messages, most recent first. +If N is nil, all messages will be returned." + (let ((message-buf (get-buffer "*Messages*"))) + (if message-buf + (with-temp-buffer + (let (beg-pos end-pos) + (with-current-buffer message-buf + (setq end-pos (goto-char (point-max))) + (if n + (progn + (forward-line (- n)) + (setq beg-pos (point))) + (setq beg-pos (point-min)))) + (insert-buffer-substring message-buf beg-pos end-pos) + (reverse-region (point-min) (point-max)) + (buffer-string)))))) (provide 'riece-emacs)