From f64689f6141393f4f695cdc76037047b86c73525 Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Wed, 9 Jan 2019 22:11:05 +0000 Subject: [PATCH] Basic irc support has been added through IRC extension --- lib/extensions/development.el | 1 + lib/extensions/irc.el | 22 ++++++++++ lib/extensions/irc/init.el | 77 +++++++++++++++++++++++++++++++++++ 3 files changed, 100 insertions(+) create mode 100644 lib/extensions/irc.el create mode 100644 lib/extensions/irc/init.el diff --git a/lib/extensions/development.el b/lib/extensions/development.el index a593ac0..afdd884 100644 --- a/lib/extensions/development.el +++ b/lib/extensions/development.el @@ -10,6 +10,7 @@ (depends-on 'yasnippet-snippets) (depends-on 'smart-mode-line) (depends-on 'dockerfile-mode) +(depends-on 'quickrun) (with-ability parinfer (depends-on 'parinfer)) diff --git a/lib/extensions/irc.el b/lib/extensions/irc.el new file mode 100644 index 0000000..026dacc --- /dev/null +++ b/lib/extensions/irc.el @@ -0,0 +1,22 @@ +;;; IRCExtension --- Enables irc client on FG42 +;;; Commentary: +;;; Code: +(require 'fpkg) +(require 'fg42/extension) +(require 'extensions/irc/init) + +;; Dependencies ---------------------------------- +(depends-on 'rcirc-notify) + +(defun irc-doc () + "TBD" + "TBD") + +;; Extension ------------------------------------- +(extension irc + :version "2.32" + :on-initialize extensions/irc-initialize + :docs "lib/extensions/irc/readme.org") + +(provide 'extensions/irc) +;;; irc.el ends here diff --git a/lib/extensions/irc/init.el b/lib/extensions/irc/init.el new file mode 100644 index 0000000..2b85676 --- /dev/null +++ b/lib/extensions/irc/init.el @@ -0,0 +1,77 @@ +;;; IRCExtension --- Enables irc client on FG42 +;;; Commentary: +;;; Code: +(defvar irc-servers + '(("irc.freenode.net" + :port 6697 + :encryption tls + :channels ("#5hit"))) + "A list of servers and channels to connect to.") + +(defvar irc-auth nil + "The irc authentication credentials. +This would overridethe default behaviour which is based onauth-sources.") + +(defun irc/extract-secrets-from-auth-source () + "Extract the irc authenticate data from the auth-sources. + +As an example for ~/.authinfo.gpg should contain: + +machine freenode login port nickserv password + +Also the auth-sources should be set correctly. +It returns nil if no password is available." + (let ((auth-list '())) + (dolist (p (auth-source-search :port '("nickserv") + :require '(:port :user :secret))) + (let ((secret (plist-get p :secret)) + (method (intern (plist-get p :port)))) + + (add-to-list 'auth-list + (list (plist-get p :host) + method + (plist-get p :user) + (if (functionp secret) + (funcall secret) + secret))))) + auth-list)) + + +;;;###autoload +(defun irc/setup () + "Setup the rcirc library which distributes with Emacs." + (set (make-local-variable 'scroll-conservatively) 8192) + (setq gnutls-min-prime-bits 2048)) + +(defun irc/connect () + "Connects to IRC." + (interactive) + (require 'rcirc) + (require 'rcirc-notify) + + ;; Turns off keychain integration + (setenv "GPG_AGENT_INFO" nil) + + ;; Turn on debugging if the global debuging was enabled + (setq rcirc-debug-flag debug-on-error) + (setq rcirc-server-alist irc-servers) + (setq rcirc-authinfo (or (irc/extract-secrets-from-auth-source) + irc-auth)) + (rcirc-notify-add-hooks) + (rcirc nil)) + + +;;;###autoload +(defun extensions/irc-initialize () + "Initialize the irc extention." + + ;; Keep input line at bottom. + (add-hook 'rcirc-mode-hook 'irc/setup) + + (ability irc-spell-checking () + (add-hook 'rcirc-mode-hook (lambda () + (flyspell-mode 1))))) + ; + +(provide 'extensions/irc/init) +;;; init.el ends here