system updates
This commit is contained in:
+297
-348
@@ -18,7 +18,7 @@
|
||||
- [[#flycheck][FLYCHECK]]
|
||||
- [[#fonts][FONTS]]
|
||||
- [[#setting-the-font-face][Setting The Font Face]]
|
||||
- [[#zoom-inout][Zoom In/Out]]
|
||||
- [[#zoom-inout][ZOOM IN/OUT]]
|
||||
- [[#gnuplot][GNUPLOT]]
|
||||
- [[#image-dir-ed][IMAGE DIR-ED]]
|
||||
- [[#indentingtabs][INDENTING/TABS]]
|
||||
@@ -31,19 +31,19 @@
|
||||
- [[#rainbow-mode][RAINBOW MODE]]
|
||||
- [[#reload-emacs][RELOAD EMACS]]
|
||||
- [[#shells-and-terminals][SHELLS AND TERMINALS]]
|
||||
- [[#eshell][Eshell]]
|
||||
- [[#eshell][ESHELL]]
|
||||
- [[#sudo-edit][SUDO EDIT]]
|
||||
- [[#theme][THEME]]
|
||||
- [[#transparency][TRANSPARENCY]]
|
||||
- [[#gui-tweaks][GUI TWEAKS]]
|
||||
- [[#disable-menubar-toolbars-and-scrollbars][Disable Menubar, Toolbars and Scrollbars]]
|
||||
- [[#display-line-numbers-and-truncated-lines][Display Line Numbers and Truncated Lines]]
|
||||
- [[#disable-menubar-toolbars-and-scrollbars][DISABLE MENUBAR, TOOLBARS AND SCROLLBARS]]
|
||||
- [[#display-line-numbers-and-truncated-lines][DISPLAY LINE NUMBERS AND TRUNCATED LINES]]
|
||||
- [[#ivy-counsel][IVY (COUNSEL)]]
|
||||
- [[#language-support][LANGUAGE SUPPORT]]
|
||||
- [[#org-mode][ORG MODE]]
|
||||
- [[#enabling-table-of-contents][Enabling Table of Contents]]
|
||||
- [[#enabling-org-bullets][Enabling Org Bullets]]
|
||||
- [[#source-code-block-tag-expansion][Source Code Block Tag Expansion]]
|
||||
- [[#enabling-table-of-contents][ENABLING TABLE OF CONTENTS]]
|
||||
- [[#enabling-org-bullets][ENABLING ORG BULLETS]]
|
||||
- [[#source-code-block-tag-expansion][SOURCE CODE BLOCK TAG EXPANSION]]
|
||||
- [[#which-key][WHICH-KEY]]
|
||||
|
||||
* IMPORTANT PROGRAMS TO LOAD FIRST
|
||||
@@ -170,7 +170,7 @@
|
||||
(lm/leader-keys
|
||||
"SPC" '(counsel-M-x :wk "Counsel M-x")
|
||||
"." '(find-file :wk "Find file")
|
||||
"f c" '((lambda () (interactive) (find-file "~/nixos/modules/old_configs/emacs/config.org")) :wk "Edit emacs config")
|
||||
"f c" '((lambda () (interactive) (find-file "~/personal/nixos/configs/emacs/config.org")) :wk "Edit emacs config")
|
||||
"f r" '(counsel-recentf :wk "Find recent files")
|
||||
"TAB TAB" '(comment-line :wk "Comment lines"))
|
||||
|
||||
@@ -181,9 +181,9 @@
|
||||
"h r r" '(reload-init-file :wk "Reload emacs config"))
|
||||
;; "h r r" '((lambda () (interactive) (load-file user-init-file)) :wk "Reload emacs config"))
|
||||
|
||||
(lm/leader-keys
|
||||
"i" '(:ignore t :wk "Insert")
|
||||
"i p" '(org-download-screenshot :wk "Insert screenshot (org)"))
|
||||
;; (lm/leader-keys
|
||||
;; "i" '(:ignore t :wk "Insert")
|
||||
;; "i p" '(org-download-screenshot :wk "Insert screenshot (org)"))
|
||||
|
||||
(lm/leader-keys
|
||||
"t" '(:ignore t :wk "Toggle")
|
||||
@@ -342,9 +342,7 @@ Defining the various fonts emacs will use
|
||||
** Setting The Font Face
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
|
||||
(set-face-attribute 'default nil
|
||||
;; try switch to Source Code Pro
|
||||
(set-face-attribute 'default nil
|
||||
:font "FiraCodeNerdFontMono"
|
||||
:height 110
|
||||
:weight 'medium)
|
||||
@@ -354,8 +352,9 @@ Defining the various fonts emacs will use
|
||||
:weight 'medium)
|
||||
(set-face-attribute 'fixed-pitch nil
|
||||
:font "FiraCodeNerdFontMono"
|
||||
:height 110
|
||||
:height 130
|
||||
:weight 'medium)
|
||||
|
||||
;; Makes commented text and keywords italics.
|
||||
;; This is working in emacsclient but not emacs.
|
||||
;; Your font must have an italic face available.
|
||||
@@ -363,419 +362,369 @@ Defining the various fonts emacs will use
|
||||
:slant 'italic)
|
||||
(set-face-attribute 'font-lock-keyword-face nil
|
||||
:slant 'italic)
|
||||
|
||||
;; This sets the default font on all graphical frames created after restarting Emacs.
|
||||
;; Does the same thing as 'set-face-attribute default' above, but emacsclient fonts
|
||||
;; are not right unless I also add this method of setting the default font.
|
||||
(add-to-list 'default-frame-alist '(font . "FiraCodeNerdFontMono-14"))
|
||||
(add-to-list 'default-frame-alist '(font . "FiraCodeNerdFontMono-15"))
|
||||
|
||||
;; Uncomment the following line if line spacing needs adjusting.
|
||||
;; (setq-default line-spacing 0.12)
|
||||
;; UNCOMMENT THE FOLLOWING LINE IF LINE SPACING NEEDS ADJUSTING.
|
||||
;; (SETQ-DEFAULT LINE-SPACING 0.12)
|
||||
|
||||
#+end_src
|
||||
#+END_SRC
|
||||
|
||||
** Zoom In/Out
|
||||
Enable zoom in/out with C-=/- and also for C-scrl-up/down
|
||||
#+begin_src emacs-lisp
|
||||
(global-set-key (kbd "C-=") 'text-scale-increase)
|
||||
(global-set-key (kbd "C--") 'text-scale-decrease)
|
||||
(global-set-key (kbd "<C-wheel-up>") 'text-scale-increase)
|
||||
(global-set-key (kbd "<C-wheel-down>") 'text-scale-decrease)
|
||||
#+end_src
|
||||
** ZOOM IN/OUT
|
||||
ENABLE ZOOM IN/OUT WITH C-=/- AND ALSO FOR C-SCRL-UP/DOWN
|
||||
#+BEGIN_SRC EMACS-LISP
|
||||
(GLOBAL-SET-KEY (KBD "C-=") 'TEXT-SCALE-INCREASE)
|
||||
(GLOBAL-SET-KEY (KBD "C--") 'TEXT-SCALE-DECREASE)
|
||||
(GLOBAL-SET-KEY (KBD "<C-WHEEL-UP>") 'TEXT-SCALE-INCREASE)
|
||||
(GLOBAL-SET-KEY (KBD "<C-WHEEL-DOWN>") 'TEXT-SCALE-DECREASE)
|
||||
#+END_SRC
|
||||
|
||||
* GNUPLOT
|
||||
#+begin_src emacs-lisp
|
||||
(use-package gnuplot-mode)
|
||||
;; automatically open files ending with .gp or .gnuplot in gnuplot mode
|
||||
;; (setq auto-mode-alist
|
||||
;; (append '(("\\.\\(gp\\|gnuplot\\)$" . gnuplot-mode)) auto-mode-alist)))
|
||||
#+BEGIN_SRC EMACS-LISP
|
||||
(USE-PACKAGE GNUPLOT-MODE)
|
||||
;; AUTOMATICALLY OPEN FILES ENDING WITH .GP OR .GNUPLOT IN GNUPLOT MODE
|
||||
;; (SETQ AUTO-MODE-ALIST
|
||||
;; (APPEND '(("\\.\\(GP\\|GNUPLOT\\)$" . GNUPLOT-MODE)) AUTO-MODE-ALIST)))
|
||||
|
||||
#+end_src
|
||||
#+END_SRC
|
||||
|
||||
* IMAGE DIR-ED
|
||||
#+begin_src emacs-lisp
|
||||
(use-package image-dired+)
|
||||
#+end_src
|
||||
#+BEGIN_SRC EMACS-LISP
|
||||
(USE-PACKAGE IMAGE-DIRED+)
|
||||
#+END_SRC
|
||||
* INDENTING/TABS
|
||||
#+begin_src emacs-lisp
|
||||
(setq-default indent-tabs-mode nil)
|
||||
(setq-default tab-width 4)
|
||||
(setq-default indent-line-function 'insert-tab)
|
||||
(setq-default c-default-style "linux"
|
||||
c-basic-offset 4)
|
||||
;; if indent-tabs-mode is off, untabify before saving
|
||||
;;(add-hook 'write-file-hooks
|
||||
;; (lambda () (if (not indent-tabs-mode)
|
||||
;; (untabify (point-min) (point-max)))))
|
||||
#+end_src
|
||||
#+BEGIN_SRC EMACS-LISP
|
||||
(SETQ-DEFAULT INDENT-TABS-MODE NIL)
|
||||
(SETQ-DEFAULT TAB-WIDTH 2)
|
||||
(SETQ-DEFAULT INDENT-LINE-FUNCTION 'INSERT-TAB)
|
||||
(SETQ-DEFAULT C-DEFAULT-STYLE "LINUX"
|
||||
C-BASIC-OFFSET 2)
|
||||
;; IF INDENT-TABS-MODE IS OFF, UNTABIFY BEFORE SAVING
|
||||
;;(ADD-HOOK 'WRITE-FILE-HOOKS
|
||||
;; (LAMBDA () (IF (NOT INDENT-TABS-MODE)
|
||||
;; (UNTABIFY (POINT-MIN) (POINT-MAX)))))
|
||||
#+END_SRC
|
||||
|
||||
* LIGATURES
|
||||
#+begin_src emacs-lisp
|
||||
;; This assumes you've installed the package via MELPA.
|
||||
(use-package ligature
|
||||
:config
|
||||
;; Enable the "www" ligature in every possible major mode
|
||||
(ligature-set-ligatures 't '("www"))
|
||||
;; Enable traditional ligature support in eww-mode, if the
|
||||
;; `variable-pitch' face supports it
|
||||
(ligature-set-ligatures 'eww-mode '("ff" "fi" "ffi"))
|
||||
;; Enable all FiraMonoNerdFont and Fira Code ligatures in programming modes
|
||||
|
||||
(ligature-set-ligatures 'prog-mode
|
||||
'(;; == === ==== => =| =>>=>=|=>==>> ==< =/=//=// =~
|
||||
;; =:= =!=
|
||||
("=" (rx (+ (or ">" "<" "|" "/" "~" ":" "!" "="))))
|
||||
;; ;; ;;;
|
||||
(";" (rx (+ ";")))
|
||||
;; && &&&
|
||||
("&" (rx (+ "&")))
|
||||
;; !! !!! !. !: !!. != !== !~
|
||||
("!" (rx (+ (or "=" "!" "\." ":" "~"))))
|
||||
;; ?? ??? ?: ?= ?.
|
||||
("?" (rx (or ":" "=" "\." (+ "?"))))
|
||||
;; %% %%%
|
||||
("%" (rx (+ "%")))
|
||||
;; |> ||> |||> ||||> |] |} || ||| |-> ||-||
|
||||
;; |->>-||-<<-| |- |== ||=||
|
||||
;; |==>>==<<==<=>==//==/=!==:===>
|
||||
("|" (rx (+ (or ">" "<" "|" "/" ":" "!" "}" "\]"
|
||||
"-" "=" ))))
|
||||
;; \\ \\\ \/
|
||||
("\\" (rx (or "/" (+ "\\"))))
|
||||
;; ++ +++ ++++ +>
|
||||
("+" (rx (or ">" (+ "+"))))
|
||||
;; :: ::: :::: :> :< := :// ::=
|
||||
(":" (rx (or ">" "<" "=" "//" ":=" (+ ":"))))
|
||||
;; // /// //// /\ /* /> /===:===!=//===>>==>==/
|
||||
("/" (rx (+ (or ">" "<" "|" "/" "\\" "\*" ":" "!"
|
||||
"="))))
|
||||
;; .. ... .... .= .- .? ..= ..<
|
||||
("\." (rx (or "=" "-" "\?" "\.=" "\.<" (+ "\."))))
|
||||
;; -- --- ---- -~ -> ->> -| -|->-->>->--<<-|
|
||||
("-" (rx (+ (or ">" "<" "|" "~" "-"))))
|
||||
;; *> */ *) ** *** ****
|
||||
("*" (rx (or ">" "/" ")" (+ "*"))))
|
||||
;; www wwww
|
||||
("w" (rx (+ "w")))
|
||||
;; <> <!-- <|> <: <~ <~> <~~ <+ <* <$ </ <+> <*>
|
||||
;; <$> </> <| <|| <||| <|||| <- <-| <-<<-|-> <->>
|
||||
;; <<-> <= <=> <<==<<==>=|=>==/==//=!==:=>
|
||||
;; << <<< <<<<
|
||||
("<" (rx (+ (or "\+" "\*" "\$" "<" ">" ":" "~" "!"
|
||||
"-" "/" "|" "="))))
|
||||
;; >: >- >>- >--|-> >>-|-> >= >== >>== >=|=:=>>
|
||||
;; >> >>> >>>>
|
||||
(">" (rx (+ (or ">" "<" "|" "/" ":" "=" "-"))))
|
||||
;; #: #= #! #( #? #[ #{ #_ #_( ## ### #####
|
||||
("#" (rx (or ":" "=" "!" "(" "\?" "\[" "{" "_(" "_"
|
||||
(+ "#"))))
|
||||
;; ~~ ~~~ ~= ~- ~@ ~> ~~>
|
||||
("~" (rx (or ">" "=" "-" "@" "~>" (+ "~"))))
|
||||
;; __ ___ ____ _|_ __|____|_
|
||||
("_" (rx (+ (or "_" "|"))))
|
||||
;; Fira code: 0xFF 0x12
|
||||
("0" (rx (and "x" (+ (in "A-F" "a-f" "0-9")))))
|
||||
;; Fira code:
|
||||
"Fl" "Tl" "fi" "fj" "fl" "ft"
|
||||
;; The few not covered by the regexps.
|
||||
"{|" "[|" "]#" "(*" "}#" "$>" "^="))
|
||||
|
||||
;; Enables ligature checks globally in all buffers. You can also do it
|
||||
;; per mode with `ligature-mode'.
|
||||
(global-ligature-mode t))
|
||||
|
||||
#+end_src
|
||||
#+BEGIN_SRC EMACS-LISP
|
||||
;; THIS ASSUMES YOU'VE INSTALLED THE PACKAGE VIA MELPA.
|
||||
(USE-PACKAGE LIGATURE
|
||||
:CONFIG
|
||||
;; ENABLE THE "WWW" LIGATURE IN EVERY POSSIBLE MAJOR MODE
|
||||
(LIGATURE-SET-LIGATURES 'T '("WWW"))
|
||||
;; ENABLE TRADITIONAL LIGATURE SUPPORT IN EWW-MODE, IF THE
|
||||
;; `VARIABLE-PITCH' FACE SUPPORTS IT
|
||||
(LIGATURE-SET-LIGATURES 'EWW-MODE '("FF" "FI" "FFI"))
|
||||
;; ENABLE ALL CASCADIA CODE LIGATURES IN PROGRAMMING MODES
|
||||
(LIGATURE-SET-LIGATURES 'PROG-MODE '("|||>" "<|||" "<==>" "<!--" "####" "~~>" "***" "||=" "||>"
|
||||
":::" "::=" "=:=" "===" "==>" "=!=" "=>>" "=<<" "=/=" "!=="
|
||||
"!!." ">=>" ">>=" ">>>" ">>-" ">->" "->>" "-->" "---" "-<<"
|
||||
"<~~" "<~>" "<*>" "<||" "<|>" "<$>" "<==" "<=>" "<=<" "<->"
|
||||
"<--" "<-<" "<<=" "<<-" "<<<" "<+>" "</>" "###" "#_(" "..<"
|
||||
"..." "+++" "/==" "///" "_|_" "WWW" "&&" "^=" "~~" "~@" "~="
|
||||
"~>" "~-" "**" "*>" "*/" "||" "|}" "|]" "|=" "|>" "|-" "{|"
|
||||
"[|" "]#" "::" ":=" ":>" ":<" "$>" "==" "=>" "!=" "!!" ">:"
|
||||
">=" ">>" ">-" "-~" "-|" "->" "--" "-<" "<~" "<*" "<|" "<:"
|
||||
"<$" "<=" "<>" "<-" "<<" "<+" "</" "#{" "#[" "#:" "#=" "#!"
|
||||
"##" "#(" "#?" "#_" "%%" ".=" ".-" ".." ".?" "+>" "++" "?:"
|
||||
"?=" "?." "??" ";;" "/*" "/=" "/>" "//" "__" "~~" "(*" "*)"
|
||||
"\\\\" "://"))
|
||||
;; ENABLES LIGATURE CHECKS GLOBALLY IN ALL BUFFERS. YOU CAN ALSO DO IT
|
||||
;; PER MODE WITH `LIGATURE-MODE'.
|
||||
(GLOBAL-LIGATURE-MODE T))
|
||||
#+END_SRC
|
||||
|
||||
* MARKDOWN MODE
|
||||
#+begin_src emacs-lisp
|
||||
(use-package markdown-mode
|
||||
:ensure t
|
||||
:mode ("README\\.md\\'" . gfm-mode)
|
||||
:init (setq markdown-command "multimarkdown"))
|
||||
#+BEGIN_SRC EMACS-LISP
|
||||
(USE-PACKAGE MARKDOWN-MODE
|
||||
:ENSURE T
|
||||
:MODE ("README\\.MD\\'" . GFM-MODE)
|
||||
:INIT (SETQ MARKDOWN-COMMAND "MULTIMARKDOWN"))
|
||||
|
||||
#+end_src
|
||||
#+END_SRC
|
||||
|
||||
* ORG DOWNLOAD
|
||||
#+begin_src emacs-lisp
|
||||
|
||||
(use-package org-download
|
||||
:after org
|
||||
:defer nil
|
||||
:custom
|
||||
(org-download-method 'directory)
|
||||
(org-download-image-dir "~/emacs/images/")
|
||||
(org-download-heading-lvl 0)
|
||||
(org-download-timestamp "org_%Y%m%d-%H%M%S_")
|
||||
(org-image-actual-width 400)
|
||||
(org-download-screenshot-method "WAYLAND_DISPLAY=wayland-1 wl-paste -t image/png > '%s'.png")
|
||||
:bind
|
||||
("C-M-y" . org-download-screenshot file)
|
||||
:config
|
||||
(require 'org-download))
|
||||
#+end_src
|
||||
#+BEGIN_SRC EMACS-LISP
|
||||
(USE-PACKAGE ORG-DOWNLOAD
|
||||
:AFTER ORG
|
||||
:DEFER NIL
|
||||
:CUSTOM
|
||||
(ORG-DOWNLOAD-METHOD 'DIRECTORY)
|
||||
(ORG-DOWNLOAD-IMAGE-DIR "~/EMACS/IMAGES/")
|
||||
(ORG-DOWNLOAD-HEADING-LVL 0)
|
||||
(ORG-DOWNLOAD-TIMESTAMP "ORG_%Y%M%D-%H%M%S_")
|
||||
(ORG-IMAGE-ACTUAL-WIDTH 400)
|
||||
(ORG-DOWNLOAD-SCREENSHOT-METHOD "WAYLAND_DISPLAY=WAYLAND-1 WL-PASTE -T IMAGE/PNG > '%S'.PNG")
|
||||
:BIND
|
||||
("C-M-Y" . ORG-DOWNLOAD-SCREENSHOT)
|
||||
:CONFIG
|
||||
(REQUIRE 'ORG-DOWNLOAD))
|
||||
#+END_SRC
|
||||
|
||||
* PULSE
|
||||
Pulse highlight a line on certain actions
|
||||
PULSE HIGHLIGHT A LINE ON CERTAIN ACTIONS
|
||||
|
||||
# #+begin_src emacs-lisp
|
||||
# (use-package pulse
|
||||
# :ensure nil
|
||||
# :defer
|
||||
# :init
|
||||
# (defun pulse-line (&rest _)
|
||||
# "Pulse the current line"
|
||||
# (pulse-momentary-highlight-one-line (point)))
|
||||
# #+BEGIN_SRC EMACS-LISP
|
||||
# (USE-PACKAGE PULSE
|
||||
# :ENSURE NIL
|
||||
# :DEFER
|
||||
# :INIT
|
||||
# (DEFUN PULSE-LINE (&REST _)
|
||||
# "PULSE THE CURRENT LINE"
|
||||
# (PULSE-MOMENTARY-HIGHLIGHT-ONE-LINE (POINT)))
|
||||
|
||||
# (dolist (command '(scroll-up-command
|
||||
# scroll-down-command
|
||||
# windmove-left
|
||||
# windmove-right
|
||||
# windmove-up
|
||||
# windmove-down
|
||||
# move-to-window-line-top-bottom
|
||||
# recenter-top-bottom
|
||||
# other-window))
|
||||
# (advice-add command :after #'pulse-line)))
|
||||
# #+end_src
|
||||
# (DOLIST (COMMAND '(SCROLL-UP-COMMAND
|
||||
# SCROLL-DOWN-COMMAND
|
||||
# WINDMOVE-LEFT
|
||||
# WINDMOVE-RIGHT
|
||||
# WINDMOVE-UP
|
||||
# WINDMOVE-DOWN
|
||||
# MOVE-TO-WINDOW-LINE-TOP-BOTTOM
|
||||
# RECENTER-TOP-BOTTOM
|
||||
# OTHER-WINDOW))
|
||||
# (ADVICE-ADD COMMAND :AFTER #'PULSE-LINE)))
|
||||
# #+END_SRC
|
||||
|
||||
* PDF TOOLS
|
||||
#+begin_src emacs-lisp
|
||||
(use-package pdf-tools)
|
||||
#+end_src
|
||||
#+BEGIN_SRC EMACS-LISP
|
||||
(USE-PACKAGE PDF-TOOLS)
|
||||
#+END_SRC
|
||||
|
||||
|
||||
* 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
|
||||
(use-package projectile
|
||||
:diminish
|
||||
:config
|
||||
(projectile-mode 1))
|
||||
#+end_src
|
||||
#+BEGIN_SRC EMACS-LISP
|
||||
(USE-PACKAGE PROJECTILE
|
||||
:DIMINISH
|
||||
:CONFIG
|
||||
(PROJECTILE-MODE 1))
|
||||
#+END_SRC
|
||||
|
||||
* 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
|
||||
(use-package rainbow-mode
|
||||
:diminish
|
||||
:hook
|
||||
((org-mode prog-mode) . rainbow-mode))
|
||||
#+end_src
|
||||
#+BEGIN_SRC EMACS-LISP
|
||||
(USE-PACKAGE RAINBOW-MODE
|
||||
:DIMINISH
|
||||
:HOOK
|
||||
((ORG-MODE PROG-MODE) . RAINBOW-MODE))
|
||||
#+END_SRC
|
||||
|
||||
* 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
|
||||
(defun reload-init-file ()
|
||||
(interactive)
|
||||
(load-file user-init-file)
|
||||
(load-file user-init-file))
|
||||
#+end_src
|
||||
#+BEGIN_SRC EMACS-LISP
|
||||
(DEFUN RELOAD-INIT-FILE ()
|
||||
(INTERACTIVE)
|
||||
(LOAD-FILE USER-INIT-FILE)
|
||||
(LOAD-FILE USER-INIT-FILE))
|
||||
#+END_SRC
|
||||
|
||||
* SHELLS AND TERMINALS
|
||||
|
||||
** Eshell
|
||||
** ESHELL
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(use-package eshell-syntax-highlighting
|
||||
:after esh-mode
|
||||
:config
|
||||
(eshell-syntax-highlighting-global-mode +1))
|
||||
#+BEGIN_SRC EMACS-LISP
|
||||
(USE-PACKAGE ESHELL-SYNTAX-HIGHLIGHTING
|
||||
:AFTER ESH-MODE
|
||||
:CONFIG
|
||||
(ESHELL-SYNTAX-HIGHLIGHTING-GLOBAL-MODE +1))
|
||||
|
||||
(setq eshell-rc-script (concat user-emacs-directory "eshell/profile")
|
||||
eshell-aliases-file (concat user-emacs-directory "eshell/aliases")
|
||||
eshell-history-size 5000
|
||||
eshell-buffer-maximum-lines 5000
|
||||
eshell-hist-ignoredups t
|
||||
eshell-scroll-to-bottom-on-input t
|
||||
eshell-destroy-buffer-when-process-dies t
|
||||
eshell-visual-commands'("bash" "fish" "htop" "ssh" "top" "zsh"))
|
||||
#+end_src
|
||||
(SETQ ESHELL-RC-SCRIPT (CONCAT USER-EMACS-DIRECTORY "ESHELL/PROFILE")
|
||||
ESHELL-ALIASES-FILE (CONCAT USER-EMACS-DIRECTORY "ESHELL/ALIASES")
|
||||
ESHELL-HISTORY-SIZE 5000
|
||||
ESHELL-BUFFER-MAXIMUM-LINES 5000
|
||||
ESHELL-HIST-IGNOREDUPS T
|
||||
ESHELL-SCROLL-TO-BOTTOM-ON-INPUT T
|
||||
ESHELL-DESTROY-BUFFER-WHEN-PROCESS-DIES T
|
||||
ESHELL-VISUAL-COMMANDS'("BASH" "FISH" "HTOP" "SSH" "TOP" "ZSH"))
|
||||
#+END_SRC
|
||||
|
||||
* SUDO EDIT
|
||||
Enable editing of privileged files
|
||||
ENABLE EDITING OF PRIVILEGED FILES
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(use-package sudo-edit
|
||||
:config
|
||||
(lm/leader-keys
|
||||
"fu" '(sudo-edit-find-file :wk "Sudo find file")
|
||||
"fU" '(sudo-edit :wk "Sudo edit file")))
|
||||
#+BEGIN_SRC EMACS-LISP
|
||||
(USE-PACKAGE SUDO-EDIT
|
||||
:CONFIG
|
||||
(LM/LEADER-KEYS
|
||||
"FU" '(SUDO-EDIT-FIND-FILE :WK "SUDO FIND FILE")
|
||||
"FU" '(SUDO-EDIT :WK "SUDO EDIT FILE")))
|
||||
|
||||
#+end_src
|
||||
#+END_SRC
|
||||
|
||||
* THEME
|
||||
Set themes dir, load chosen theme - theme made with [[https://emacsfodder.github.io/emacs-theme-editor/][Emacs Theme Editor]].
|
||||
#+begin_src emacs-lisp
|
||||
;;(add-to-list 'custom-theme-load-path "~/.config/emacs/themes")
|
||||
;;(load-theme 'soft-charcoal t)
|
||||
SET THEMES DIR, LOAD CHOSEN THEME - THEME MADE WITH [[HTTPS://EMACSFODDER.GITHUB.IO/EMACS-THEME-EDITOR/][EMACS THEME EDITOR]].
|
||||
#+BEGIN_SRC EMACS-LISP
|
||||
;;(ADD-TO-LIST 'CUSTOM-THEME-LOAD-PATH "~/.CONFIG/EMACS/THEMES")
|
||||
;;(LOAD-THEME 'SOFT-CHARCOAL T)
|
||||
|
||||
(use-package doom-themes
|
||||
:ensure t
|
||||
:config
|
||||
;; Global settings (defaults)
|
||||
(setq doom-themes-enable-bold t ; if nil, bold is universally disabled
|
||||
doom-themes-enable-italic t) ; if nil, italics is universally disabled
|
||||
(load-theme 'doom-monokai-spectrum t)
|
||||
;; (load-theme 'doom-monokai-machine t)
|
||||
(USE-PACKAGE DOOM-THEMES
|
||||
:ENSURE T
|
||||
:CONFIG
|
||||
;; GLOBAL SETTINGS (DEFAULTS)
|
||||
(SETQ DOOM-THEMES-ENABLE-BOLD T ; IF NIL, BOLD IS UNIVERSALLY DISABLED
|
||||
DOOM-THEMES-ENABLE-ITALIC T) ; IF NIL, ITALICS IS UNIVERSALLY DISABLED
|
||||
(LOAD-THEME 'DOOM-MONOKAI-SPECTRUM T)
|
||||
;; (LOAD-THEME 'DOOM-MONOKAI-MACHINE T)
|
||||
|
||||
;; Enable flashing mode-line on errors
|
||||
(doom-themes-visual-bell-config)
|
||||
;; Enable custom neotree theme (all-the-icons must be installed!)
|
||||
(doom-themes-neotree-config)
|
||||
;; or for treemacs users
|
||||
(setq doom-themes-treemacs-theme "doom-colors") ; use "doom-colors" for less minimal icon theme
|
||||
(doom-themes-treemacs-config)
|
||||
;; Corrects (and improves) org-mode's native fontification.
|
||||
(doom-themes-org-config))
|
||||
#+end_src
|
||||
;; ENABLE FLASHING MODE-LINE ON ERRORS
|
||||
(DOOM-THEMES-VISUAL-BELL-CONFIG)
|
||||
;; ENABLE CUSTOM NEOTREE THEME (ALL-THE-ICONS MUST BE INSTALLED!)
|
||||
(DOOM-THEMES-NEOTREE-CONFIG)
|
||||
;; OR FOR TREEMACS USERS
|
||||
(SETQ DOOM-THEMES-TREEMACS-THEME "DOOM-COLORS") ; USE "DOOM-COLORS" FOR LESS MINIMAL ICON THEME
|
||||
(DOOM-THEMES-TREEMACS-CONFIG)
|
||||
;; CORRECTS (AND IMPROVES) ORG-MODE'S NATIVE FONTIFICATION.
|
||||
(DOOM-THEMES-ORG-CONFIG))
|
||||
#+END_SRC
|
||||
|
||||
* TRANSPARENCY
|
||||
True transparency support as of emacs 29
|
||||
#+begin_src emacs-lisp
|
||||
(add-to-list 'default-frame-alist '(alpha-background . 90)) ;; for all new frames
|
||||
#+end_src
|
||||
TRUE TRANSPARENCY SUPPORT AS OF EMACS 29
|
||||
#+BEGIN_SRC EMACS-LISP
|
||||
(ADD-TO-LIST 'DEFAULT-FRAME-ALIST '(ALPHA-BACKGROUND . 90)) ;; FOR ALL NEW FRAMES
|
||||
#+END_SRC
|
||||
|
||||
|
||||
* 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
|
||||
(menu-bar-mode -1)
|
||||
(tool-bar-mode -1)
|
||||
(scroll-bar-mode -1)
|
||||
#+end_src
|
||||
#+BEGIN_SRC EMACS-LISP
|
||||
(MENU-BAR-MODE -1)
|
||||
(TOOL-BAR-MODE -1)
|
||||
(SCROLL-BAR-MODE -1)
|
||||
#+END_SRC
|
||||
|
||||
** Display Line Numbers and Truncated Lines
|
||||
** DISPLAY LINE NUMBERS AND TRUNCATED LINES
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(global-display-line-numbers-mode 0)
|
||||
(menu-bar--display-line-numbers-mode-relative)
|
||||
;; (setq display-line-numbers-mode-relative 't)
|
||||
#+BEGIN_SRC EMACS-LISP
|
||||
(GLOBAL-DISPLAY-LINE-NUMBERS-MODE 0)
|
||||
(MENU-BAR--DISPLAY-LINE-NUMBERS-MODE-RELATIVE)
|
||||
;; (SETQ DISPLAY-LINE-NUMBERS-MODE-RELATIVE 'T)
|
||||
|
||||
(global-visual-line-mode t)
|
||||
#+end_src
|
||||
(GLOBAL-VISUAL-LINE-MODE T)
|
||||
#+END_SRC
|
||||
|
||||
* IVY (COUNSEL)
|
||||
+ Ivy, a generic completion mechanism for Emacs.
|
||||
+ 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, A GENERIC COMPLETION MECHANISM FOR EMACS.
|
||||
+ COUNSEL, A COLLECTION OF IVY-ENHANCED VERSIONS OF COMMON EMACS COMMANDS.
|
||||
+ IVY-RICH ALLOWS US TO ADD DESCRIPTIONS ALONGSIDE THE COMMANDS IN M-X.
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(use-package counsel
|
||||
:after ivy
|
||||
:diminish
|
||||
:config (counsel-mode))
|
||||
#+BEGIN_SRC EMACS-LISP
|
||||
(USE-PACKAGE COUNSEL
|
||||
:AFTER IVY
|
||||
:DIMINISH
|
||||
:CONFIG (COUNSEL-MODE))
|
||||
|
||||
(use-package ivy
|
||||
:bind
|
||||
;; ivy-resume resumes the last Ivy-based completion.
|
||||
(("C-c C-r" . ivy-resume)
|
||||
("C-x B" . ivy-switch-buffer-other-window))
|
||||
:diminish
|
||||
:custom
|
||||
(setq ivy-use-virtual-buffers t)
|
||||
(setq ivy-count-format "(%d/%d) ")
|
||||
(setq enable-recursive-minibuffers t)
|
||||
:config
|
||||
(ivy-mode))
|
||||
(USE-PACKAGE IVY
|
||||
:BIND
|
||||
;; IVY-RESUME RESUMES THE LAST IVY-BASED COMPLETION.
|
||||
(("C-C C-R" . IVY-RESUME)
|
||||
("C-X B" . IVY-SWITCH-BUFFER-OTHER-WINDOW))
|
||||
:DIMINISH
|
||||
:CUSTOM
|
||||
(SETQ IVY-USE-VIRTUAL-BUFFERS T)
|
||||
(SETQ IVY-COUNT-FORMAT "(%D/%D) ")
|
||||
(SETQ ENABLE-RECURSIVE-MINIBUFFERS T)
|
||||
:CONFIG
|
||||
(IVY-MODE))
|
||||
|
||||
(use-package all-the-icons-ivy-rich
|
||||
:ensure t
|
||||
:diminish
|
||||
:init (all-the-icons-ivy-rich-mode 1))
|
||||
(USE-PACKAGE ALL-THE-ICONS-IVY-RICH
|
||||
:ENSURE T
|
||||
:DIMINISH
|
||||
:INIT (ALL-THE-ICONS-IVY-RICH-MODE 1))
|
||||
|
||||
(use-package ivy-rich
|
||||
:after ivy
|
||||
:diminish
|
||||
:ensure t
|
||||
:init (ivy-rich-mode 1) ;; this gets us descriptions in M-x.
|
||||
:custom
|
||||
(ivy-virtual-abbreviate 'full
|
||||
ivy-rich-switch-buffer-align-virtual-buffer t
|
||||
ivy-rich-path-style 'abbrev)
|
||||
:config
|
||||
(ivy-set-display-transformer 'ivy-switch-buffer
|
||||
'ivy-rich-switch-buffer-transformer))
|
||||
(USE-PACKAGE IVY-RICH
|
||||
:AFTER IVY
|
||||
:DIMINISH
|
||||
:ENSURE T
|
||||
:INIT (IVY-RICH-MODE 1) ;; THIS GETS US DESCRIPTIONS IN M-X.
|
||||
:CUSTOM
|
||||
(IVY-VIRTUAL-ABBREVIATE 'FULL
|
||||
IVY-RICH-SWITCH-BUFFER-ALIGN-VIRTUAL-BUFFER T
|
||||
IVY-RICH-PATH-STYLE 'ABBREV)
|
||||
:CONFIG
|
||||
(IVY-SET-DISPLAY-TRANSFORMER 'IVY-SWITCH-BUFFER
|
||||
'IVY-RICH-SWITCH-BUFFER-TRANSFORMER))
|
||||
|
||||
#+end_src
|
||||
#+END_SRC
|
||||
|
||||
* 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
|
||||
(use-package zig-mode)
|
||||
(use-package nix-mode)
|
||||
;; (use-package jai-mode)
|
||||
(use-package rust-mode)
|
||||
(use-package cargo-mode)
|
||||
(use-package lua-mode)
|
||||
(add-to-list 'load-path "~/.config/emacs/manual-packages")
|
||||
(require 'odin-mode)
|
||||
#+end_src
|
||||
#+BEGIN_SRC EMACS-LISP
|
||||
(USE-PACKAGE ZIG-MODE)
|
||||
(USE-PACKAGE NIX-MODE)
|
||||
;; (USE-PACKAGE JAI-MODE)
|
||||
(USE-PACKAGE RUST-MODE)
|
||||
(USE-PACKAGE CARGO-MODE)
|
||||
(USE-PACKAGE LUA-MODE)
|
||||
(ADD-TO-LIST 'LOAD-PATH "~/.CONFIG/EMACS/MANUAL-PACKAGES")
|
||||
(REQUIRE 'ODIN-MODE)
|
||||
#+END_SRC
|
||||
|
||||
|
||||
* ORG MODE
|
||||
** Enabling Table of Contents
|
||||
** ENABLING TABLE OF CONTENTS
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(use-package toc-org
|
||||
:commands toc-org-enable
|
||||
:init (add-hook 'org-mode-hook 'toc-org-enable))
|
||||
#+end_src
|
||||
#+BEGIN_SRC EMACS-LISP
|
||||
(USE-PACKAGE TOC-ORG
|
||||
:COMMANDS TOC-ORG-ENABLE
|
||||
:INIT (ADD-HOOK 'ORG-MODE-HOOK 'TOC-ORG-ENABLE))
|
||||
#+END_SRC
|
||||
|
||||
** Enabling Org Bullets
|
||||
Org-bullets give bullet points instead of asterisks
|
||||
** ENABLING ORG BULLETS
|
||||
ORG-BULLETS GIVE BULLET POINTS INSTEAD OF ASTERISKS
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(add-hook 'org-mode-hook 'org-indent-mode)
|
||||
;;(setq (setq org-return-follows-link t)
|
||||
(use-package org-bullets)
|
||||
(add-hook 'org-mode-hook (lambda () (org-bullets-mode 1)))
|
||||
#+end_src
|
||||
#+BEGIN_SRC EMACS-LISP
|
||||
(ADD-HOOK 'ORG-MODE-HOOK 'ORG-INDENT-MODE)
|
||||
;;(SETQ (SETQ ORG-RETURN-FOLLOWS-LINK T)
|
||||
(USE-PACKAGE ORG-BULLETS)
|
||||
(ADD-HOOK 'ORG-MODE-HOOK (LAMBDA () (ORG-BULLETS-MODE 1)))
|
||||
#+END_SRC
|
||||
|
||||
** 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:
|
||||
** 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:
|
||||
|
||||
| Typing the below + TAB | Expands to ... |
|
||||
| TYPING THE BELOW + TAB | EXPANDS TO ... |
|
||||
|------------------------+-----------------------------------------|
|
||||
| <a | '#+BEGIN_EXPORT ascii' … '#+END_EXPORT |
|
||||
| <c | '#+BEGIN_CENTER' … '#+END_CENTER' |
|
||||
| <A | '#+BEGIN_EXPORT ASCII' … '#+END_EXPORT |
|
||||
| <C | '#+BEGIN_CENTER' … '#+END_CENTER' |
|
||||
| <C | '#+BEGIN_COMMENT' … '#+END_COMMENT' |
|
||||
| <e | '#+BEGIN_EXAMPLE' … '#+END_EXAMPLE' |
|
||||
| <E | '#+BEGIN_EXAMPLE' … '#+END_EXAMPLE' |
|
||||
| <E | '#+BEGIN_EXPORT' … '#+END_EXPORT' |
|
||||
| <h | '#+BEGIN_EXPORT html' … '#+END_EXPORT' |
|
||||
| <l | '#+BEGIN_EXPORT latex' … '#+END_EXPORT' |
|
||||
| <q | '#+BEGIN_QUOTE' … '#+END_QUOTE' |
|
||||
| <s | '#+BEGIN_SRC' … '#+END_SRC' |
|
||||
| <v | '#+BEGIN_VERSE' … '#+END_VERSE' |
|
||||
| <H | '#+BEGIN_EXPORT HTML' … '#+END_EXPORT' |
|
||||
| <L | '#+BEGIN_EXPORT LATEX' … '#+END_EXPORT' |
|
||||
| <Q | '#+BEGIN_QUOTE' … '#+END_QUOTE' |
|
||||
| <S | '#+BEGIN_SRC' … '#+END_SRC' |
|
||||
| <V | '#+BEGIN_VERSE' … '#+END_VERSE' |
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(require 'org-tempo)
|
||||
#+end_src
|
||||
#+BEGIN_SRC EMACS-LISP
|
||||
(REQUIRE 'ORG-TEMPO)
|
||||
#+END_SRC
|
||||
|
||||
* WHICH-KEY
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(use-package which-key
|
||||
:init
|
||||
(which-key-mode 1)
|
||||
:diminish
|
||||
:config
|
||||
(setq which-key-side-window-location 'bottom
|
||||
which-key-sort-order #'which-key-key-order-alpha
|
||||
which-key-sort-uppercase-first nil
|
||||
which-key-add-column-padding 1
|
||||
which-key-max-display-columns nil
|
||||
which-key-min-display-lines 6
|
||||
which-key-side-window-slot -10
|
||||
which-key-side-window-max-height 0.25
|
||||
which-key-ide-delay 0.8
|
||||
which-key-max-description-length 25
|
||||
which-key-allow-imprecise-window-fit nil
|
||||
which-key-separator " -> " ))
|
||||
#+end_src
|
||||
#+BEGIN_SRC EMACS-LISP
|
||||
(USE-PACKAGE WHICH-KEY
|
||||
:INIT
|
||||
(WHICH-KEY-MODE 1)
|
||||
:DIMINISH
|
||||
:CONFIG
|
||||
(SETQ WHICH-KEY-SIDE-WINDOW-LOCATION 'BOTTOM
|
||||
WHICH-KEY-SORT-ORDER #'WHICH-KEY-KEY-ORDER-ALPHA
|
||||
WHICH-KEY-SORT-UPPERCASE-FIRST NIL
|
||||
WHICH-KEY-ADD-COLUMN-PADDING 1
|
||||
WHICH-KEY-MAX-DISPLAY-COLUMNS NIL
|
||||
WHICH-KEY-MIN-DISPLAY-LINES 6
|
||||
WHICH-KEY-SIDE-WINDOW-SLOT -10
|
||||
WHICH-KEY-SIDE-WINDOW-MAX-HEIGHT 0.25
|
||||
WHICH-KEY-IDE-DELAY 0.8
|
||||
WHICH-KEY-MAX-DESCRIPTION-LENGTH 25
|
||||
WHICH-KEY-ALLOW-IMPRECISE-WINDOW-FIT NIL
|
||||
WHICH-KEY-SEPARATOR " -> " ))
|
||||
#+END_SRC
|
||||
|
||||
Reference in New Issue
Block a user