diff --git a/oni-jabber.el b/oni-jabber.el new file mode 100644 index 0000000..076e307 --- /dev/null +++ b/oni-jabber.el @@ -0,0 +1,100 @@ +;;; oni-jabber.el --- Jabber configuration -*- lexical-binding: t; -*- + +;; Copyright (C) 2019 Tom Willemse + +;; Author: Tom Willemse +;; Keywords: local +;; Version: 20190221004411 +;; Package-Requires: (jabber) + +;; 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 3 of the License, 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, see . + +;;; Commentary: + +;; Configuration for the Jabber/XMPP chat client. + +;;; Code: + +(require 'jabber) + +(defun oni-jabber-set-default-directory () + "Set the default directory to my home directory." + (setq default-directory "~/")) + +(defun oni-jabber-set-roster-mode-line () + "Change the mode-line to only show the buffer id." + (unless (eq major-mode 'jabber-roster-mode) + (error "Will not change mode-line, not in the jabber roster buffer")) + (setq mode-line-format + (list (propertize " %m" 'face 'mode-line-buffer-id)))) + +(defun oni-jabber-show-status-in-buffer + (who _oldstatus _newstatus _statustext proposed-alert) + "Check to see if WHO has a buffer and if so print their new status. + +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))))))) + +(setq jabber-account-list + `((,(concat "ryuslash@dukgo.com/" (system-name)) + (:connection-type . starttls)))) + +(setq jabber-avatar-cache-directory + (concat user-emacs-directory "data/jabber/avatars/")) + +(setq jabber-history-dir + (concat user-emacs-directory "data/jabber/hist/")) + +(setq jabber-chat-buffer-format "+%n" + jabber-chat-foreign-prompt-format "%t %n " + jabber-chat-local-prompt-format "%t %n " + jabber-chat-delayed-time-format "%H:%M" + jabber-groupchat-buffer-format "++%n" + jabber-groupchat-prompt-format "%t %n ") + +(setq jabber-chat-buffer-show-avatar nil + jabber-vcard-avatars-publish nil + jabber-vcard-avatars-retrieve nil) + +(setq jabber-chat-fill-long-lines nil) + +(setq jabber-chatstates-confirm nil) + +(setq jabber-muc-colorize-local t + jabber-muc-colorize-foreign t) + +(setq jabber-history-enabled t + jabber-use-global-history nil) + +(setq jabber-roster-show-bindings nil + jabber-show-offline-contacts nil) + +(add-hook 'jabber-alert-message-hooks 'jabber-message-libnotify) +(add-hook 'jabber-alert-muc-hooks 'jabber-muc-libnotify) +(add-hook 'jabber-alert-presence-hooks #'oni-jabber-show-status-in-buffer) +(add-hook 'jabber-chat-mode-hook #'oni-jabber-set-default-directory) +(add-hook 'jabber-chat-mode-hook 'visual-line-mode) +(add-hook 'jabber-roster-mode-hook #'oni-jabber-set-roster-mode-line) + +(with-eval-after-load 'jabber-alert + (remove-hook 'jabber-alert-presence-hooks 'jabber-presence-echo)) + +;;;###autoload(with-eval-after-load 'jabber (require 'oni-jabber)) + +(provide 'oni-jabber) +;;; oni-jabber.el ends here