I showed you my source code, pls respond
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.
 
 
 

8.0 KiB

Interface

/chris/dotfiles/src/commit/022841bbc7516db6d4676a9a00d8601d12f60e4e/docs/images/what-is-emacs-teaser.png

Bring Emacs out of the eighties

Completion

There's a lot of occasions Emacs asks to input text to match a file name in a directory, just one example of an oppertunity for a completion system. Swiper1 is a family of packages that work towards this common goal in Emacs.

Selection menu

Ivy1 is a powerful selection menu for Emacs.

(use-package ivy
  :diminish
  :config (ivy-mode 1))

Replace built in commands

Counsel1 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 ,

Cherry picked from doom.

(dotfiles/leader
  "," '(counsel-switch-buffer :which-key "Buffers"))

Additional details

Provide more information about each item in the completion menu with Ivy rich2.

(use-package ivy-rich
  :after counsel
  :init (ivy-rich-mode 1))

Fonts

Write out to all of Emacs' available font faces with the unified font defined in the options.

(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)

Text scaling

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))
  • Scale the text inside of buffers with SPC t f

    • Increase j

    • Decrease k

    • Finished f

(dotfiles/leader
  "tf" '(hydra-text-scale/body :which-key "Font"))

Icons

Dired feels more modern with prioritized icon fonts using All the Icons3. This makes navigation and visually parsing directories much faster, given that file types are quickly identified by their corresponding icons.

(use-package all-the-icons)

Integration with the All the Icons Dired4package.

(use-package all-the-icons-dired
  :hook (dired-mode . all-the-icons-dired-mode))

Themes

/chris/dotfiles/src/commit/022841bbc7516db6d4676a9a00d8601d12f60e4e/docs/images/what-is-emacs-customizable.gif

High quality and modern colour themes are provided in the Doom Themes5 package.

(use-package doom-themes
  :init (load-theme 'doom-moonlight t))

Load a theme with SPC t t.

(dotfiles/leader
  "tt" '(counsel-load-theme t t :which-key "Theme"))

Modeline

Doom modeline6 provides an elegant and modern status bar / modeline.

(use-package doom-modeline
  :custom (doom-modeline-height 16)
  :config (doom-modeline-mode 1))

Line numbering

Relative line numbers are important when using VI emulation keys. You can prefix commands with a number, allowing you to perform that action that number of times. Useful when navigating around pages that are hundreds, or even thousands of lines long.

  5:
  4:
  3:
  2:
  1:
156: << CURRENT LINE >>
  1:
  2:
  3:
  4:
  5:
(use-package linum-relative
  :commands (linum-relative-global-mode)
  :custom (linum-relative-backend 'display-line-numbers-mode))

Toggle line numbers with SPC t l.

(dotfiles/leader
  "tl" '(linum-relative-global-mode :which-key "Lines"))

Parenthesis

Colourize nested parenthesis with Rainbow delimeters7.

(use-package rainbow-delimiters
  :hook (prog-mode . rainbow-delimiters-mode))

Pretty symbols

Programming buffers made prettier with Pretty mode8, complimentary to the built-in Prettify symbols mode9.

(use-package pretty-mode
  :hook (python-mode . turn-on-pretty-mode))

Ligatures

Enable font ligatures via Fira Code mode10, 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

/chris/dotfiles/src/commit/022841bbc7516db6d4676a9a00d8601d12f60e4e/docs/images/desktop.png

Present a Dashboard when first launching Emacs. Customize the buttons of the navigator.

(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*")))

Quickly navigate to the dashboard with SPC SPC.

(dotfiles/leader
  "SPC" '((lambda () (interactive) (switch-to-buffer "*dashboard*")) :which-key "Dashboard"))

Resources