summaryrefslogtreecommitdiffstats
path: root/emacs/.emacs.d/site-lisp/jabber-init.el
diff options
context:
space:
mode:
authorGravatar Tom Willemse2014-08-21 00:23:56 +0200
committerGravatar Tom Willemse2014-08-21 00:23:56 +0200
commitc2778f0f713cc885087d6302196e421596ff248e (patch)
treef289c9e52bcaa6dd1ef7b64343df78492a36141d /emacs/.emacs.d/site-lisp/jabber-init.el
parent05415b9b2c455fb5e5f2521610b9d7dd33385d21 (diff)
downloaddotfiles-c2778f0f713cc885087d6302196e421596ff248e.tar.gz
dotfiles-c2778f0f713cc885087d6302196e421596ff248e.zip
Add Emacs config
Diffstat (limited to 'emacs/.emacs.d/site-lisp/jabber-init.el')
-rw-r--r--emacs/.emacs.d/site-lisp/jabber-init.el200
1 files changed, 200 insertions, 0 deletions
diff --git a/emacs/.emacs.d/site-lisp/jabber-init.el b/emacs/.emacs.d/site-lisp/jabber-init.el
new file mode 100644
index 0000000..fd99a2d
--- /dev/null
+++ b/emacs/.emacs.d/site-lisp/jabber-init.el
@@ -0,0 +1,200 @@
+;;; jabber-initel --- Jabber.el initialization
+;;; Commentary:
+;;; Code:
+
+(require 'init (locate-user-emacs-file "init.elc" "init.el"))
+(require 'jabber)
+
+;; (autoload 'jabber-message-libnotify "jabber-libnotify")
+;; (autoload 'jabber-muc-libnotify "jabber-libnotify")
+
+(defun jabber-init-roster-mode-func ()
+ "Function for `jabber-roster-mode-hook'."
+ (setq mode-line-format
+ (list (propertize " %m" 'face 'mode-line-buffer-id))))
+
+(defun jabber-init-show-status-in-buffer (who oldstatus newstatus
+ statustext proposed-alert)
+ "Check to see if WHO has a buffer and if so print his new status.
+
+OLDSTATUS, NEWSTATUS and STATUSTEXT are ignored.
+
+Insert PROPOSED-ALERT in the buffer if it is non-nil."
+ (let ((buffer (get-buffer (jabber-chat-get-buffer (symbol-name who)))))
+ (when (and buffer proposed-alert)
+ (with-current-buffer buffer
+ (ewoc-enter-last jabber-chat-ewoc (list :notice proposed-alert
+ :time (current-time)))))))
+
+(defun jabber-init-stumpwm-echo (from buffer text title)
+ "Use stumpwm to echo a message has arrived."
+ (oni:stumpwm-echo title))
+
+(defun jabber-init-stumpwm-echo-muc (nick group buffer text title)
+ "Use stumpwm to echo a message has arrived."
+ (oni:stumpwm-echo title))
+
+(setq jabber-account-list
+ (append (mapcar (lambda (str) (list (concat str "/" system-name)))
+ '("tom@ryuslash.org" "ryuslash@ninthfloor.org"))
+ '("ryuslash@gmail.com"
+ (:network-server . "talk.google.com")
+ (:port . 443)
+ (:connection-type . ssl)))
+
+ jabber-avatar-cache-directory "~/.emacs.d/jabber-avatars/"
+ jabber-chat-buffer-format "+%n"
+ jabber-chat-foreign-prompt-format "%t %u"
+ jabber-chat-local-prompt-format "%t %u"
+ jabber-chat-buffer-show-avatar nil
+ jabber-chat-fill-long-lines nil
+ jabber-chat-delayed-time-format "%H:%M"
+
+ jabber-chatstates-confirm nil
+
+ jabber-muc-colorize-local t
+ jabber-muc-colorize-foreign t
+
+ jabber-history-enabled t
+ jabber-use-global-history nil
+ jabber-history-dir "~/.emacs.d/jabber-hist"
+
+ jabber-groupchat-buffer-format "++%n"
+ jabber-groupchat-prompt-format "%t %u"
+
+ jabber-roster-show-bindings nil
+ jabber-show-offline-contacts nil
+
+ jabber-vcard-avatars-publish nil
+ jabber-vcard-avatars-retrieve nil)
+(add-to-list 'jabber-account-list
+ `(,(concat "thomas@aethon.nl/" system-name)
+ (:network-server . "talk.google.com")
+ (:connection-type . ssl)))
+
+;; (add-hook 'jabber-alert-message-hooks #'jabber-message-libnotify)
+;; (add-hook 'jabber-alert-muc-hooks #'jabber-muc-libnotify)
+;; (add-hook 'jabber-alert-message-hooks #'jabber-init-stumpwm-echo)
+;; (add-hook 'jabber-alert-muc-hooks #'jabber-init-stumpwm-echo)
+(add-hook 'jabber-chat-mode-hook #'visual-line-mode)
+(add-hook 'jabber-roster-mode-hook #'jabber-init-roster-mode-func)
+(add-hook 'jabber-alert-presence-hooks
+ #'jabber-init-show-status-in-buffer)
+
+(remove-hook 'jabber-alert-presence-hooks #'jabber-presence-echo)
+
+(global-set-key (kbd "<f6>") 'jabber-switch-to-roster-buffer)
+
+
+;;; Ugly, but works
+
+(defvar *longest-prompt* 0)
+(make-variable-buffer-local '*longest-prompt*)
+
+(defun update-margins (prompt-length)
+ (when (> prompt-length *longest-prompt*)
+ (let ((window (get-buffer-window (current-buffer))))
+ (when (equal window (selected-window))
+ (set-window-margins window prompt-length))
+ (setq left-margin-width prompt-length
+ *longest-prompt* prompt-length))))
+
+
+(defun jabber-chat-self-prompt (timestamp delayed dont-print-nick-p)
+ "Print prompt for sent message.
+TIMESTAMP is the timestamp to print, or nil for now.
+If DELAYED is true, print long timestamp
+\(`jabber-chat-delayed-time-format' as opposed to
+`jabber-chat-time-format').
+If DONT-PRINT-NICK-P is true, don't include nickname."
+ (let* ((state-data (fsm-get-state-data jabber-buffer-connection))
+ (username (plist-get state-data :username))
+ (server (plist-get state-data :server))
+ (resource (plist-get state-data :resource))
+ (nickname username)
+ (prompt (format-spec jabber-chat-local-prompt-format
+ (list
+ (cons ?t (format-time-string
+ (if delayed
+ jabber-chat-delayed-time-format
+ jabber-chat-time-format)
+ timestamp))
+ (cons ?n (if dont-print-nick-p "" nickname))
+ (cons ?u username)
+ (cons ?r resource)
+ (cons ?j (concat username "@" server))))))
+ (insert (jabber-propertize
+ " "
+ 'display (list '(margin left-margin) prompt)
+ 'face 'jabber-chat-prompt-local
+ 'help-echo
+ (concat (format-time-string "On %Y-%m-%d %H:%M:%S" timestamp) " from you")))
+ (update-margins (length prompt))))
+
+(defun jabber-chat-print-prompt (xml-data timestamp delayed dont-print-nick-p)
+ "Print prompt for received message in XML-DATA.
+TIMESTAMP is the timestamp to print, or nil to get it
+from a jabber:x:delay element.
+If DELAYED is true, print long timestamp
+\(`jabber-chat-delayed-time-format' as opposed to
+`jabber-chat-time-format').
+If DONT-PRINT-NICK-P is true, don't include nickname."
+ (let* ((from (jabber-xml-get-attribute xml-data 'from))
+ (timestamp (or timestamp
+ (car (delq nil (mapcar 'jabber-x-delay (jabber-xml-get-children xml-data 'x))))))
+ (prompt (format-spec jabber-chat-foreign-prompt-format
+ (list
+ (cons ?t (format-time-string
+ (if delayed
+ jabber-chat-delayed-time-format
+ jabber-chat-time-format)
+ timestamp))
+ (cons ?n (if dont-print-nick-p "" (jabber-jid-displayname from)))
+ (cons ?u (or (jabber-jid-username from) from))
+ (cons ?r (jabber-jid-resource from))
+ (cons ?j (jabber-jid-user from))))))
+ (insert (jabber-propertize
+ " "
+ 'display (list '(margin left-margin) prompt)
+ 'face 'jabber-chat-prompt-foreign
+ 'help-echo
+ (concat (format-time-string "On %Y-%m-%d %H:%M:%S" timestamp) " from " from)))
+ (update-margins (length prompt))))
+
+(defun jabber-muc-print-prompt (xml-data &optional local dont-print-nick-p)
+ "Print MUC prompt for message in XML-DATA."
+ (let* ((nick (jabber-jid-resource (jabber-xml-get-attribute xml-data 'from)))
+ (timestamp (car (delq nil (mapcar 'jabber-x-delay (jabber-xml-get-children xml-data 'x)))))
+ (prompt (format-spec jabber-groupchat-prompt-format
+ (list
+ (cons ?t (format-time-string
+ (if timestamp
+ jabber-chat-delayed-time-format
+ jabber-chat-time-format)
+ timestamp))
+ (cons ?n (if dont-print-nick-p "" nick))
+ (cons ?u nick)
+ (cons ?r nick)
+ (cons ?j (concat jabber-group "/" nick))))))
+ (if (stringp nick)
+ (insert (jabber-propertize
+ " "
+ 'display (list '(margin left-margin) prompt)
+ 'face (if local ;Message from you.
+ (if jabber-muc-colorize-local ;; If colorization enable...
+ ;; ...colorize nick
+ (list ':foreground (jabber-muc-nick-get-color nick))
+ ;; otherwise, use default face.
+ 'jabber-chat-prompt-local)
+ ;; Message from other participant.
+ (if jabber-muc-colorize-foreign ;If colorization enable...
+ ;; ... colorize nick
+ (list ':foreground (jabber-muc-nick-get-color nick))
+ ;; otherwise, use default face.
+ 'jabber-chat-prompt-foreign))
+ 'help-echo (concat (format-time-string "On %Y-%m-%d %H:%M:%S" timestamp) " from " nick " in " jabber-group)))
+ (jabber-muc-system-prompt))
+ (update-margins (length prompt))))
+
+(provide 'jabber-init)
+;;; jabber-init.el ends here