spacemacs/layers/+chat/erc/packages.el
duianto 3de7081950 Cleanup which-key names
Moved:
- ("ai" "irc") to both the `erc` and `rcirc` layers. They don't have to be
  renamed until the layers are loaded.

- ("ay" "ipython notebook") to the `ipython-notebook` layer.

- ("p$" "projects/shell")
  ("'"  "open shell")
  ("as" "shells")
  to the `shell` layer.

- The commands with keybindings from spacemacs-bootstrap/packages.el to
  spacemacs-defaults/keybindings.el.

Removed:
- ("gd" "diff") it seems to be an old group name, there's no `SPC g d` group at
  the moment.

- ("Re" "elisp") and ("Rp" "pcre") because they have moved to:
  ("xr" "regular expressions")
  ("xre" "elisp")
  ("xrp" "pcre")

- ("xm" "move") seems to be an old move text group, the current keybindings are
  `SPC x J` and `SPC x K` which opens the Move Text Transient State.

- ("b" "persp-buffers") because `SPC b` is also renamed as ("b" "buffers") which
  is more general and not persp-mode specific.
2019-02-18 14:35:00 -05:00

249 lines
8.2 KiB
EmacsLisp

;;; packages.el --- erc Layer packages File for Spacemacs
;;
;; Copyright (c) 2012-2018 Sylvain Benner & Contributors
;;
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
;; URL: https://github.com/syl20bnr/spacemacs
;;
;; This file is not part of GNU Emacs.
;;
;;; License: GPLv3
(defconst erc-packages
'(
company
company-emoji
emoji-cheat-sheet-plus
erc
(erc-gitter :location (recipe
:fetcher github
:repo "jleechpe/erc-gitter")
:excluded t)
erc-hl-nicks
erc-image
(erc-sasl :location local)
erc-social-graph
(erc-terminal-notifier :toggle (spacemacs/system-is-mac))
(erc-tex :location local)
erc-view-log
(erc-yank :location local :excluded t)
erc-yt
linum
persp-mode
))
(defun erc/post-init-company ()
(spacemacs|add-company-backends :backends company-capf :modes erc-mode))
(defun erc/post-init-company-emoji ()
(spacemacs|add-company-backends :backends company-emoji :modes erc-mode))
(defun erc/post-init-emoji-cheat-sheet-plus ()
(add-hook 'erc-mode-hook 'emoji-cheat-sheet-plus-display-mode))
(defun erc/init-erc ()
"Initialize ERC"
(use-package erc
:defer t
:init
(progn
(spacemacs/set-leader-keys
"aie" 'erc
"aiE" 'erc-tls
"aii" 'erc-track-switch-buffer
"aiD" 'erc/default-servers)
(spacemacs/declare-prefix "ai" "irc")
;; utf-8 always and forever
(setq erc-server-coding-system '(utf-8 . utf-8)))
:config
(progn
(use-package erc-autoaway
:defer t
:init
(setq erc-auto-discard-away t
erc-autoaway-idle-seconds 600
erc-autoaway-use-emacs-idle t))
(erc-services-mode 1)
(defun erc-list-command ()
"execute the list command"
(interactive)
(insert "/list")
(erc-send-current-line))
(setq erc-kill-buffer-on-part t
erc-kill-queries-on-quit t
erc-kill-server-buffer-on-quit t)
(add-hook 'erc-connect-pre-hook (lambda (x) (erc-update-modules)))
(erc-track-mode t)
(setq erc-track-exclude-types '("JOIN" "NICK" "PART" "QUIT" "MODE")
erc-server-coding-system '(utf-8 . utf-8))
(setq erc-prompt (lambda () (concat "[" (buffer-name) "]")))
;; Notifications are enabled if erc-enable-notifications is non-nil, and
;; D-BUS is available (i.e. Linux/BSD).
(when (and erc-enable-notifications (boundp 'dbus-compiled-version))
(require 'notifications)
(defun erc-global-notify (match-type nick message)
"Notify when a message is received."
(notifications-notify
:title nick
:body message
:app-icon (concat spacemacs-assets-directory "spacemacs.svg")
:urgency 'low))
(add-hook 'erc-text-matched-hook 'erc-global-notify))
;; keybindings
(spacemacs/set-leader-keys-for-major-mode 'erc-mode
"b" 'erc-switch-to-buffer
"d" 'erc-input-action
"j" 'erc-join-channel
"n" 'erc-channel-names
"l" 'erc-list-command
"p" 'erc-part-from-channel
"q" 'erc-quit-server))))
(defun erc/init-erc-gitter ()
(use-package erc-gitter
:config
(add-to-list 'erc-modules 'gitter)))
(defun erc/pre-init-erc-hl-nicks ()
(spacemacs|use-package-add-hook erc
:post-config
(use-package erc-hl-nicks)))
(defun erc/init-erc-hl-nicks ())
(defun erc/pre-init-erc-sasl ()
(spacemacs|use-package-add-hook erc
:post-config
(use-package erc-sasl
:defer t
:if erc-enable-sasl-auth
;; Following http://www.emacswiki.org/emacs/ErcSASL
;; Maybe an advice would be better?
:config
(progn
;; Add any server like this
;; (add-to-list 'erc-sasl-server-regexp-list "host\\.server\\.com")
(add-to-list 'erc-sasl-server-regexp-list "irc\\.freenode\\.net")
(defun erc-login ()
"Perform user authentication at the IRC server."
(erc-log (format "login: nick: %s, user: %s %s %s :%s"
(erc-current-nick)
(user-login-name)
(or erc-system-name (system-name))
erc-session-server
erc-session-user-full-name))
(if erc-session-password
(erc-server-send (format "PASS %s" erc-session-password))
(message "Logging in without password"))
(when (and (featurep 'erc-sasl) (erc-sasl-use-sasl-p))
(erc-server-send "CAP REQ :sasl"))
(erc-server-send (format "NICK %s" (erc-current-nick)))
(erc-server-send
(format "USER %s %s %s :%s"
;; hacked - S.B.
(if erc-anonymous-login erc-email-userid (user-login-name))
"0" "*"
erc-session-user-full-name))
(erc-update-mode-line))))))
(defun erc/init-erc-sasl ())
(defun erc/pre-init-erc-social-graph ()
(spacemacs|use-package-add-hook erc
:post-config
(use-package erc-social-graph
:init
(progn
;; does not exist ?
;; (erc-social-graph-enable)
(setq erc-social-graph-dynamic-graph t)
(spacemacs/set-leader-keys-for-major-mode 'erc-mode
"D" 'erc-social-graph-draw)))))
(defun erc/init-erc-social-graph ())
(defun erc/pre-init-erc-tex ()
(spacemacs|use-package-add-hook erc
:post-config
(require 'erc-tex)))
(defun erc/init-erc-tex ())
(defun erc/pre-init-erc-yt ()
(spacemacs|use-package-add-hook erc
:post-config
(use-package erc-yt
:init (with-eval-after-load 'erc
(add-to-list 'erc-modules 'youtube)))))
(defun erc/init-erc-yt ())
(defun erc/pre-init-erc-yank ()
(spacemacs|use-package-add-hook erc
:post-config
(use-package erc-yank
:if (configuration-layer/package-used-p 'gist)
:init (evil-define-key 'normal erc-mode-map "p" 'erc-yank))))
(defun erc/init-erc-yank ())
(defun erc/init-erc-view-log ()
(use-package erc-view-log
:defer t
:init
(progn
(setq erc-log-channels-directory
(expand-file-name
(concat spacemacs-cache-directory
"erc-logs")))
(unless (file-exists-p erc-log-channels-directory)
(make-directory erc-log-channels-directory))
(add-to-list 'auto-mode-alist
`(,(format "%s/.*\\.[log|txt]"
(regexp-quote
(expand-file-name
erc-log-channels-directory))) . erc-view-log-mode))
(with-eval-after-load 'erc (add-to-list 'erc-modules 'log)))
:config
;; ERC Logging
(progn
;; Following https://raw.githubusercontent.com/Niluge-KiWi/erc-view-log/master/erc-view-log.el
;; installation instructions
(add-hook 'erc-view-log-mode-hook 'turn-on-auto-revert-tail-mode)
(spacemacs|define-transient-state erc-log
:title "ERC Log Transient State"
:doc "\n[_r_] reload the log file [_>_/_<_] go to the next/prev mention"
:evil-leader-for-mode (erc-mode . ".")
:bindings
("r" erc-view-log-reload-file)
(">" erc-view-log-next-mention)
("<" erc-view-log-previous-mention)))))
(defun erc/init-erc-image ()
(use-package erc-image
:defer t
:init (with-eval-after-load 'erc
(require 'erc-image)
(add-to-list 'erc-modules 'image))))
(defun erc/init-erc-terminal-notifier ()
(use-package erc-terminal-notifier
:if (executable-find "terminal-notifier")))
(defun erc/post-init-linum ()
(spacemacs/add-to-hooks 'spacemacs/no-linum '(erc-mode-hook
erc-insert-pre-hook)))
(defun erc/pre-init-persp-mode ()
(spacemacs|use-package-add-hook persp-mode
:post-config
(progn
(add-to-list 'persp-filter-save-buffers-functions
'spacemacs//erc-persp-filter-save-buffers-function)
(spacemacs|define-custom-layout erc-spacemacs-layout-name
:binding erc-spacemacs-layout-binding
:body
(progn
(add-hook 'erc-mode-hook #'spacemacs//erc-buffer-to-persp)
(if erc-server-list
(erc/default-servers)
(call-interactively 'erc)))))))