My attempt to optimize my emacs load time <1 second
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

640 lines
19 KiB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
  1. ;;; 08-custom-packages --- Provide all the use-package declarations
  2. ;;; Commentary:
  3. ;;
  4. ;; See https://github.com/jwiegley/use-package for help
  5. ;; USE PACKAGE help
  6. ;; (use-package package-here
  7. ;; :commands (cmd cmd-all cmd-etc) ;; List commands used to ":defer" the package
  8. ;; :bind-keymap
  9. ;; ("M-q" . package-here-keymap) ;; Setup an entire keymap using Prefix "M-q"
  10. ;; :bind
  11. ;; (("M-s" . cmd) ;; Available Globally
  12. ;; :map here-mode-map
  13. ;; ("C-t" . cmd-all) ;; Available only in "here-mode"
  14. ;; ("C-e" . cmd-etc)) ;; Available only in "here-mode"
  15. ;; :init
  16. ;; (setq stuff t) ;; declar vars etc...
  17. ;; :config
  18. ;; (here-mode 1) ;; eval stuff here after the init
  19. ;;
  20. ;; (use-package ruby-mode
  21. ;; :mode "\\.rb\\'"
  22. ;; :interpreter "ruby"
  23. ;;
  24. ;; ;; OR when the package name isn't the same as the =mode=
  25. ;; (use-package python
  26. ;; :mode ("\\.py\\'" . python-mode)
  27. ;; :interpreter ("python" . python-mode))
  28. ;;
  29. ;; USE ":defer" when you aren't using either :commands, :bind, :bind*, :bind-keymap, :bind-keymap*, :mode, :interpreter, or :hook
  30. ;; (use-package deferred-package
  31. ;; :defer t)
  32. ;;; Code:
  33. ;; https://github.com/myrjola/diminish.el
  34. (use-package diminish
  35. :ensure t
  36. :demand t
  37. )
  38. ;; https://elpa.gnu.org/packages/delight.html
  39. (use-package delight
  40. :ensure t)
  41. ;; https://github.com/winterTTr/ace-jump-mode
  42. (use-package ace-jump-mode
  43. :bind
  44. (("C-c SPC" . just-one-space)
  45. ("M-SPC" . ace-jump-mode)))
  46. ;; https://github.com/abo-abo/ace-window
  47. (use-package ace-window
  48. :disabled
  49. :ensure t
  50. :bind
  51. ([remap other-window] . ace-window)
  52. :init
  53. (setq aw-keys '(?a ?s ?h ?t ?g ?y ?n ?e ?o ?i)))
  54. ;; https://github.com/hlissner/emacs-doom-themes
  55. (use-package doom-themes
  56. :disabled
  57. :ensure t
  58. :config
  59. (load-theme 'doom-one t))
  60. ;; https://github.com/belak/base16-emacs
  61. (use-package base16-theme
  62. :disabled
  63. :ensure t
  64. :config
  65. (load-theme 'base16-onedark t))
  66. ;; https://github.com/NicolasPetton/zerodark-theme
  67. (use-package zerodark-theme
  68. :ensure t
  69. :config
  70. (load-theme 'zerodark t)
  71. (zerodark-setup-modeline-format))
  72. ;; https://github.com/Malabarba/beacon
  73. (use-package beacon
  74. :diminish
  75. :ensure t
  76. :commands beacon-mode
  77. :demand t
  78. :init
  79. (setq beacon-size 30
  80. beacon-color "#5B6268"
  81. beacon-blink-delay 0.2
  82. beacon-blink-duration 0.5
  83. beacon-blink-when-focused t)
  84. (beacon-mode 1))
  85. ;; https://github.com/iqbalansari/emacs-emojify
  86. (use-package emojify
  87. :ensure t
  88. :defer 15
  89. :config
  90. (global-emojify-mode 1))
  91. ;; https://github.com/hrs/engine-mode
  92. (use-package engine-mode
  93. :ensure t
  94. :defer 5
  95. :commands (engine/get-query engine/execute-search)
  96. :config
  97. ;; C-x / to start
  98. (defengine google "https://www.google.com/search?q=%s"
  99. :keybinding "g")
  100. (defengine duckduckgo "https://duckduckgo.com/?q=%s"
  101. :keybinding "d")
  102. (defengine melpa "https://melpa.org/#/?q=%s"
  103. :keybinding "m")
  104. (engine-mode 1))
  105. ;; https://github.com/coldnew/linum-relative
  106. (use-package linum-relative
  107. :disabled
  108. :ensure t
  109. :config
  110. (linum-relative-mode))
  111. ;; https://github.com/Fanael/rainbow-delimiters
  112. (use-package rainbow-delimiters
  113. :ensure t
  114. :hook (prog-mode . rainbow-delimiters-mode))
  115. ;; rainbow-mode
  116. (use-package rainbow-mode
  117. :ensure t
  118. :hook prog-mode)
  119. ;; M-x all-the-icons-install-fonts
  120. (use-package all-the-icons
  121. :ensure t)
  122. (use-package doom-modeline
  123. :disabled
  124. :ensure t
  125. :after (all-the-icons)
  126. :hook (after-init . doom-modeline-mode)
  127. :commands (doom-modeline-def-modeline doom-modeline-set-modeline)
  128. :init
  129. (setq doom-modeline-height 40)
  130. (setq doom-modeline-bar-width 6)
  131. (setq doom-modeline-checker-simple-format nil)
  132. (setq doom-modeline-minor-modes (featurep 'minions))
  133. :config
  134. (doom-modeline-def-modeline 'leo/custom-modeline
  135. '(bar matches buffer-info remote-host buffer-position parrot selection-info)
  136. '(misc-info minor-modes input-method buffer-encoding major-mode process vcs checker " "))
  137. (defun leo/setup-custom-doom-modeline ()
  138. (doom-modeline-set-modeline 'leo/custom-modeline 'default))
  139. (add-hook 'doom-modeline-mode-hook 'leo/setup-custom-doom-modeline)
  140. )
  141. (use-package dashboard
  142. :ensure t
  143. :preface
  144. (defvar show-week-agenda-p)
  145. :init
  146. (setq dashboard-items '((recents . 6)
  147. (bookmarks . 5)
  148. (projects . 5)
  149. (agenda . 5)))
  150. (setq dashboard-center-content t)
  151. (setq dashboard-banner-logo-title "Let's do this...")
  152. (setq dashboard-startup-banner 1)
  153. (setq dashboard-show-shortcuts t)
  154. (setq show-week-agenda-p t)
  155. (setq dashboard-org-agenda-categories '("work" "tasks"))
  156. :config
  157. (dashboard-setup-startup-hook))
  158. ;; counsel
  159. (use-package counsel
  160. :ensure t
  161. :demand t
  162. :bind
  163. ;; ("M-x" . counsel-M-x)
  164. ("C-c k" . counsel-rg)
  165. ("C-x C-f" . counsel-find-file)
  166. ("C-x f" . counsel-recentf)
  167. ("C-x C-d" . counsel-dired)
  168. ("C-x p" . counsel-package)
  169. ("C-x b" . counsel-bookmark)
  170. ("C-x c" . counsel-colors-web)
  171. ("C-c C-d" . counsel-org-capture)
  172. ;; Describe Replacements
  173. ("C-h f" . counsel-describe-function)
  174. ("C-h v" . counsel-describe-variable)
  175. ("C-h b" . counsel-descbinds)
  176. ("M-y" . counsel-yank-pop)
  177. ;; Ivy
  178. ("C-c b" . ivy-switch-buffer)
  179. ("C-c c" . ivy-resume)
  180. ;; Swiper
  181. ("C-s" . swiper)
  182. :config
  183. (ivy-mode 1)
  184. )
  185. ;; https://github.com/DarwinAwardWinner/amx
  186. (use-package amx
  187. :ensure t
  188. :demand t
  189. :commands (execute-extended-command)
  190. :after (counsel)
  191. :init
  192. (amx-mode 1))
  193. ;; https://github.com/magnars/expand-region.el
  194. (use-package expand-region
  195. :ensure t
  196. :bind
  197. ("C-@" . er/expand-region)
  198. ("C-#" . er/contract-region))
  199. ;; https://github.com/thanhvg/emacs-howdoyou
  200. (use-package howdoyou
  201. :ensure t
  202. :commands (howdoyou-query howdoyou-next-link howdoyou-previous-link howdoyou-go-back-to-first-link howdoyou-reload-link)
  203. :bind
  204. ("C-c h q" . howdoyou-query)
  205. ("C-c h n" . howdoyou-next-link)
  206. ("C-c h p" . howdoyou-previous-link)
  207. ("C-c h f" . howdoyou-go-back-to-first-link)
  208. ("C-c h r" . howdoyou-reload-link)
  209. )
  210. ;; https://github.com/magnars/multiple-cursors.el
  211. (use-package multiple-cursors
  212. :ensure t
  213. :bind
  214. ("C-}" . mc/mark-next-like-this)
  215. ("C-)" . mc/unmark-next-like-this)
  216. ("C-{" . mc/mark-previous-like-this)
  217. ("C-(" . mc/unmark-previous-like-this))
  218. ;; https://github.com/joodland/bm
  219. (use-package bm
  220. :disabled
  221. :ensure t
  222. :demand t
  223. :bind (("C-x b b" . bm-toggle)
  224. ("C-x b n" . bm-next)
  225. ("C-x b p" . bm-previous))
  226. :commands (bm-repository-load
  227. bm-repository-save
  228. bm-buffer-save
  229. bm-buffer-save-all
  230. bm-buffer-restore)
  231. :preface
  232. (setq left-fringe-width 6)
  233. (setq right-fringe-width 0)
  234. (defface bm-face '((t nil)) "Specify face used to highlight the current line" :group 'bm)
  235. (defface bm-fringe-face '((t (:background "DarkOrange1" :foreground "DarkOrange1"))) "Specify face used to highlight the fringe" :group 'bm)
  236. (defface bm-fringe-persistent-face '((t (:background "DarkOrange1" :foreground "DarkOrange1"))) "Specify face used to highlight the fringe for persistant bookmarks" :group 'bm)
  237. (defface bm-persistent-face '((t nil)) "Specify face used to highlight the current line for persistant bookmarks" :group 'bm)
  238. (defface fringe '((t nil)) "Specify face used for the fringe" :group 'basic-faces :group 'frames)
  239. :init
  240. (setq bm-restore-repository-on-load t)
  241. :config
  242. (setq bm-cycle-all-buffers t)
  243. (setq bm-repository-file (concat user-emacs-directory "bookmark-repo"))
  244. (setq-default bm-buffer-persistence t)
  245. (setq bm-highlight-style 'bm-highlight-only-fringe)
  246. (add-hook 'after-init-hook 'bm-repository-load)
  247. (add-hook 'find-file-hooks 'bm-buffer-restore)
  248. (add-hook 'after-revert-hook #'bm-buffer-restore)
  249. (add-hook 'kill-buffer-hook #'bm-buffer-save)
  250. (add-hook 'after-save-hook #'bm-buffer-save)
  251. (add-hook 'vc-before-checkin-hook #'bm-buffer-save)
  252. (add-hook 'kill-emacs-hook #'(lambda nil
  253. (bm-buffer-save-all)
  254. (bm-repository-save))))
  255. ;; link
  256. (use-package elfeed
  257. :ensure t
  258. :commands (elfeed elfeed-search-set-filter)
  259. :bind
  260. (("C-x C-l e" . elfeed)
  261. :map elfeed-search-mode-map
  262. ("a" . (lambda () (interactive) (elfeed-search-set-filter "")))
  263. ("e" . (lambda () (interactive) (elfeed-search-set-filter "+emacs")))
  264. ("d" . (lambda () (interactive) (elfeed-search-set-filter "+daily")))
  265. ("x" . (lambda () (interactive) (elfeed-search-set-filter "xkcd"))))
  266. :init
  267. (setq elfeed-feeds
  268. '(
  269. ("http://telescoper.wordpress.com/feed/" daily)
  270. ("http://xkcd.com/rss.xml" daily)
  271. ("http://timharford.com/feed/" daily)
  272. ("http://understandinguncertainty.org/rss.xml" daily)
  273. ("http://pragmaticemacs.com/feed/" emacs)
  274. ("http://www.reddit.com/r/emacs/.rss" emacs)
  275. ("http://planet.emacsen.org/atom.xml" emacs)
  276. ("http://feeds.feedburner.com/XahsEmacsBlog" emacs)
  277. ("http://emacs.stackexchange.com/feeds" emacs)
  278. ("https://www.google.com/alerts/feeds/13353713273807811484/2710948715805064535" tesla)
  279. ("https://www.google.com/alerts/feeds/13353713273807811484/17638090915837343269" pixel4)
  280. ("https://www.google.com/alerts/feeds/13353713273807811484/14416938028701328804" stadia)
  281. ))
  282. :config
  283. (elfeed-update)
  284. )
  285. ;; https://github.com/rmuslimov/browse-at-remote
  286. (use-package browse-at-remote
  287. :bind ("C-c B" . browse-at-remote))
  288. ;; https://github.com/justbur/emacs-which-key
  289. (use-package which-key
  290. :diminish
  291. :ensure t
  292. :config
  293. (which-key-setup-minibuffer)
  294. (which-key-mode))
  295. ;; TODO https://github.com/lewang/fic-mode
  296. (use-package fic-mode
  297. :ensure t
  298. :hook (prog-mode js-mode javascript-mode)
  299. :commands fic-mode
  300. :custom-face
  301. (fic-face ((t :foreground "red" :weight bold)))
  302. (fic-author-face ((t :foreground "red" :underline t))))
  303. ;; https://github.com/joaotavora/yasnippet
  304. (use-package yasnippet
  305. :ensure t
  306. :commands (yas-reload-all)
  307. :hook (prog-mode . yas-minor-mode)
  308. :init
  309. (setq yas-snippet-dirs (list (concat user-emacs-directory "snippets")))
  310. :config
  311. (yas-reload-all))
  312. ;; https://company-mode.github.io/
  313. (use-package company
  314. :ensure t
  315. :defer 5
  316. :commands (company-mode)
  317. :hook (prog-mode . company-mode)
  318. :bind
  319. (:map company-active-map
  320. ("M-n" . nil)
  321. ("M-p" . nil)
  322. ("C-n" . company-select-next)
  323. ("C-p" . company-select-previous))
  324. :config
  325. (setq company-idle-delay 0.1)
  326. (setq company-minimum-prefix-length 4)
  327. )
  328. ;; https://github.com/pashky/restclient.el
  329. (use-package restclient
  330. :ensure t
  331. :mode ("\\.rest\\'" . restclient-mode))
  332. ;; https://github.com/iquiw/company-restclient
  333. (use-package company-restclient
  334. :ensure t
  335. :after (company restclient))
  336. ;; https://github.com/magit/magit
  337. (use-package magit
  338. :commands magit-status
  339. :ensure t
  340. :bind
  341. ("C-x g" . magit-status)
  342. ("C-c g" . magit-status))
  343. ;; https://github.com/bbatsov/projectile
  344. (use-package projectile
  345. :delight '(:eval (concat " [" (projectile-project-name) "]"))
  346. :ensure t
  347. :bind-keymap
  348. ("C-c p" . projectile-command-map)
  349. :init
  350. ;; (setq projectile-mode-line-prefix " P")
  351. (setq projectile-completion-system 'ivy)
  352. :config
  353. (projectile-mode 1)
  354. ;; (projectile-register-project-type 'npm '("package.json")
  355. ;; :compile "npm install"
  356. ;; :test "npm test"
  357. ;; :run "npm start"
  358. ;; :test-suffix ".test")
  359. )
  360. ;; https://github.com/rudolfolah/angularjs-mode
  361. (use-package angular-mode
  362. :ensure t
  363. :defer t
  364. )
  365. ;; https://github.com/magnars/angular-snippets.el
  366. (use-package angular-snippets
  367. :ensure t
  368. :defer t
  369. )
  370. ;; https://github.com/magit/git-modes
  371. (use-package gitignore-mode
  372. :ensure t)
  373. ;; https://github.com/magit/git-modes
  374. (use-package gitconfig-mode
  375. :ensure t)
  376. ;; http://web-mode.org/
  377. (use-package web-mode
  378. :ensure t
  379. :mode "\\.html?\\'")
  380. ;; https://github.com/joshwnj/json-mode
  381. (use-package json-mode
  382. :ensure t
  383. :mode "\\.json\\'")
  384. ;; https://github.com/antonj/scss-mode
  385. (use-package scss-mode
  386. :ensure t
  387. :mode ("\\.s?css\\'" . scss-mode))
  388. ;; https://elpa.gnu.org/packages/csv-mode.html
  389. (use-package csv-mode
  390. :disabled
  391. :ensure t
  392. :mode ("\\.csv\\'" . csv-mode))
  393. ;; https://github.com/kwrooijen/cargo.el
  394. (use-package cargo
  395. :hook (rust-mode . cargo-minor-mode))
  396. ;; https://github.com/andre-r/centered-cursor-mode.el
  397. (use-package centered-cursor-mode
  398. :disabled
  399. :commands centered-cursor-mode
  400. :hook prog-mode)
  401. ;; https://github.com/flycheck/flycheck
  402. (use-package flycheck
  403. :diminish
  404. :ensure t
  405. :preface
  406. (defvar flycheck-emacs-lisp-load-path)
  407. :init
  408. (setq flycheck-emacs-lisp-load-path 'inherit)
  409. (global-flycheck-mode))
  410. ;; https://orgmode.org/elpa.html
  411. (use-package org
  412. :commands (org-cycle-agenda-files org-capture)
  413. :ensure org-plus-contrib
  414. :mode ("\\.org\\'" . org-mode)
  415. :bind (
  416. ("C-," . org-cycle-agenda-files)
  417. ("C-c C-d" . org-capture)
  418. :map org-mode-map
  419. ("M-RET" . org-insert-todo-heading)
  420. )
  421. :preface
  422. (defvar org-html-validation-link)
  423. (defvar org-html-text-markup-alist)
  424. :init
  425. (setq org-agenda-files '("~/Dropbox/Org/todo.org"
  426. "~/Dropbox/Org/archive.org"
  427. "~/Dropbox/Org/diary/eaglecrk.org"))
  428. (setq org-todo-keywords '((sequence "TODO(t)" "|" "DONE(d)")
  429. (sequence "BUG(b)" "INPROGRESS(i)" "|" "FIXED(f)")
  430. (sequence "TEST(T)" "NOTEST(N)" "|" "COMPLETE(C)")
  431. (sequence "|" "CANCELED(c)")
  432. (sequence "|" "NEEDCLARIFICATION(n)")
  433. (sequence "|" "PROVIDEUPDATE(p)")
  434. (sequence "|" "WAITING(w)"))
  435. org-refile-targets '((nil :maxlevel . 3)
  436. (org-agenda-files :maxlevel . 3))
  437. org-directory "~/Dropbox/Org"
  438. org-default-notes-file (concat org-directory "/todo.org")
  439. org-startup-folded t
  440. org-startup-indented t
  441. org-startup-align-all-tables t
  442. org-startup-with-inline-images t
  443. org-startup-with-latex-preview t
  444. org-src-tab-acts-natively t
  445. org-confirm-babel-evaluate nil
  446. org-log-done t
  447. org-log-done-with-time t
  448. org-log-into-drawer t
  449. org-hide-leading-stars t
  450. org-pretty-entities t
  451. org-use-property-inheritance t
  452. org-html-validation-link nil
  453. org-html-text-markup-alist '((bold . "<b>%s</b>")
  454. (code . "<code>%s</code>")
  455. (italic . "<i>%s</i>")
  456. (strike-through . "<del>%s</del>")
  457. (underline . "<span class=\"underline\">%s</span>")
  458. (verbatim . "<code class=\"verbatim\">%s</code>"))
  459. )
  460. :config
  461. (defun org-src-disable-flycheck-doc ()
  462. "Disable flycheck comment doc string checking when (C-c ') ing a file."
  463. (interactive)
  464. (setq flycheck-disabled-checkers '(emacs-lisp-checkdoc)))
  465. (add-to-list 'org-src-mode-hook 'org-src-disable-flycheck-doc)
  466. (when (version<= "9.2" (org-version))
  467. (require 'org-tempo))
  468. (org-babel-do-load-languages 'org-babel-load-languages '((js . t)
  469. (shell . t)
  470. (emacs-lisp . t)))
  471. (setq org-structure-template-alist
  472. '(("r" . "src restclient :results raw")
  473. ("j" . "src js :cmd \"/usr/local/bin/babel-node\" :results output code")
  474. ("e" . "src emacs-lisp :results silent")
  475. ("a" . "export ascii")
  476. ("c" . "center")
  477. ("C" . "comment")
  478. ("E" . "export")
  479. ("h" . "export html")
  480. ("l" . "export latex")
  481. ("q" . "quote")
  482. ("s" . "src")
  483. ("v" . "verse")))
  484. (defconst checkbox-fontlock-keywords-alist
  485. (mapcar (lambda (regex-char-pair)
  486. `(,(car regex-char-pair)
  487. (0 (prog1 ()
  488. (compose-region (match-beginning 1)
  489. (match-end 1)
  490. ,(concat (list ?\C-i)
  491. (list (decode-char 'ucs (cadr regex-char-pair)))))))))
  492. '(("\\(\\[ \\]\\)" #XF096);2B1C
  493. ("\\(\\[-\\]\\)" #XF147);29C7;F458
  494. ("\\(\\[X\\]\\)" #XF046);2BBD
  495. )))
  496. (defun add-checkbox-symbol-keywords ()
  497. "Add checkbox font to font-lock."
  498. (font-lock-add-keywords nil checkbox-fontlock-keywords-alist))
  499. (add-hook 'org-mode-hook 'add-checkbox-symbol-keywords)
  500. )
  501. ;; https://github.com/sabof/org-bullets
  502. (use-package org-bullets
  503. :ensure t
  504. :after (org)
  505. :hook (org-mode . org-bullets-mode)
  506. :config
  507. (set-face-attribute 'org-level-1 nil :height 1.3)
  508. (set-face-attribute 'org-level-2 nil :height 1.1)
  509. (set-face-attribute 'org-level-3 nil :height 1.05)
  510. (set-face-attribute 'org-level-4 nil :height 1.05)
  511. (set-face-attribute 'org-scheduled-today nil :height 1.0)
  512. (set-face-attribute 'org-agenda-date-today nil :height 1.1))
  513. ;; https://orgmode.org/worg/org-contrib/org-protocol.html
  514. (use-package org-protocol
  515. :ensure org-plus-contrib
  516. :after (org)
  517. :preface
  518. (defvar org-capture-templates)
  519. :init
  520. (setq org-capture-templates
  521. '(("t" "new task" entry (file+headline "~/Dropbox/Org/todo.org" "Tasks")
  522. "* TODO [#A] %?\nSCHEDULED: %(org-insert-time-stamp (org-read-date nil t \"+0d\"))\n%a\n")
  523. ("n" "new note" entry (file+headline org-default-notes-file "Notes")
  524. "* %?\n%i\n")
  525. ("l" "store link" entry (file+olp org-default-notes-file "Links" "Unfiled")
  526. "* %a\n%?\n")
  527. ("d" "store link w/drawer" entry (file+olp org-default-notes-file "Links" "Unfiled")
  528. "* %?\n%l\n:COPIED_TEXT:\n %i\n:END:\n")
  529. ))
  530. )
  531. ;; https://github.com/seanohalpin/org-link-minor-mode
  532. (use-package org-link-minor-mode
  533. :ensure t
  534. :defer t
  535. :commands (org-link-minor-mode))
  536. ;; https://github.com/marsmining/ox-twbs
  537. (use-package ox-twbs
  538. :ensure t
  539. :demand t
  540. :after (org))
  541. ;; https://github.com/hniksic/emacs-htmlize
  542. (use-package htmlize
  543. :ensure t
  544. :defer 5)
  545. ;; https://github.com/jwiegley/use-package/blob/master/bind-key.el
  546. (use-package bind-key
  547. :ensure t
  548. :bind
  549. ("C-<tab>" . leo/tidy)
  550. ("C-;" . leo/comment-or-uncomment-region-or-line)
  551. ("C-c e" . leo/find-user-init-file)
  552. ("M-q" . leo/kill-this-buffer-unless-scratch)
  553. ("C-c d" . leo/duplicate-thing)
  554. ("M-n" . leo/jump-to-next-symbol)
  555. ("M-p" . leo/jump-to-prev-symbol)
  556. ("M-u" . upcase-dwim)
  557. ("M-c" . capitalize-dwim)
  558. ("M-l" . downcase-dwim)
  559. )
  560. ;; https://github.com/nflath/sudo-edit
  561. (use-package sudo-edit
  562. :ensure t
  563. :defer t
  564. :commands (sudo-edit))
  565. ;; https://github.com/yuya373/emacs-slack
  566. (use-package slack
  567. :disabled
  568. :commands (slack-start)
  569. :init
  570. (setq slack-buffer-emojify t)
  571. (setq slack-prefer-current-team t)
  572. :config
  573. (advice-add 'slack-counts-update :override #'ignore))
  574. (provide '08-custom-packages)
  575. ;;; 08-custom-packages.el ends here