spacemacs/layers/+chat/slack/packages.el
Benjamin Reynolds 8131ed977a Add various slack keybindings
The only readily available keybinding for joining channels in slack is for
joining public channels. This commit adds bindings for joining private
channels, (called groups in emacs-slack) as well as a keybinding for
slack-select-rooms which allows joining a channel, group, or DM.

This commit also rebinds the major mode `k` to slack-select-rooms, which puts it
more in line with how the related keybinding in the slack client works.
2017-04-28 22:29:43 -04:00

93 lines
2.5 KiB
EmacsLisp

;;; packages.el --- slack layer packages file for Spacemacs.
;;
;; Copyright (c) 2012-2017 Sylvain Benner & Contributors
;;
;; Author: Kosta Harlan <kosta@kostaharlan.net>
;; URL: https://github.com/syl20bnr/spacemacs
;;
;; This file is not part of GNU Emacs.
;;
;;; License: GPLv3
;;; Commentary:
;;; Code:
;; TODO: Integrate company-emoji.
(defconst slack-packages
'(
alert
emoji-cheat-sheet-plus
flyspell
linum
persp-mode
slack
))
(defun slack/init-alert ()
(use-package alert
:defer t
:init (setq alert-default-style 'notifier)))
(defun slack/post-init-emoji-cheat-sheet-plus ()
(add-hook 'slack-mode-hook 'emoji-cheat-sheet-plus-display-mode))
(defun slack/post-init-flyspell ()
(add-hook 'lui-mode-hook 'flyspell-mode))
(defun slack/post-init-linum ()
(add-hook 'slack-mode-hook 'spacemacs/no-linum))
(defun slack/post-init-persp-mode ()
(spacemacs|define-custom-layout "@Slack"
:binding "s"
:body
(progn
(add-hook 'slack-mode #'(lambda ()
(persp-add-buffer (current-buffer))))
;; TODO: We don't want to slack-start every time someone types `SPC l o s`
(call-interactively 'slack-start)
(call-interactively 'slack-channel-select)))
;; Do not save slack buffers
(spacemacs|use-package-add-hook persp-mode
:post-config
(push (lambda (b) (with-current-buffer b (eq major-mode 'slack-mode)))
persp-filter-save-buffers-functions)))
(defun slack/init-slack ()
"Initialize Slack"
(use-package slack
:commands (slack-start)
:defer t
:init
(progn
(spacemacs/set-leader-keys
"aCs" 'slack-start
"aCj" 'slack-channel-select
"aCg" 'slack-group-select
"aCr" 'slack-select-rooms
"aCd" 'slack-im-select
"aCq" 'slack-ws-close)
(setq slack-enable-emoji t))
:config
(progn
(spacemacs/set-leader-keys-for-major-mode 'slack-mode
"j" 'slack-channel-select
"g" 'slack-group-select
"r" 'slack-select-rooms
"d" 'slack-im-select
"p" 'slack-room-load-prev-messages
"e" 'slack-message-edit
"q" 'slack-ws-close
"mm" 'slack-message-embed-mention
"mc" 'slack-message-embed-channel
"k" 'slack-select-rooms
"@" 'slack-message-embed-mention
"#" 'slack-message-embed-channel)
(evil-define-key 'insert slack-mode-map
(kbd "@") 'slack-message-embed-mention
(kbd "#") 'slack-message-embed-channel))))
;;; packages.el ends here