fix emacs config

This commit is contained in:
2025-08-26 13:21:31 +01:00
parent e6248e7635
commit 1ed76ff4e4
+272 -271
View File
@@ -367,63 +367,64 @@ Defining the various fonts emacs will use
;; are not right unless I also add this method of setting the default font. ;; are not right unless I also add this method of setting the default font.
(add-to-list 'default-frame-alist '(font . "FiraCodeNerdFontMono-15")) (add-to-list 'default-frame-alist '(font . "FiraCodeNerdFontMono-15"))
;; UNCOMMENT THE FOLLOWING LINE IF LINE SPACING NEEDS ADJUSTING. ;; uncomment the following line if line spacing needs adjusting.
;; (SETQ-DEFAULT LINE-SPACING 0.12) ;; (setq-default line-spacing 0.12)
#+END_SRC #+end_src
** ZOOM IN/OUT ** Zoom In/Out
ENABLE ZOOM IN/OUT WITH C-=/- AND ALSO FOR C-SCRL-UP/DOWN Enable zoom in/out with c-=/- and also for c-scrl-up/down
#+BEGIN_SRC EMACS-LISP #+begin_src emacs-lisp
(GLOBAL-SET-KEY (KBD "C-=") 'TEXT-SCALE-INCREASE) (global-set-key (kbd "C-=") 'text-scale-increase)
(GLOBAL-SET-KEY (KBD "C--") 'TEXT-SCALE-DECREASE) (global-set-key (kbd "C--") 'text-scale-decrease)
(GLOBAL-SET-KEY (KBD "<C-WHEEL-UP>") 'TEXT-SCALE-INCREASE) (global-set-key (kbd "<C-wheel-up>") 'text-scale-increase)
(GLOBAL-SET-KEY (KBD "<C-WHEEL-DOWN>") 'TEXT-SCALE-DECREASE) (global-set-key (kbd "<c-wheel-down>") 'text-scale-decrease)
#+END_SRC #+end_src
* GNUPLOT * GNUPLOT
#+BEGIN_SRC EMACS-LISP #+begin_src emacs-lisp
(USE-PACKAGE GNUPLOT-MODE) (use-package gnuplot-mode)
;; AUTOMATICALLY OPEN FILES ENDING WITH .GP OR .GNUPLOT IN GNUPLOT MODE ;; automatically open files ending with .gp or .gnuplot in gnuplot mode
;; (SETQ AUTO-MODE-ALIST ;; (setq auto-mode-alist
;; (APPEND '(("\\.\\(GP\\|GNUPLOT\\)$" . GNUPLOT-MODE)) AUTO-MODE-ALIST))) ;; (append '(("\\.\\(gp\\|gnuplot\\)$" . gnuplot-mode)) auto-mode-alist)))
#+END_SRC #+end_src
* IMAGE DIR-ED * IMAGE DIR-ED
#+BEGIN_SRC EMACS-LISP #+begin_src emacs-lisp
(USE-PACKAGE IMAGE-DIRED+) (use-package image-dired+)
#+END_SRC #+end_src
* INDENTING/TABS * INDENTING/TABS
#+BEGIN_SRC EMACS-LISP #+begin_src emacs-lisp
(SETQ-DEFAULT INDENT-TABS-MODE NIL) (setq-default indent-tabs-mode nil)
(SETQ-DEFAULT TAB-WIDTH 2) (setq-default tab-width 2)
(SETQ-DEFAULT INDENT-LINE-FUNCTION 'INSERT-TAB) (setq-default indent-line-function 'insert-tab)
(SETQ-DEFAULT C-DEFAULT-STYLE "LINUX" (setq-default c-default-style "linux"
C-BASIC-OFFSET 2) c-basic-offset 2)
;; IF INDENT-TABS-MODE IS OFF, UNTABIFY BEFORE SAVING ;; if indent-tabs-mode is off, untabify before saving
;;(ADD-HOOK 'WRITE-FILE-HOOKS ;;(add-hook 'write-file-hooks
;; (LAMBDA () (IF (NOT INDENT-TABS-MODE) ;; (lambda () (if (not indent-tabs-mode)
;; (UNTABIFY (POINT-MIN) (POINT-MAX))))) ;; (untabify (point-min) (point-max)))))
#+END_SRC #+end_src
* LIGATURES * LIGATURES
#+BEGIN_SRC EMACS-LISP #+begin_src emacs-lisp
;; THIS ASSUMES YOU'VE INSTALLED THE PACKAGE VIA MELPA. ;; this assumes you've installed the package via melpa.
(USE-PACKAGE LIGATURE (use-package ligature
:CONFIG :config
;; ENABLE THE "WWW" LIGATURE IN EVERY POSSIBLE MAJOR MODE ;; enable the "www" ligature in every possible major mode
(LIGATURE-SET-LIGATURES 'T '("WWW")) (ligature-set-ligatures 't '("www"))
;; ENABLE TRADITIONAL LIGATURE SUPPORT IN EWW-MODE, IF THE ;; enable traditional ligature support in eww-mode, if the
;; `VARIABLE-PITCH' FACE SUPPORTS IT ;; `variable-pitch' face supports it
(LIGATURE-SET-LIGATURES 'EWW-MODE '("FF" "FI" "FFI")) (ligature-set-ligatures 'eww-mode '("ff" "fi" "ffi"))
;; ENABLE ALL CASCADIA CODE LIGATURES IN PROGRAMMING MODES ;; enable all cascadia code ligatures in programming modes
(LIGATURE-SET-LIGATURES 'PROG-MODE '("|||>" "<|||" "<==>" "<!--" "####" "~~>" "***" "||=" "||>" (ligature-set-ligatures 'prog-mode '("|||>" "<|||" "<==>" "<!--" "####" "~~>" "***" "||=" "||>"
":::" "::=" "=:=" "===" "==>" "=!=" "=>>" "=<<" "=/=" "!==" ":::" "::=" "=:=" "===" "==>" "=!=" "=>>" "=<<" "=/=" "!=="
"!!." ">=>" ">>=" ">>>" ">>-" ">->" "->>" "-->" "---" "-<<" "!!." ">=>" ">>=" ">>>" ">>-" ">->" "->>" "-->" "---" "-<<"
"<~~" "<~>" "<*>" "<||" "<|>" "<$>" "<==" "<=>" "<=<" "<->" "<~~" "<~>" "<*>" "<||" "<|>" "<$>" "<==" "<=>" "<=<" "<->"
"<--" "<-<" "<<=" "<<-" "<<<" "<+>" "</>" "###" "#_(" "..<" "<--" "<-<" "<<=" "<<-" "<<<" "<+>" "</>" "###" "#_(" "..<"
"..." "+++" "/==" "///" "_|_" "WWW" "&&" "^=" "~~" "~@" "~=" "..." "+++" "/==" "///" "_|_" "www" "&&" "^=" "~~" "~@" "~="
"~>" "~-" "**" "*>" "*/" "||" "|}" "|]" "|=" "|>" "|-" "{|" "~>" "~-" "**" "*>" "*/" "||" "|}" "|]" "|=" "|>" "|-" "{|"
"[|" "]#" "::" ":=" ":>" ":<" "$>" "==" "=>" "!=" "!!" ">:" "[|" "]#" "::" ":=" ":>" ":<" "$>" "==" "=>" "!=" "!!" ">:"
">=" ">>" ">-" "-~" "-|" "->" "--" "-<" "<~" "<*" "<|" "<:" ">=" ">>" ">-" "-~" "-|" "->" "--" "-<" "<~" "<*" "<|" "<:"
@@ -431,300 +432,300 @@ ENABLE ZOOM IN/OUT WITH C-=/- AND ALSO FOR C-SCRL-UP/DOWN
"##" "#(" "#?" "#_" "%%" ".=" ".-" ".." ".?" "+>" "++" "?:" "##" "#(" "#?" "#_" "%%" ".=" ".-" ".." ".?" "+>" "++" "?:"
"?=" "?." "??" ";;" "/*" "/=" "/>" "//" "__" "~~" "(*" "*)" "?=" "?." "??" ";;" "/*" "/=" "/>" "//" "__" "~~" "(*" "*)"
"\\\\" "://")) "\\\\" "://"))
;; ENABLES LIGATURE CHECKS GLOBALLY IN ALL BUFFERS. YOU CAN ALSO DO IT ;; enables ligature checks globally in all buffers. you can also do it
;; PER MODE WITH `LIGATURE-MODE'. ;; per mode with `ligature-mode'.
(GLOBAL-LIGATURE-MODE T)) (global-ligature-mode t))
#+END_SRC #+end_src
* MARKDOWN MODE * MARKDOWN MODE
#+BEGIN_SRC EMACS-LISP #+begin_src emacs-lisp
(USE-PACKAGE MARKDOWN-MODE (use-package markdown-mode
:ENSURE T :ensure t
:MODE ("README\\.MD\\'" . GFM-MODE) :mode ("readme\\.md\\'" . gfm-mode)
:INIT (SETQ MARKDOWN-COMMAND "MULTIMARKDOWN")) :init (setq markdown-command "multimarkdown"))
#+END_SRC #+end_src
* ORG DOWNLOAD * ORG DOWNLOAD
#+BEGIN_SRC EMACS-LISP #+begin_src emacs-lisp
(USE-PACKAGE ORG-DOWNLOAD (use-package org-download
:AFTER ORG :after org
:DEFER NIL :defer nil
:CUSTOM :custom
(ORG-DOWNLOAD-METHOD 'DIRECTORY) (org-download-method 'directory)
(ORG-DOWNLOAD-IMAGE-DIR "~/EMACS/IMAGES/") (org-download-image-dir "~/emacs/images/")
(ORG-DOWNLOAD-HEADING-LVL 0) (org-download-heading-lvl 0)
(ORG-DOWNLOAD-TIMESTAMP "ORG_%Y%M%D-%H%M%S_") (org-download-timestamp "org_%y%m%d-%h%m%s_")
(ORG-IMAGE-ACTUAL-WIDTH 400) (org-image-actual-width 400)
(ORG-DOWNLOAD-SCREENSHOT-METHOD "WAYLAND_DISPLAY=WAYLAND-1 WL-PASTE -T IMAGE/PNG > '%S'.PNG") (org-download-screenshot-method "wayland_display=wayland-1 wl-paste -t image/png > '%s'.png")
:BIND :bind
("C-M-Y" . ORG-DOWNLOAD-SCREENSHOT) ("C-M-y" . org-download-screenshot)
:CONFIG :config
(REQUIRE 'ORG-DOWNLOAD)) (require 'org-download))
#+END_SRC #+end_src
* PULSE * PULSE
PULSE HIGHLIGHT A LINE ON CERTAIN ACTIONS Pulse highlight a line on certain actions
# #+BEGIN_SRC EMACS-LISP #+begin_src emacs-lisp
# (USE-PACKAGE PULSE (use-package pulse
# :ENSURE NIL :ensure nil
# :DEFER :defer
# :INIT :init
# (DEFUN PULSE-LINE (&REST _) (defun pulse-line (&rest _)
# "PULSE THE CURRENT LINE" "pulse the current line"
# (PULSE-MOMENTARY-HIGHLIGHT-ONE-LINE (POINT))) (pulse-momentary-highlight-one-line (point)))
# (DOLIST (COMMAND '(SCROLL-UP-COMMAND (dolist (command '(scroll-up-command
# SCROLL-DOWN-COMMAND scroll-down-command
# WINDMOVE-LEFT windmove-left
# WINDMOVE-RIGHT windmove-right
# WINDMOVE-UP windmove-up
# WINDMOVE-DOWN windmove-down
# MOVE-TO-WINDOW-LINE-TOP-BOTTOM move-to-window-line-top-bottom
# RECENTER-TOP-BOTTOM recenter-top-bottom
# OTHER-WINDOW)) other-window))
# (ADVICE-ADD COMMAND :AFTER #'PULSE-LINE))) (advice-add command :after #'pulse-line)))
# #+END_SRC #+end_src
* PDF TOOLS * PDF TOOLS
#+BEGIN_SRC EMACS-LISP #+begin_src emacs-lisp
(USE-PACKAGE PDF-TOOLS) (use-package pdf-tools)
#+END_SRC #+end_src
* PROJECTILE * PROJECTILE
[[HTTPS://GITHUB.COM/BBATSOV/PROJECTILE][PROJECTILE]] IS A PROJECT INTERACTION LIBRARY FOR EMACS. [[HTTPS://GITHUB.COM/BBATSOV/PROJECTILE][Projectile]] is a project interaction library for emacs.
#+BEGIN_SRC EMACS-LISP #+begin_src emacs-lisp
(USE-PACKAGE PROJECTILE (use-package projectile
:DIMINISH :diminish
:CONFIG :config
(PROJECTILE-MODE 1)) (projectile-mode 1))
#+END_SRC #+end_src
* RAINBOW MODE * RAINBOW MODE
DISPLAY THE ACTUAL COLOR AS A BACKGROUND FOR ANY HEX COLOR VALUE (EX. #FFFFFF). THE CODE BLOCK BELOW ENABLES RAINBOW-MODE IN ALL PROGRAMMING MODES (PROG-MODE) AS WELL AS ORG-MODE, WHICH IS WHY RAINBOW WORKS IN THIS DOCUMENT. Display the actual color as a background for any hex color value (ex. #ffffff). The code block below enables rainbow-mode in all programming modes (prog-mode) as well as org-mode, which is why rainbow works in this document.
#+BEGIN_SRC EMACS-LISP #+begin_src emacs-lisp
(USE-PACKAGE RAINBOW-MODE (use-package rainbow-mode
:DIMINISH :diminish
:HOOK :hook
((ORG-MODE PROG-MODE) . RAINBOW-MODE)) ((org-mode prog-mode) . rainbow-mode))
#+END_SRC #+end_src
* RELOAD EMACS * RELOAD EMACS
THIS IS JUST AN EXAMPLE OF HOW TO CREATE A SIMPLE FUNCTION IN EMACS. USE THIS FUNCTION TO RELOAD EMACS AFTER ADDING CHANGES TO THE CONFIG. YES, I AM LOADING THE USER-INIT-FILE TWICE IN THIS FUNCTION, WHICH IS A HACK BECAUSE FOR SOME REASON, JUST LOADING THE USER-INIT-FILE ONCE DOES NOT WORK PROPERLY. This is just an example of how to create a simple function in emacs. Use this function to reload emacs after adding changes to the config. Yes, i am loading the user-init-file twice in this function, which is a hack because for some reason, just loading the user-init-file once does not work properly.
#+BEGIN_SRC EMACS-LISP #+begin_src emacs-lisp
(DEFUN RELOAD-INIT-FILE () (defun reload-init-file ()
(INTERACTIVE) (interactive)
(LOAD-FILE USER-INIT-FILE) (load-file user-init-file)
(LOAD-FILE USER-INIT-FILE)) (load-file user-init-file))
#+END_SRC #+end_src
* SHELLS AND TERMINALS * SHELLS AND TERMINALS
** ESHELL ** ESHELL
#+BEGIN_SRC EMACS-LISP #+begin_src emacs-lisp
(USE-PACKAGE ESHELL-SYNTAX-HIGHLIGHTING (use-package eshell-syntax-highlighting
:AFTER ESH-MODE :after esh-mode
:CONFIG :config
(ESHELL-SYNTAX-HIGHLIGHTING-GLOBAL-MODE +1)) (eshell-syntax-highlighting-global-mode +1))
(SETQ ESHELL-RC-SCRIPT (CONCAT USER-EMACS-DIRECTORY "ESHELL/PROFILE") (setq eshell-rc-script (concat user-emacs-directory "eshell/profile")
ESHELL-ALIASES-FILE (CONCAT USER-EMACS-DIRECTORY "ESHELL/ALIASES") eshell-aliases-file (concat user-emacs-directory "eshell/aliases")
ESHELL-HISTORY-SIZE 5000 eshell-history-size 5000
ESHELL-BUFFER-MAXIMUM-LINES 5000 eshell-buffer-maximum-lines 5000
ESHELL-HIST-IGNOREDUPS T eshell-hist-ignoredups t
ESHELL-SCROLL-TO-BOTTOM-ON-INPUT T eshell-scroll-to-bottom-on-input t
ESHELL-DESTROY-BUFFER-WHEN-PROCESS-DIES T eshell-destroy-buffer-when-process-dies t
ESHELL-VISUAL-COMMANDS'("BASH" "FISH" "HTOP" "SSH" "TOP" "ZSH")) eshell-visual-commands'("bash" "fish" "htop" "ssh" "top" "zsh"))
#+END_SRC #+end_src
* SUDO EDIT * SUDO EDIT
ENABLE EDITING OF PRIVILEGED FILES Enable editing of privileged files
#+BEGIN_SRC EMACS-LISP #+begin_src emacs-lisp
(USE-PACKAGE SUDO-EDIT (use-package sudo-edit
:CONFIG :config
(LM/LEADER-KEYS (lm/leader-keys
"FU" '(SUDO-EDIT-FIND-FILE :WK "SUDO FIND FILE") "fu" '(sudo-edit-find-file :wk "sudo find file")
"FU" '(SUDO-EDIT :WK "SUDO EDIT FILE"))) "fu" '(sudo-edit :wk "sudo edit file")))
#+END_SRC #+end_src
* THEME * THEME
SET THEMES DIR, LOAD CHOSEN THEME - THEME MADE WITH [[HTTPS://EMACSFODDER.GITHUB.IO/EMACS-THEME-EDITOR/][EMACS THEME EDITOR]]. Set themes dir, load chosen theme - theme made with [[https://emacsfodder.github.io/emacs-theme-editor/][emacs theme editor]].
#+BEGIN_SRC EMACS-LISP #+begin_src emacs-lisp
;;(ADD-TO-LIST 'CUSTOM-THEME-LOAD-PATH "~/.CONFIG/EMACS/THEMES") ;;(add-to-list 'custom-theme-load-path "~/.config/emacs/themes")
;;(LOAD-THEME 'SOFT-CHARCOAL T) ;;(load-theme 'soft-charcoal t)
(USE-PACKAGE DOOM-THEMES (use-package doom-themes
:ENSURE T :ensure t
:CONFIG :config
;; GLOBAL SETTINGS (DEFAULTS) ;; global settings (defaults)
(SETQ DOOM-THEMES-ENABLE-BOLD T ; IF NIL, BOLD IS UNIVERSALLY DISABLED (setq doom-themes-enable-bold t ; if nil, bold is universally disabled
DOOM-THEMES-ENABLE-ITALIC T) ; IF NIL, ITALICS IS UNIVERSALLY DISABLED doom-themes-enable-italic t) ; if nil, italics is universally disabled
(LOAD-THEME 'DOOM-MONOKAI-SPECTRUM T) (load-theme 'doom-monokai-spectrum t)
;; (LOAD-THEME 'DOOM-MONOKAI-MACHINE T) ;; (load-theme 'doom-monokai-machine t)
;; ENABLE FLASHING MODE-LINE ON ERRORS ;; enable flashing mode-line on errors
(DOOM-THEMES-VISUAL-BELL-CONFIG) (doom-themes-visual-bell-config)
;; ENABLE CUSTOM NEOTREE THEME (ALL-THE-ICONS MUST BE INSTALLED!) ;; enable custom neotree theme (all-the-icons must be installed!)
(DOOM-THEMES-NEOTREE-CONFIG) (doom-themes-neotree-config)
;; OR FOR TREEMACS USERS ;; or for treemacs users
(SETQ DOOM-THEMES-TREEMACS-THEME "DOOM-COLORS") ; USE "DOOM-COLORS" FOR LESS MINIMAL ICON THEME (setq doom-themes-treemacs-theme "doom-colors") ; use "doom-colors" for less minimal icon theme
(DOOM-THEMES-TREEMACS-CONFIG) (doom-themes-treemacs-config)
;; CORRECTS (AND IMPROVES) ORG-MODE'S NATIVE FONTIFICATION. ;; corrects (and improves) org-mode's native fontification.
(DOOM-THEMES-ORG-CONFIG)) (doom-themes-org-config))
#+END_SRC #+end_src
* TRANSPARENCY * TRANSPARENCY
TRUE TRANSPARENCY SUPPORT AS OF EMACS 29 True transparency support as of emacs 29
#+BEGIN_SRC EMACS-LISP #+begin_src emacs-lisp
(ADD-TO-LIST 'DEFAULT-FRAME-ALIST '(ALPHA-BACKGROUND . 90)) ;; FOR ALL NEW FRAMES (add-to-list 'default-frame-alist '(alpha-background . 90)) ;; for all new frames
#+END_SRC #+end_src
* GUI TWEAKS * GUI TWEAKS
MAKING THE UI LOOK NICER Making the ui look nicer
** DISABLE MENUBAR, TOOLBARS AND SCROLLBARS ** Disable menubar, toolbars and scrollbars
#+BEGIN_SRC EMACS-LISP #+begin_src emacs-lisp
(MENU-BAR-MODE -1) (menu-bar-mode -1)
(TOOL-BAR-MODE -1) (tool-bar-mode -1)
(SCROLL-BAR-MODE -1) (scroll-bar-mode -1)
#+END_SRC #+end_src
** DISPLAY LINE NUMBERS AND TRUNCATED LINES ** Display line numbers and truncated lines
#+BEGIN_SRC EMACS-LISP #+begin_src emacs-lisp
(GLOBAL-DISPLAY-LINE-NUMBERS-MODE 0) (global-display-line-numbers-mode 0)
(MENU-BAR--DISPLAY-LINE-NUMBERS-MODE-RELATIVE) (menu-bar--display-line-numbers-mode-relative)
;; (SETQ DISPLAY-LINE-NUMBERS-MODE-RELATIVE 'T) ;; (setq display-line-numbers-mode-relative 't)
(GLOBAL-VISUAL-LINE-MODE T) (global-visual-line-mode t)
#+END_SRC #+end_src
* IVY (COUNSEL) * IVY (COUNSEL)
+ IVY, A GENERIC COMPLETION MECHANISM FOR EMACS. + Ivy, a generic completion mechanism for emacs.
+ COUNSEL, A COLLECTION OF IVY-ENHANCED VERSIONS OF COMMON EMACS COMMANDS. + Counsel, a collection of ivy-enhanced versions of common emacs commandS.
+ IVY-RICH ALLOWS US TO ADD DESCRIPTIONS ALONGSIDE THE COMMANDS IN M-X. + Ivy-rich allows us to add descriptions alongside the commands in m-x.
#+BEGIN_SRC EMACS-LISP #+begin_src emacs-lisp
(USE-PACKAGE COUNSEL (use-package counsel
:AFTER IVY :after ivy
:DIMINISH :diminish
:CONFIG (COUNSEL-MODE)) :config (counsel-mode))
(USE-PACKAGE IVY (use-package ivy
:BIND :bind
;; IVY-RESUME RESUMES THE LAST IVY-BASED COMPLETION. ;; ivy-resume resumes the last ivy-based completion.
(("C-C C-R" . IVY-RESUME) (("C-c C-r" . ivy-resume)
("C-X B" . IVY-SWITCH-BUFFER-OTHER-WINDOW)) ("C-x b" . ivy-switch-buffer-other-window))
:DIMINISH :diminish
:CUSTOM :custom
(SETQ IVY-USE-VIRTUAL-BUFFERS T) (setq ivy-use-virtual-buffers t)
(SETQ IVY-COUNT-FORMAT "(%D/%D) ") (setq ivy-count-format "(%d/%d) ")
(SETQ ENABLE-RECURSIVE-MINIBUFFERS T) (setq enable-recursive-minibuffers t)
:CONFIG :config
(IVY-MODE)) (ivy-mode))
(USE-PACKAGE ALL-THE-ICONS-IVY-RICH (use-package all-the-icons-ivy-rich
:ENSURE T :ensure t
:DIMINISH :diminish
:INIT (ALL-THE-ICONS-IVY-RICH-MODE 1)) :init (all-the-icons-ivy-rich-mode 1))
(USE-PACKAGE IVY-RICH (use-package ivy-rich
:AFTER IVY :after ivy
:DIMINISH :diminish
:ENSURE T :ensure t
:INIT (IVY-RICH-MODE 1) ;; THIS GETS US DESCRIPTIONS IN M-X. :init (ivy-rich-mode 1) ;; this gets us descriptions in m-x.
:CUSTOM :custom
(IVY-VIRTUAL-ABBREVIATE 'FULL (ivy-virtual-abbreviate 'full
IVY-RICH-SWITCH-BUFFER-ALIGN-VIRTUAL-BUFFER T ivy-rich-switch-buffer-align-virtual-buffer t
IVY-RICH-PATH-STYLE 'ABBREV) ivy-rich-path-style 'abbrev)
:CONFIG :config
(IVY-SET-DISPLAY-TRANSFORMER 'IVY-SWITCH-BUFFER (ivy-set-display-transformer 'ivy-switch-buffer
'IVY-RICH-SWITCH-BUFFER-TRANSFORMER)) 'ivy-rich-switch-buffer-transformer))
#+END_SRC #+end_src
* LANGUAGE SUPPORT * LANGUAGE SUPPORT
EMACS HAS BUILT-IN PROGRAMMING LANGUAGE MODES FOR LISP, SCHEME, DSSSL, ADA, ASM, AWK, C, C++, FORTRAN, ICON, IDL (CORBA), IDLWAVE, JAVA, JAVASCRIPT, M4, MAKEFILES, METAFONT, MODULA2, OBJECT PASCAL, OBJECTIVE-C, OCTAVE, PASCAL, PERL, PIKE, POSTSCRIPT, PROLOG, PYTHON, RUBY, SIMULA, SQL, TCL, VERILOG, AND VHDL. OTHER LANGUAGES WILL REQUIRE YOU TO INSTALL ADDITIONAL MODES. Emacs has built-in programming language modes for lisp, scheme, dsssl, ada, asm, awk, c, c++, fortran, icon, idl (corba), idlwave, java, javascript, m4, makefiles, metafont, modula2, object pascal, objective-c, octave, pascal, perl, pike, postscript, prolog, python, ruby, simula, sql, tcl, verilog, and vhdl. Other languages will require you to install additional modes.
#+BEGIN_SRC EMACS-LISP #+begin_src emacs-lisp
(USE-PACKAGE ZIG-MODE) (use-package zig-mode)
(USE-PACKAGE NIX-MODE) (use-package nix-mode)
;; (USE-PACKAGE JAI-MODE) ;; (use-package jai-mode)
(USE-PACKAGE RUST-MODE) (use-package rust-mode)
(USE-PACKAGE CARGO-MODE) (use-package cargo-mode)
(USE-PACKAGE LUA-MODE) (use-package lua-mode)
(ADD-TO-LIST 'LOAD-PATH "~/.CONFIG/EMACS/MANUAL-PACKAGES") (add-to-list 'load-path "~/.config/emacs/manual-packages")
(REQUIRE 'ODIN-MODE) (require 'odin-mode)
#+END_SRC #+end_src
* ORG MODE * ORG MODE
** ENABLING TABLE OF CONTENTS ** Enabling table of contents
#+BEGIN_SRC EMACS-LISP #+begin_src emacs-lisp
(USE-PACKAGE TOC-ORG (use-package toc-org
:COMMANDS TOC-ORG-ENABLE :commands toc-org-enable
:INIT (ADD-HOOK 'ORG-MODE-HOOK 'TOC-ORG-ENABLE)) :init (add-hook 'org-mode-hook 'toc-org-enable))
#+END_SRC #+end_src
** ENABLING ORG BULLETS ** Enabling org bullets
ORG-BULLETS GIVE BULLET POINTS INSTEAD OF ASTERISKS Org-bullets give bullet points instead of asterisks
#+BEGIN_SRC EMACS-LISP #+begin_src emacs-lisp
(ADD-HOOK 'ORG-MODE-HOOK 'ORG-INDENT-MODE) (add-hook 'org-mode-hook 'org-indent-mode)
;;(SETQ (SETQ ORG-RETURN-FOLLOWS-LINK T) ;;(setq (setq org-return-follows-link t)
(USE-PACKAGE ORG-BULLETS) (use-package org-bullets)
(ADD-HOOK 'ORG-MODE-HOOK (LAMBDA () (ORG-BULLETS-MODE 1))) (add-hook 'org-mode-hook (lambda () (org-bullets-mode 1)))
#+END_SRC #+end_src
** SOURCE CODE BLOCK TAG EXPANSION ** SOURCE CODE BLOCK TAG EXPANSION
ORG-TEMPO IS NOT A SEPARATE PACKAGE BUT A MODULE WITHIN ORG THAT CAN BE ENABLED. ORG-TEMPO ALLOWS FOR '<S' FOLLOWED BY TAB TO EXPAND TO A BEGIN_SRC TAG. OTHER EXPANSIONS AVAILABLE INCLUDE: Org-tempo is not a separate package but a module within org that can be enabled. Org-tempo allows for '<s' followed by tab to expand to a begin_src tag. Other expansions available include:
| TYPING THE BELOW + TAB | EXPANDS TO ... | | typing the below + tab | expands to ... |
|------------------------+-----------------------------------------| |------------------------+-----------------------------------------|
| <A | '#+BEGIN_EXPORT ASCII' … '#+END_EXPORT | | <a | '#+begin_export ascii' … '#+end_export |
| <C | '#+BEGIN_CENTER' … '#+END_CENTER' | | <c | '#+begin_center' … '#+end_center' |
| <C | '#+BEGIN_COMMENT' … '#+END_COMMENT' | | <c | '#+begin_comment' … '#+end_comment' |
| <E | '#+BEGIN_EXAMPLE' … '#+END_EXAMPLE' | | <e | '#+begin_example' … '#+end_example' |
| <E | '#+BEGIN_EXPORT' … '#+END_EXPORT' | | <e | '#+begin_export' … '#+end_export' |
| <H | '#+BEGIN_EXPORT HTML' … '#+END_EXPORT' | | <h | '#+begin_export html' … '#+end_export' |
| <L | '#+BEGIN_EXPORT LATEX' … '#+END_EXPORT' | | <l | '#+begin_export latex' … '#+end_export' |
| <Q | '#+BEGIN_QUOTE' … '#+END_QUOTE' | | <q | '#+begin_quote' … '#+end_quote' |
| <S | '#+BEGIN_SRC' … '#+END_SRC' | | <s | '#+begin_src' … '#+end_src' |
| <V | '#+BEGIN_VERSE' … '#+END_VERSE' | | <v | '#+begin_verse' … '#+end_verse' |
#+BEGIN_SRC EMACS-LISP #+begin_src emacs-lisp
(REQUIRE 'ORG-TEMPO) (require 'org-tempo)
#+END_SRC #+end_src
* WHICH-KEY * WHICH-KEY
#+BEGIN_SRC EMACS-LISP #+begin_src emacs-lisp
(USE-PACKAGE WHICH-KEY (use-package which-key
:INIT :init
(WHICH-KEY-MODE 1) (which-key-mode 1)
:DIMINISH :diminish
:CONFIG :config
(SETQ WHICH-KEY-SIDE-WINDOW-LOCATION 'BOTTOM (setq which-key-side-window-location 'bottom
WHICH-KEY-SORT-ORDER #'WHICH-KEY-KEY-ORDER-ALPHA which-key-sort-order #'which-key-key-order-alpha
WHICH-KEY-SORT-UPPERCASE-FIRST NIL which-key-sort-uppercase-first nil
WHICH-KEY-ADD-COLUMN-PADDING 1 which-key-add-column-padding 1
WHICH-KEY-MAX-DISPLAY-COLUMNS NIL which-key-max-display-columns nil
WHICH-KEY-MIN-DISPLAY-LINES 6 which-key-min-display-lines 6
WHICH-KEY-SIDE-WINDOW-SLOT -10 which-key-side-window-slot -10
WHICH-KEY-SIDE-WINDOW-MAX-HEIGHT 0.25 which-key-side-window-max-height 0.25
WHICH-KEY-IDE-DELAY 0.8 which-key-ide-delay 0.8
WHICH-KEY-MAX-DESCRIPTION-LENGTH 25 which-key-max-description-length 25
WHICH-KEY-ALLOW-IMPRECISE-WINDOW-FIT NIL which-key-allow-imprecise-window-fit nil
WHICH-KEY-SEPARATOR " -> " )) which-key-separator " -> " ))
#+END_SRC #+end_src