X-Git-Url: http://cgit.sxemacs.org/?p=riece;a=blobdiff_plain;f=lisp%2Friece-misc.el;h=c4fa7bc8c8a6e0af4074dcc4eaa409a0934bba45;hp=d3a21d4b2ea240b42830fd92caa06497abae0200;hb=9174f38ace6e8cd879b41adc4d6aa4b5b727f7ea;hpb=a872e7b2f534acf53b2f4e3149e3862448235351 diff --git a/lisp/riece-misc.el b/lisp/riece-misc.el index d3a21d4..c4fa7bc 100644 --- a/lisp/riece-misc.el +++ b/lisp/riece-misc.el @@ -32,8 +32,14 @@ (require 'riece-server) (require 'riece-user) -(defun riece-get-buffer-create (name) - (let ((buffer (get-buffer-create name))) +(defun riece-get-buffer-create (name &optional init-major-mode) + (let ((buffer (get-buffer name))) + (unless (and buffer + (or (null init-major-mode) + (eq (with-current-buffer buffer + major-mode) + init-major-mode))) + (setq buffer (generate-new-buffer name))) (unless (memq buffer riece-buffer-list) (setq riece-buffer-list (cons buffer riece-buffer-list))) buffer)) @@ -59,7 +65,7 @@ (while buffers (run-hooks 'riece-before-insert-functions) (save-excursion - (set-buffer (riece-get-buffer-create (car buffers))) + (set-buffer (car buffers)) (let ((inhibit-read-only t) buffer-read-only (start (goto-char (point-max))))