X-Git-Url: https://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Friece-emacs.el;h=080579412ca668b2c087cdeafb9417279bbb1c55;hb=c70715e3dbe2d42b59e7048449a28851880f56e4;hp=8fde3bcefeb88cd6a06efd199dc7dbbf36cea334;hpb=84b4296bdf14bc134329b0fe8ed92f477533303c;p=riece diff --git a/lisp/riece-emacs.el b/lisp/riece-emacs.el index 8fde3bc..0805794 100644 --- a/lisp/riece-emacs.el +++ b/lisp/riece-emacs.el @@ -79,8 +79,8 @@ (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))))) + (buffer-read-only nil) + (overlays (delq nil (nconc (car overlay-lists) (cdr overlay-lists))))) (while overlays (delete-overlay (car overlays)) (setq overlays (cdr overlays))))) @@ -92,9 +92,59 @@ (defalias 'riece-match-string-no-properties 'match-string-no-properties) (defun riece-propertize-modeline-string (string &rest properties) - (add-text-properties 0 (length string) string 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)))))) + +(defun riece-remprop (symbol property) + (let ((plist (symbol-plist symbol))) + (if (eq (car plist) property) + (setplist symbol (cdr (cdr plist))) + (while (and (nthcdr 2 plist) + (not (eq (car (nthcdr 2 plist)) property))) + (setq plist (nthcdr 2 plist))) + (if (nthcdr 2 plist) + (setcdr (cdr plist) (nthcdr 4 plist)))))) + (provide 'riece-emacs) ;;; riece-emacs.el ends here