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.
211 lines
5.6 KiB
211 lines
5.6 KiB
;; Ivy
|
|
|
|
;; Download and configure [[https://oremacs.com/swiper/][ivy]], a powerful selection menu for Emacs.
|
|
|
|
|
|
(use-package ivy
|
|
:diminish
|
|
:config (ivy-mode 1))
|
|
|
|
|
|
|
|
;; Counsel is a customized set of commands to replace built in completion buffers.
|
|
|
|
|
|
(use-package counsel
|
|
:after ivy
|
|
:custom (counsel-linux-app-format-function #'counsel-linux-app-format-function-name-only)
|
|
:config (counsel-mode 1))
|
|
|
|
|
|
|
|
;; Switch buffers with =SPC , (comma)=.
|
|
|
|
|
|
(dotfiles/leader
|
|
"," '(counsel-switch-buffer :which-key "Buffers"))
|
|
|
|
|
|
|
|
;; Provide more information about each item with [[https://github.com/Yevgnen/ivy-rich][ivy-rich]].
|
|
|
|
|
|
(use-package ivy-rich
|
|
:after counsel
|
|
:init (ivy-rich-mode 1))
|
|
|
|
;; Fonts
|
|
|
|
;; Write out to all *3* of Emacs' default font faces.
|
|
|
|
|
|
(set-face-attribute 'default nil :font dotfiles/font :height dotfiles/font-size)
|
|
(set-face-attribute 'fixed-pitch nil :font dotfiles/font :height dotfiles/font-size)
|
|
(set-face-attribute 'variable-pitch nil :font dotfiles/font :height dotfiles/font-size)
|
|
|
|
|
|
|
|
;; Define a transient keybinding for scaling the text.
|
|
|
|
|
|
(defhydra hydra-text-scale (:timeout 4)
|
|
"Scale"
|
|
("j" text-scale-increase "Increase")
|
|
("k" text-scale-decrease "Decrease")
|
|
("f" nil "Finished" :exit t))
|
|
|
|
|
|
|
|
;; Increase the font size in buffers with =SPC t f=.
|
|
;; + Increase =j=
|
|
;; + Decrease =k=
|
|
;; + Finish =f=
|
|
|
|
|
|
(dotfiles/leader
|
|
"tf" '(hydra-text-scale/body :which-key "Font"))
|
|
|
|
;; Lines
|
|
|
|
;; Relative line numbers are important when using =VI= emulation keys. You can prefix most commands with a *number*, allowing you to jump up / down by a line count.
|
|
|
|
;; #+begin_example
|
|
;; 5:
|
|
;; 4:
|
|
;; 3:
|
|
;; 2:
|
|
;; 1:
|
|
;; 156: << CURRENT LINE >>
|
|
;; 1:
|
|
;; 2:
|
|
;; 3:
|
|
;; 4:
|
|
;; 5:
|
|
;; #+end_example
|
|
|
|
;; https://github.com/emacsmirror/linum-relative
|
|
;; + Integrate with ~display-line-numbers-mode~ for performance
|
|
|
|
|
|
(use-package linum-relative
|
|
:custom (linum-relative-backend 'display-line-numbers-mode)
|
|
:config (linum-relative-global-mode))
|
|
|
|
|
|
|
|
;; Add line numbers to the toggles behind =SPC t l=.
|
|
|
|
|
|
(dotfiles/leader
|
|
"tl" '(linum-relative-global-mode :which-key "Lines"))
|
|
|
|
|
|
|
|
;; https://github.com/Fanael/rainbow-delimiters
|
|
;; + Colourize nested parenthesis
|
|
|
|
|
|
(use-package rainbow-delimiters
|
|
:hook (prog-mode . rainbow-delimiters-mode))
|
|
|
|
;; Themes
|
|
|
|
;; #+ATTR_ORG: :width 420px
|
|
;; #+ATTR_HTML: :width 420px
|
|
;; #+ATTR_LATEX: :width 420px
|
|
;; [[./docs/images/what-is-emacs-customizable.gif]]
|
|
|
|
;; Cherry pick a few modules from =doom-emacs=. High quality and modern colour themes are provided in the [[https://github.com/hlissner/emacs-doom-themes][doom-themes]] package.
|
|
|
|
|
|
(use-package doom-themes
|
|
:init (load-theme 'doom-moonlight t))
|
|
|
|
|
|
|
|
;; [[https://github.com/seagle0128/doom-modeline][doom-modeline]] provides an elegant status bar / modeline.
|
|
|
|
|
|
(use-package doom-modeline
|
|
:custom (doom-modeline-height 16)
|
|
:config (doom-modeline-mode 1))
|
|
|
|
|
|
|
|
;; Load a theme with =SPC t t=.
|
|
|
|
|
|
(dotfiles/leader
|
|
"tt" '(counsel-load-theme t t :which-key "Theme"))
|
|
|
|
;; Pretty
|
|
|
|
;; Make programming buffers prettier with [[https://github.com/pretty-mode/pretty-mode][pretty-mode]], complimentary to the built in ~prettify-symbols-mode~.
|
|
|
|
|
|
(use-package pretty-mode
|
|
:hook (python-mode . turn-on-pretty-mode))
|
|
|
|
;; Ligatures
|
|
|
|
;; Enable font ligatures via [[https://github.com/jming422/fira-code-mode][fira-code-mode]], perform this action *only* when ~Fira Code~ is the current font.
|
|
|
|
|
|
(when (display-graphic-p)
|
|
(use-package fira-code-mode
|
|
:hook (prog-mode org-mode)))
|
|
|
|
|
|
|
|
;; Toggle global ligature mode with =SPC t g=.
|
|
|
|
|
|
(dotfiles/leader
|
|
"tg" '(global-fira-code-mode :which-key "Ligatures"))
|
|
|
|
;; Dashboard
|
|
|
|
;; #+ATTR_ORG: :width 420px
|
|
;; #+ATTR_HTML: :width 420px
|
|
;; #+ATTR_LATEX: :width 420px
|
|
;; [[./docs/images/desktop.png]]
|
|
|
|
;; Present a dashboard when first launching Emacs. Customize the buttons of the navigator:
|
|
|
|
;; + Brain @ http://localhost:8080
|
|
;; + Homepage @ https://chrishayward.xyz
|
|
;; + Athabasca @ https://login.athabascau.ca/cas/login
|
|
;; + Bookshelf @ https://online.vitalsource.com
|
|
|
|
|
|
(use-package dashboard
|
|
:custom (dashboard-center-content t)
|
|
(dashboard-set-init-info t)
|
|
(dashboard-set-file-icons t)
|
|
(dashboard-set-heading-icons t)
|
|
(dashboard-set-navigator t)
|
|
(dashboard-startup-banner 'logo)
|
|
(dashboard-projects-backend 'projectile)
|
|
(dashboard-items '((projects . 5) (recents . 5) (agenda . 10)))
|
|
(dashboard-navigator-buttons `(((,(all-the-icons-fileicon "brain" :height 1.1 :v-adjust 0.0)
|
|
"Brain" "Knowledge base"
|
|
(lambda (&rest _) (browse-url "http://localhost:8080"))))
|
|
((,(all-the-icons-material "public" :height 1.1 :v-adjust 0.0)
|
|
"Homepage" "Personal website"
|
|
(lambda (&rest _) (browse-url "https://chrishayward.xyz"))))
|
|
((,(all-the-icons-faicon "university" :height 1.1 :v-adjust 0.0)
|
|
"Athabasca" "Univeristy login"
|
|
(lambda (&rest _) (browse-url "https://login.athabascau.ca/cas/login"))))
|
|
((,(all-the-icons-faicon "book" :height 1.1 :v-adjust 0.0)
|
|
"Bookshelf" "Vitalsource bookshelf"
|
|
(lambda (&rest _) (browse-url "https://online.vitalsource.com"))))))
|
|
:config (dashboard-setup-startup-hook))
|
|
|
|
|
|
|
|
;; When running in *daemon* mode, ensure that the dashboard is the initial buffer.
|
|
|
|
|
|
(setq initial-buffer-choice
|
|
(lambda ()
|
|
(get-buffer "*dashboard*")))
|