summaryrefslogtreecommitdiffstats
path: root/.emacs.d
diff options
context:
space:
mode:
authorGravatar Tom Willemsen2011-09-15 15:40:01 +0200
committerGravatar Tom Willemsen2011-09-15 15:40:01 +0200
commitad50751c32836908e88de7e52fd15a8649e72280 (patch)
tree568d6a57272152d8e07b8b707b94d7a5598aef62 /.emacs.d
parent3d46033e3d481ace43585e8c7ee6971390ef1a3c (diff)
downloaddotfiles-ad50751c32836908e88de7e52fd15a8649e72280.tar.gz
dotfiles-ad50751c32836908e88de7e52fd15a8649e72280.zip
EMACS: add autosmiley to jabber
Diffstat (limited to '.emacs.d')
-rw-r--r--.emacs.d/elisp/autosmiley.el95
-rw-r--r--.emacs.d/init.el18
2 files changed, 108 insertions, 5 deletions
diff --git a/.emacs.d/elisp/autosmiley.el b/.emacs.d/elisp/autosmiley.el
new file mode 100644
index 0000000..1037e43
--- /dev/null
+++ b/.emacs.d/elisp/autosmiley.el
@@ -0,0 +1,95 @@
+;;; autosmiley.el --- Convert smileys into their graphical representation
+
+;; Author: Damyan Pepper (gmail account, username damyanp)
+;; Created: 20060315
+
+;; This program is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License as
+;; published by the Free Software Foundation; either version 2, or (at
+;; your option) any later version.
+
+;; This program is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program; if not, you can either send email to this
+;; program's maintainer or write to: The Free Software Foundation,
+;; Inc.; 59 Temple Place, Suite 330; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; Defines the minor mode autosmiley-mode that converts smileys like
+;; :-) into their graphical representations on the fly.
+
+;; Tested on:
+;;
+;; GNU Emacs 22.0.50.1 (i386-mingw-nt5.1.2600) of 2006-03-14 on W2ONE
+;;
+;; History:
+;;
+;; 20060315 - First Release
+
+
+
+(require 'smiley)
+
+(defun autosmiley-overlay-p (overlay)
+ "Return whether OVERLAY is an overlay of autosmiley mode."
+ (memq (overlay-get overlay 'category)
+ '(autosmiley)))
+
+(defun autosmiley-remove-smileys (beg end)
+ (dolist (o (overlays-in beg end))
+ (when (autosmiley-overlay-p o)
+ (delete-overlay o))))
+
+(defvar *autosmiley-counter* 0
+ "Each smiley needs to have a unique display string otherwise
+ adjacent smileys will be merged into a single image. So we put
+ a counter on each one to make them unique")
+
+(defun autosmiley-add-smiley (beg end image)
+ (let ((overlay (make-overlay beg end)))
+ (overlay-put overlay 'category 'autosmiley)
+ (overlay-put overlay 'display (append image (list :counter (incf *autosmiley-counter*))))))
+
+
+(defun autosmiley-add-smileys (beg end)
+ (save-excursion
+ (dolist (entry smiley-cached-regexp-alist)
+ (let ((regexp (car entry))
+ (group (nth 1 entry))
+ (image (nth 2 entry)))
+ (when image
+ (goto-char beg)
+ (while (re-search-forward regexp end t)
+ (autosmiley-add-smiley (match-beginning group) (match-end group) image)))))))
+
+
+(defun autosmiley-change (beg end &optional old-len)
+ (let ((beg-line (save-excursion (goto-char beg) (line-beginning-position)))
+ (end-line (save-excursion (goto-char end) (line-end-position))))
+ (autosmiley-remove-smileys beg-line end-line)
+ (autosmiley-add-smileys beg-line end-line)))
+
+
+;;;###autoload
+(define-minor-mode autosmiley-mode
+ "Minor mode for automatically replacing smileys in text with
+cute little graphical smileys."
+ :group 'autosmiley :lighter " :)"
+ (save-excursion
+ (save-restriction
+ (widen)
+ (autosmiley-remove-smileys (point-min) (point-max))
+ (if autosmiley-mode
+ (progn
+ (unless smiley-cached-regexp-alist
+ (smiley-update-cache))
+ (jit-lock-register 'autosmiley-change))
+ (jit-lock-unregister 'autosmiley-change)))))
+
+
+(provide 'autosmiley)
diff --git a/.emacs.d/init.el b/.emacs.d/init.el
index 8791fe1..23d68f8 100644
--- a/.emacs.d/init.el
+++ b/.emacs.d/init.el
@@ -316,12 +316,20 @@
;;-----[ Gnus ]----------------------------------------------------------
(setq gnus-init-file "~/.emacs.d/gnus")
+;;-----[ Autosmiley ]----------------------------------------------------
+(require 'autosmiley)
+
;;-----[ Jabber ]--------------------------------------------------------
-(require 'jabber-autoloads)
-(setq jabber-account-list
- '(("ryuslash@gmail.com"
- (:network-server . "talk.google.com")
- (:connection-type . ssl))))
+(when (require 'jabber-autoloads nil 'noerror)
+ (setq jabber-account-list
+ '(("ryuslash@gmail.com"
+ (:network-server . "talk.google.com")
+ (:connection-type . ssl))))
+ (setq jabber-history-enabled t)
+ (setq jabber-use-global-history nil)
+ (define-key jabber-chat-mode-map [S-return] 'newline)
+ (define-key jabber-chat-mode-map [C-return] 'newline)
+ (add-hook 'jabber-chat-mode-hook 'autosmiley-mode))
;;-----[ X11 ]-----------------------------------------------------------
(when window-system