X-Git-Url: http://cgit.sxemacs.org/?p=riece;a=blobdiff_plain;f=lisp%2Friece-history.el;h=25b8e7e6c57b514beb10856e83ffcf8abf03d781;hp=79dd38909861c4df12f78995c6807ae99ef6b352;hb=cfb081fd178e69c501290eb464d88204b5c94639;hpb=8bb0858f2815a32b2cd471fbdfbda2e86e82eb07 diff --git a/lisp/riece-history.el b/lisp/riece-history.el index 79dd389..25b8e7e 100644 --- a/lisp/riece-history.el +++ b/lisp/riece-history.el @@ -18,8 +18,8 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. ;;; Commentary: @@ -35,10 +35,10 @@ (require 'riece-options) (require 'riece-globals) -(require 'riece-highlight) (require 'riece-identity) (require 'riece-signal) (require 'ring) +(require 'riece-highlight) (defgroup riece-history nil "Manage history of channel shifting." @@ -76,8 +76,6 @@ (defvar riece-channel-history nil) -(defvar riece-history-enabled nil) - (defconst riece-history-description "Manage history of channel shifting.") @@ -91,7 +89,7 @@ (nreverse result))) (defun riece-history-format-identity-for-channel-list-buffer (index identity) - (if (and riece-history-enabled + (if (and (get 'riece-history 'riece-addon-enabled) (not (ring-empty-p riece-channel-history)) (riece-identity-equal identity (ring-ref riece-channel-history 0))) (concat (format "%2d:+" index) @@ -99,7 +97,7 @@ (defun riece-history-format-identity-for-channel-list-indicator (index identity) - (if (and riece-history-enabled + (if (and (get 'riece-history 'riece-addon-enabled) (not (ring-empty-p riece-channel-history)) (riece-identity-equal identity (ring-ref riece-channel-history 0))) (let ((string (riece-format-identity identity)) @@ -116,12 +114,18 @@ ;;; (if (memq 'riece-guess riece-addons) ;;; '(riece-guess))) +(defun riece-history-after-switch-to-channel-functions (last) + (if (and (get 'riece-history 'riece-addon-enabled) last + (not (riece-identity-equal last riece-current-channel))) + (ring-insert riece-channel-history last))) + +(defun riece-history-requires () + (if (memq 'riece-highlight riece-addons) + '(riece-highlight))) + (defun riece-history-insinuate () (add-hook 'riece-after-switch-to-channel-functions - (lambda (last) - (if (and riece-history-enabled last - (not (riece-identity-equal last riece-current-channel))) - (ring-insert riece-channel-history last)))) + 'riece-history-after-switch-to-channel-functions) (add-hook 'riece-format-identity-for-channel-list-buffer-functions 'riece-history-format-identity-for-channel-list-buffer) (add-hook 'riece-format-identity-for-channel-list-indicator-functions @@ -135,15 +139,24 @@ ;;; 'riece-guess-channel-from-history)) ) +(defun riece-history-uninstall () + (remove-hook 'riece-after-switch-to-channel-functions + 'riece-history-after-switch-to-channel-functions) + (remove-hook 'riece-format-identity-for-channel-list-buffer-functions + 'riece-history-format-identity-for-channel-list-buffer) + (remove-hook 'riece-format-identity-for-channel-list-indicator-functions + 'riece-history-format-identity-for-channel-list-indicator) + (setq riece-channel-list-mark-face-alist + (delq (assq ?+ riece-channel-list-mark-face-alist) + riece-channel-list-mark-face-alist))) + (defun riece-history-enable () (setq riece-channel-history (make-ring riece-channel-history-length)) - (setq riece-history-enabled t) (riece-emit-signal 'channel-list-changed)) (defun riece-history-disable () - (setq riece-channel-history nil - riece-history-enabled nil) + (setq riece-channel-history nil) (riece-emit-signal 'channel-list-changed)) (provide 'riece-history)