;;; bandali-misc.el --- miscellaneous packages -*- lexical-binding: t; -*- ;; Copyright (c) 2018-2025 Amin Bandali ;; Author: Amin Bandali ;; Keywords: convenience ;; 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: ;; My setup for miscellaneous packages. ;;; Code: ;; `delight' (run-with-idle-timer 0.5 nil #'require 'delight nil 'noerror) (with-eval-after-load 'delight (delight 'auto-fill-function " f" "simple") (delight 'abbrev-mode nil "abbrev") (delight 'completion-preview-mode " cprev" "completion-preview") (delight 'mml-mode " mml" "mml")) ;; `debbugs' (b/keymap-global-set "C-c D d" #'debbugs-gnu) (b/keymap-global-set "C-c D b" #'debbugs-gnu-bugs) (b/keymap-global-set "C-c D e" ; bug-gnu-emacs (lambda () (interactive) (setq debbugs-gnu-current-suppress t) (debbugs-gnu debbugs-gnu-default-severities '("emacs")))) (b/keymap-global-set "C-c D g" ; bug-gnuzilla (lambda () (interactive) (setq debbugs-gnu-current-suppress t) (debbugs-gnu debbugs-gnu-default-severities '("gnuzilla")))) (add-to-list 'load-path (b/emacs.d "lisp/ffs")) ;; (run-with-idle-timer 0.5 nil #'require 'ffs) (with-eval-after-load 'ffs (setopt ffs-default-face-height 250)) (add-hook 'ffs-start-hook (lambda () (mapc (lambda (mode) (funcall mode 1)) ; enable '(ffs--no-mode-line-minor-mode ffs--no-cursor-minor-mode)) (mapc (lambda (mode) (funcall mode -1)) ; disable '(show-paren-local-mode display-battery-mode display-fill-column-indicator-mode flyspell-mode tool-bar-mode menu-bar-mode scroll-bar-mode)) (fringe-mode 0))) (add-hook 'ffs-quit-hook (lambda () (mapc (lambda (mode) (funcall mode -1)) ; disable '(ffs--no-mode-line-minor-mode ffs--no-cursor-minor-mode)) (mapc (lambda (mode) (funcall mode 1)) ; enable '(show-paren-local-mode display-battery-mode display-fill-column-indicator-mode flyspell-mode tool-bar-mode menu-bar-mode scroll-bar-mode)) (fringe-mode nil))) (unless (fboundp 'ffs) (autoload #'ffs "ffs" nil t)) (b/keymap-global-set "C-c f s" #'ffs) (add-to-list 'load-path (b/emacs.d "lisp/debian-el")) (run-with-idle-timer 0.5 nil #'require 'debian-el) (with-eval-after-load 'debian-el (require 'apt-sources) (require 'apt-utils) (require 'debian-bug) (require 'deb-view) (require 'gnus-BTS) (require 'preseed)) (add-to-list 'load-path (b/emacs.d "lisp/dpkg-dev-el")) (run-with-idle-timer 0.5 nil #'require 'dpkg-dev-el) (with-eval-after-load 'dpkg-dev-el (require 'debian-changelog-mode) (require 'debian-bts-control) (require 'debian-changelog-mode) (require 'debian-control-mode) (require 'debian-copyright) (require 'readme-debian)) (with-eval-after-load 'eat (setopt eat-enable-shell-prompt-annotation nil)) (add-hook 'eat-mode-hook (lambda () (display-fill-column-indicator-mode -1))) (b/keymap-global-set "C-c s e" #'eat) ;; `embark' (b/keymap-global-set "C-c ." #'embark-act) (let ((m minibuffer-local-map)) (b/keymap-set m "C-c C-c" #'embark-collect) (b/keymap-set m "C-c C-e" #'embark-export)) ;; `wgrep' (with-eval-after-load 'grep (require 'wgrep) (let ((m grep-mode-map)) (b/keymap-set m "e" #'wgrep-change-to-wgrep-mode) (b/keymap-set m "C-x C-q" #'wgrep-change-to-wgrep-mode) (b/keymap-set m "C-c C-c" #'wgrep-finish-edit))) (with-eval-after-load 'slack (slack-register-team :name "archive" :token (auth-source-pick-first-password :host "iaslack" :user "bandalies") :cookie (auth-source-pick-first-password :host "iaslack" :user "bandalies^cookie") :default t :subscribed-channels nil) (slack-register-team :name "archive-canada" :token (auth-source-pick-first-password :host "iacslack" :user "bandalies") :cookie (auth-source-pick-first-password :host "iacslack" :user "bandalies^cookie") :subscribed-channels nil) (setopt slack-display-team-name nil slack-prefer-current-team nil) (b/keymap-global-set "C-c s l j" #'slack-select-rooms) (b/keymap-global-set "C-c s l u" #'slack-select-unread-rooms) (b/keymap-global-set "C-c s l U" #'slack-user-select) (b/keymap-global-set "C-c s l E" #'slack-insert-emoji) ;; (b/keymap-global-set "C-c s l E" #'emojify-insert-emoji) (b/keymap-global-set "C-c s l i" #'slack-im-select) (b/keymap-global-set "C-c s l e" #'slack-message-edit) (b/keymap-global-set "C-c s l g" #'slack-message-redisplay) (b/keymap-global-set "C-c s l r" #'slack-message-add-reaction) (b/keymap-global-set "C-c s l t" #'slack-thread-show-or-create) (b/keymap-global-set "C-c s l G" #'slack-conversations-list-update-quick) (b/keymap-global-set "C-c s l q" #'slack-quote-and-reply) (b/keymap-global-set "C-c s l Q" #'slack-quote-and-reply-with-link) (let ((m slack-mode-map)) (b/keymap-set m "@" #'slack-message-embed-mention) (b/keymap-set m "#" #'slack-message-embed-channel)) (let ((m slack-thread-message-buffer-mode-map)) (b/keymap-set m "C-c '" #'slack-message-write-another-buffer) (b/keymap-set m "@" #'slack-message-embed-mention) (b/keymap-set m "#" #'slack-message-embed-channel)) (let ((m slack-message-buffer-mode-map)) (b/keymap-set m "C-c '" #'slack-message-write-another-buffer))) (defvar b/slack-ws--reconnect-timer nil) (advice-add 'slack-start :before (lambda (&rest _) (unless b/slack-ws--reconnect-timer (setq b/slack-ws--reconnect-timer (run-with-timer 0 (* 25 60) (lambda () (slack-ws--reconnect (oref slack-current-team :id) t) ;; (slack-im-list-update) )))))) (advice-add 'slack-stop :before (lambda (&rest _) (when b/slack-ws--reconnect-timer (cancel-timer b/slack-ws--reconnect-timer) (setq b/slack-ws--reconnect-timer nil)))) (b/keymap-global-set "C-c s l s" #'slack-start) (b/keymap-global-set "C-c s l k" #'slack-stop) (add-hook 'slack-message-buffer-mode-hook #'emojify-mode) (add-hook 'slack-thread-message-buffer-mode-hook #'emojify-mode) (add-hook 'slack-message-buffer-mode-hook #'visual-line-mode) (add-hook 'slack-thread-message-buffer-mode-hook #'visual-line-mode) (with-eval-after-load 'alert (setopt alert-default-style 'notifications)) (with-eval-after-load 'emojify (setopt emojify-display-style 'unicode)) (provide 'bandali-misc) ;;; bandali-misc.el ends here