init: A "minimal" config for Emacs
This commit is contained in:
commit
fca7618b90
27
.gitignore
vendored
Normal file
27
.gitignore
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
*
|
||||
# This one is new to allow directories by default
|
||||
!*/
|
||||
|
||||
# Straight specific
|
||||
/straight/repos
|
||||
/straight/build
|
||||
!/straight/versions/*
|
||||
|
||||
# Allow to WL subdirs
|
||||
!/.gitignore
|
||||
!cnf/
|
||||
!cnf/**
|
||||
!local-pkgs/
|
||||
!local-pkgs/**
|
||||
!snippets/
|
||||
!snippets/**
|
||||
!plugins
|
||||
!init.el
|
||||
!early-init.el
|
||||
!ec.sh
|
||||
!minimal.el
|
||||
!test/
|
||||
!test/**
|
||||
|
||||
# Ignore again
|
||||
# *~undo-tree~
|
136
cnf/additionals.el
Normal file
136
cnf/additionals.el
Normal file
@ -0,0 +1,136 @@
|
||||
(push (concat user-emacs-directory "cnf/app") load-path)
|
||||
;; DIRED: file browser
|
||||
(require 'a-dired)
|
||||
|
||||
;; ORD-MODE: Basically jupiter notebooks/markdown on steroids
|
||||
(with-eval-after-load 'org (require 'a-orgmode))
|
||||
|
||||
;; MAGIT: A nice git frontend
|
||||
(straight-use-package 'magit)
|
||||
(setq magit-bury-buffer-function #'quit-window
|
||||
magit-display-buffer-function #'display-buffer)
|
||||
|
||||
(with-eval-after-load 'magit
|
||||
(transient-append-suffix 'magit-push "-u"
|
||||
'(1 "=s" "Skip gitlab pipeline" "--push-option=ci.skip"))
|
||||
(transient-append-suffix 'magit-push "=s"
|
||||
'(1 "=D" "DEBUG" "--push-option=ci.variable=DEBUG=1")) ;; no special meaning for gitlab
|
||||
(transient-append-suffix 'magit-push "=D"
|
||||
'(1 "=V" "Set CI variable" "--push-option=ci.variable=")) ;; Will prompt, can only set one extra variable
|
||||
(transient-append-suffix 'magit-push "=V"
|
||||
'(1 "=O" "Set push option" "--push-option="))
|
||||
)
|
||||
|
||||
;; DICTCC: query dict.cc without leaving emacs
|
||||
(straight-use-package 'dictcc)
|
||||
|
||||
;; GIT-GUTTER: Indicators for git status inside the fringe
|
||||
(straight-use-package 'git-gutter)
|
||||
(straight-use-package 'git-gutter-fringe)
|
||||
(require 'git-gutter-fringe)
|
||||
;; 0 means only update on save, otherwise set to 0.02
|
||||
;; otherwise cursor stutters (e.g. at 2 or 8)
|
||||
(setq git-gutter:update-interval 0
|
||||
git-gutter:handled-backends '(git hg))
|
||||
|
||||
;; Indicator style (It's ASCII art - yaayyy)
|
||||
(fringe-helper-define 'git-gutter-fr:added 'center
|
||||
"..XXX.."
|
||||
"..XXX.."
|
||||
"..XXX.."
|
||||
"..XXX.."
|
||||
"..XXX.."
|
||||
"..XXX.."
|
||||
"..XXX.."
|
||||
"..XXX.."
|
||||
"..XXX..")
|
||||
|
||||
(fringe-helper-define 'git-gutter-fr:modified 'center
|
||||
"..XXX.."
|
||||
"..XXX.."
|
||||
"..XXX.."
|
||||
"..XXX.."
|
||||
"..XXX.."
|
||||
"..XXX.."
|
||||
"..XXX.."
|
||||
"..XXX.."
|
||||
"..XXX..")
|
||||
|
||||
(fringe-helper-define 'git-gutter-fr:deleted 'center
|
||||
"..XXX.."
|
||||
"..XXX.."
|
||||
"..XXX.."
|
||||
"..XXX.."
|
||||
"..XXX.."
|
||||
"..XXX.."
|
||||
"..XXX.."
|
||||
"..XXX.."
|
||||
"..XXX..")
|
||||
|
||||
(add-hook 'prog-mode-hook #'git-gutter-mode)
|
||||
|
||||
;; More sane defaults
|
||||
(defvar emacs-autosave-directory
|
||||
(concat user-emacs-directory "autosaves/"))
|
||||
(unless (file-exists-p emacs-autosave-directory)
|
||||
(mkdir emacs-autosave-directory t))
|
||||
|
||||
(setq backup-directory-alist
|
||||
`((".*" . ,emacs-autosave-directory))
|
||||
auto-save-file-name-transforms
|
||||
`((".*" ,emacs-autosave-directory t)))
|
||||
|
||||
(setq make-backup-files nil
|
||||
create-lockfiles nil)
|
||||
|
||||
;; There is also require-final-newline which is a per mode setting
|
||||
;; This seems to override this global value -> See mode specific configs (e.g. yaml)
|
||||
(setq-default require-final-newline t)
|
||||
(setq mode-require-final-newline t)
|
||||
|
||||
(setq warning-minimum-level :emergency)
|
||||
|
||||
(defalias 'yes-or-no-p 'y-or-n-p)
|
||||
(setq read-answer-short t)
|
||||
;; Advice around the new kill-buffer--possibly-save function
|
||||
;; This never calls the original function which basically replaces it
|
||||
;; defalias is not possible here since this takes different arguments
|
||||
(defun phga/kill-buffer-y-or-n--advice (orig-fun buffer &rest args)
|
||||
"Replace the default behavior of the new `kill-buffer--possibly-save' function.
|
||||
`ORIG-FUN' is the original function that was called and
|
||||
`BUFFER'is the buffer that should be killed whilst beeing
|
||||
modified and not saved. `ARGS' is the rest of the arguments."
|
||||
(y-or-n-p (concat "Kill buffer " (buffer-name buffer) " without saving?")))
|
||||
|
||||
(advice-add 'kill-buffer--possibly-save :around #'phga/kill-buffer-y-or-n--advice)
|
||||
|
||||
(setq auto-revert-interval 1 ; Refresh buffers fast
|
||||
echo-keystrokes 0.1 ; Show keystrokes asap
|
||||
inhibit-startup-message t ; No splash screen please
|
||||
initial-scratch-message nil ; Clean scratch buffer
|
||||
initial-major-mode 'org-mode
|
||||
recentf-max-saved-items 100 ; Show more recent files
|
||||
ring-bell-function 'ignore) ; Quiet
|
||||
|
||||
(setq mouse-yank-at-point t)
|
||||
|
||||
;; Should help with reeeeally long lines e.g. json
|
||||
;; there is also (setq-default bidi-display-reordering nil)
|
||||
;; which is apparently not recommended by dev Eli because
|
||||
;; it was never intended to be nil (could still improve things tho)
|
||||
(setq-default bidi-paragraph-direction 'left-to-right)
|
||||
;; gnupg
|
||||
(require 'epa-file)
|
||||
(setq epg-pinentry-mode 'ask)
|
||||
(push '("\\.gpg\\'" . epa-file-enable) auto-mode-alist)
|
||||
;; only use the encrypted version of .authinfo
|
||||
(setq auth-sources '("~/.authinfo.gpg"))
|
||||
|
||||
;; save unsaved buffers before killing frame
|
||||
(add-hook 'delete-frame-functions 'save-some-buffers)
|
||||
(add-hook 'kill-emacs-hook 'save-some-buffers)
|
||||
|
||||
;; Width used to draw the column indicator + used in fill-paragraph
|
||||
(setq-default fill-column 90)
|
||||
|
||||
(provide 'additionals)
|
83
cnf/app/a-dired.el
Normal file
83
cnf/app/a-dired.el
Normal file
@ -0,0 +1,83 @@
|
||||
;; DIRED: Filebrowser
|
||||
(straight-use-package 'dired-narrow)
|
||||
;; (require 'dired-async)
|
||||
;; (dired-async-mode 0)
|
||||
(setq dired-listing-switches "-lFahv --group-directories-first"
|
||||
dired-dwim-target t
|
||||
delete-by-moving-to-trash t
|
||||
dired-ls-F-marks-symlinks t
|
||||
dired-compress-files-alist '(("\\.tar\\.gz\\'" . "tar -cf - %i | gzip -c9 > %o")
|
||||
("\\.tar\\.bz2\\'" . "tar -cf - %i | bzip2 -c9 > %o")
|
||||
("\\.tar\\.xz\\'" . "tar -cf - %i | xz -c9 > %o")
|
||||
("\\.tar\\.zst\\'" . "tar -cf - %i | zstd -19 -o %o")
|
||||
("\\.tar\\.lz\\'" . "tar -cf - %i | lzip -c9 > %o")
|
||||
("\\.tar\\.lzo\\'" . "tar -cf - %i | lzop -c9 > %o")
|
||||
("\\.zip\\'" . "zip %o -r --filesync %i")
|
||||
("\\.pax\\'" . "pax -wf %o %i"))
|
||||
dired-compress-file-suffixes '(("\\.tar\\.gz\\'" #1="" "gzip -dc %i | tar -xf -")
|
||||
("\\.tar\\.xz\\'" #1# "xz -dc %i | tar -xf -")
|
||||
("\\.tgz\\'" #1# "gzip -dc %i | tar -xf -")
|
||||
("\\.gz\\'" #1# "gzip -d")
|
||||
("\\.lz\\'" #1# "lzip -d")
|
||||
("\\.Z\\'" #1# "uncompress")
|
||||
("\\.z\\'" #1# "gzip -d")
|
||||
("\\.dz\\'" #1# "dictunzip")
|
||||
("\\.tbz\\'" ".tar" "bunzip2")
|
||||
("\\.bz2\\'" #1# "bunzip2")
|
||||
("\\.xz\\'" #1# "unxz")
|
||||
("\\.zip\\'" #1# "7z x -aoa -o%o %i")
|
||||
("\\.tar\\.zst\\'" #1# "unzstd -c %i | tar -xf -")
|
||||
("\\.tzst\\'" #1# "unzstd -c %i | tar -xf -")
|
||||
("\\.zst\\'" #1# "unzstd --rm")
|
||||
("\\.7z\\'" #1# "7z x -aoa -o%o %i")
|
||||
("\\.tar\\'" ".tgz" nil)))
|
||||
|
||||
(add-hook 'dired-mode-hook
|
||||
(lambda ()
|
||||
(dired-hide-details-mode)
|
||||
(when (file-remote-p dired-directory)
|
||||
(setq-local dired-actual-switches "-lFah"))))
|
||||
|
||||
(put 'dired-find-alternate-file 'disabled nil)
|
||||
|
||||
;; ;; PEEP-DIRED: preview files in dired
|
||||
;; (straight-use-package 'peep-dired)
|
||||
;; ;; variables
|
||||
;; (setq peep-dired-cleanup-on-disable t
|
||||
;; peep-dired-cleanup-eagerly nil
|
||||
;; peep-dired-enable-on-directories t)
|
||||
;; ;; hooks
|
||||
;; (add-hook 'peep-dired-hook 'evil-normalize-keymaps)
|
||||
(straight-use-package 'dired-preview)
|
||||
(setq dired-preview-delay 0.2
|
||||
dired-preview-ignored-extensions-regexp (concat "\\."
|
||||
"\\(mkv\\|webm\\|mp4\\|mp3\\|ogg\\|m4a"
|
||||
"\\|gz\\|zst\\|tar\\|xz\\|rar\\|zip"
|
||||
"\\|iso\\|epub\\)"))
|
||||
|
||||
;; Keybindings
|
||||
(general-def
|
||||
:states 'normal
|
||||
:keymaps 'dired-mode-map
|
||||
"f" 'dired-narrow
|
||||
"p" 'dired-preview-mode
|
||||
"h" (lambda() (interactive) (find-alternate-file ".."))
|
||||
"l" (lambda() (interactive) (dired-find-alternate-file)))
|
||||
|
||||
;; DIRED-LAUNCH: Launch apps depending on file extension
|
||||
(straight-use-package 'dired-launch)
|
||||
(setq dired-launch-command '("xdg-open"))
|
||||
(setf dired-launch-extensions-map
|
||||
'(;; xml files with bpmn in it
|
||||
("xopp" ("xournalpp"))
|
||||
("drawio.html" ("drawio"))
|
||||
("drawio" ("drawio"))))
|
||||
|
||||
(add-hook 'dired-mode-hook
|
||||
(lambda ()
|
||||
(general-def
|
||||
:states 'normal
|
||||
:keymaps 'dired-mode-map
|
||||
"W" 'dired-launch-command)))
|
||||
|
||||
(provide 'a-dired)
|
274
cnf/app/a-orgmode.el
Normal file
274
cnf/app/a-orgmode.el
Normal file
@ -0,0 +1,274 @@
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; NOTE: org-mode is required in essentials.el so we use the git instead of the shipped version ;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;; HTMLIZE: html export for orgmode
|
||||
(straight-use-package 'htmlize)
|
||||
|
||||
;; There was a long discussion on reddit that this package slows
|
||||
;; down the redisplay optimizations of emacs
|
||||
;; https://old.reddit.com/r/emacs/comments/p9yjgq/turn_off_fontlock_under_cursor/ha6zor6/
|
||||
;; ORG-APPEAR: shows emphasis symbols when required
|
||||
(straight-use-package 'org-appear)
|
||||
(setq org-appear-autolinks nil ;;'just-brackets
|
||||
org-appear-autosubmarkers t
|
||||
org-appear-autoentities t
|
||||
org-appear-autokeywords t
|
||||
org-appear-inside-latex t)
|
||||
(add-hook 'org-mode-hook 'org-appear-mode)
|
||||
|
||||
;; ORG-DOWNLOAD: insert screenshots on the fly
|
||||
(straight-use-package 'org-download)
|
||||
(require 'org-download)
|
||||
|
||||
;; OB-GO: Org babel support for go
|
||||
(straight-use-package 'ob-go)
|
||||
;; (with-eval-after-load 'ob-go (require 'l-go)) ;; enable highlighting, etc
|
||||
|
||||
;; EVIL-ORG: more org bindings
|
||||
(straight-use-package 'evil-org)
|
||||
(add-hook 'org-mode-hook 'evil-org-mode)
|
||||
(with-eval-after-load 'org-mode
|
||||
(evil-org-set-key-theme '(navigation insert textobjects additional calendar)))
|
||||
|
||||
;; ORG-SRC: Load language specific configs when fontifying src blocks for languages which
|
||||
;; configs are dynamically loaded and not present at the time of the fontification process
|
||||
;; (defun phga/advice-load-config-for-org-src-block-language (lang start end)
|
||||
;; "Look in `load-path' for a file that provides the feature l-LANG.
|
||||
;; LANG is the language used by `org-src-font-lock-fontify-block'.
|
||||
;; START and END are not used by this advice"
|
||||
;; (ignore-errors (require (intern (concat "l-" lang)))))
|
||||
|
||||
;; (advice-add 'org-src-font-lock-fontify-block
|
||||
;; :before #'phga/advice-load-config-for-org-src-block-language)
|
||||
|
||||
(defvar phga/org-export-directory)
|
||||
(defun phga/advice-create-and-set-org-export-directory (f extension
|
||||
&optional subtreep pub-dir)
|
||||
"Create and set `phga/org-export-directory' which is used as PUB-DIR in F.
|
||||
F is `org-export-output-file-name' SUBTREEP and EXTENSION are not
|
||||
modified here."
|
||||
(let ((pub-dir (or pub-dir (and (boundp 'phga/org-export-directory)
|
||||
phga/org-export-directory))))
|
||||
(unless (file-directory-p pub-dir)
|
||||
(make-directory phga/org-export-directory))
|
||||
(apply f extension subtreep pub-dir '()))) ;; '() is required by apply
|
||||
|
||||
(advice-add 'org-export-output-file-name :around #'phga/advice-create-and-set-org-export-directory)
|
||||
|
||||
(setq phga/org-export-directory "./auto")
|
||||
|
||||
(evil-set-initial-state 'org-agenda-mode 'normal)
|
||||
(add-to-list 'org-export-backends 'md)
|
||||
(setq org-agenda-tags-column org-tags-column
|
||||
org-babel-min-lines-for-block-output 50
|
||||
org-confirm-babel-evaluate nil
|
||||
;; Since ORG-Mode 9.1.9 functions inside of (file "FILENAME") are no longer
|
||||
;; evaluated if the template list is prefixed with '
|
||||
;; Solution: use ` to prefix list and ,(concat) to indicate req. evaluation
|
||||
org-duration-format 'h:mm
|
||||
|
||||
;; TODO: If you want latex support
|
||||
;; Latex
|
||||
;; org-latex-listings 'minted
|
||||
;; org-latex-listings nil
|
||||
;; org-latex-packages-alist '(("outputdir=auto" "minted"))
|
||||
;; org-latex-inputenc-alist '(("utf8" . "utf8x"))
|
||||
;; org-latex-prefer-user-labels t
|
||||
;; org-latex-pdf-process
|
||||
;; '("pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f"
|
||||
;; "pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f"
|
||||
;; "pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f")
|
||||
|
||||
;; Export Config
|
||||
org-export-preserve-breaks nil
|
||||
org-export-with-email t
|
||||
org-export-with-sub-superscripts t
|
||||
org-export-in-background nil
|
||||
org-html-htmlize-output-type 'inline-css
|
||||
|
||||
;; REQUIRES: y -S plantuml graphviz
|
||||
;; org-plantuml-jar-path (expand-file-name "/usr/share/java/plantuml/plantuml.jar")
|
||||
|
||||
;; Visuals like nice looking headings, fontification (bold, italic, etc.)
|
||||
org-pretty-entities t
|
||||
org-pretty-entities-include-sub-superscripts t
|
||||
org-edit-src-content-indentation 0
|
||||
org-src-fontify-natively t
|
||||
org-src-tab-acts-natively t
|
||||
org-src-preserve-indentation t
|
||||
org-src-window-setup 'current-window
|
||||
org-use-sub-superscripts '{}
|
||||
org-ellipsis " ↷"
|
||||
org-cycle-separator-lines 0
|
||||
org-hide-emphasis-markers t
|
||||
|
||||
;; Sane defaults when opening new files
|
||||
org-startup-folded nil
|
||||
org-startup-with-inline-images t
|
||||
org-startup-with-latex-preview t
|
||||
org-image-actual-width nil
|
||||
|
||||
org-blank-before-new-entry '((heading . t)
|
||||
(plain-list-item . nil))
|
||||
|
||||
;; Tags
|
||||
org-tags-column 60
|
||||
org-fast-tag-selection-include-todo t
|
||||
org-fast-tag-selection-single-key 'expert
|
||||
|
||||
;; Todos
|
||||
org-todo-keywords
|
||||
'((sequence "TODO(t)" "|" "DONE(d)")
|
||||
(type "NEXT(n)")
|
||||
(type "MEET(m)")
|
||||
(type "IDEA(i)"))
|
||||
;; '((type "TODO")
|
||||
;; ;; (type "DONE")
|
||||
;; (type "NEXT")
|
||||
;; (type "IDEA")
|
||||
;; (type "MEET")
|
||||
;; (sequence "TODO(t)" "NEXT(n)" "|" "DONE(d)")
|
||||
;; (sequence "IDEA(i)" "|" "TODO(t)")
|
||||
;; )
|
||||
org-todo-keyword-faces
|
||||
'(("TODO" :inherit org-todo :weight bold)
|
||||
("DONE" :inherit org-done :weight bold)
|
||||
("NEXT" :weight bold)
|
||||
("MEET" :weight bold)
|
||||
("IDEA" :foreground "#cea7f0" :weight bold))
|
||||
org-use-fast-todo-selection t
|
||||
org-fontify-todo-headline nil
|
||||
org-fontify-done-headline nil)
|
||||
|
||||
;; leads to unwanted buffer visits on first clock-in
|
||||
;; Probably because it tries to scan for clocks in all agenda files
|
||||
;; org-agenda-files (list org-directory)
|
||||
|
||||
;; org-latex-listings 'listings
|
||||
|
||||
;; Pretty bullet points
|
||||
(font-lock-add-keywords
|
||||
'org-mode
|
||||
'(("^ *\\(-\\) " ; change '-' into a unicode bullet
|
||||
(0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "•"))))))
|
||||
|
||||
(font-lock-add-keywords
|
||||
'org-mode
|
||||
'(("^ *\\(\\+\\) " ; change '+' into a unicode bullet
|
||||
(0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "◦"))))))
|
||||
|
||||
;; Get rid of the ,* in code blocks (visually)
|
||||
(font-lock-add-keywords
|
||||
'org-mode
|
||||
'(("^ *\\(,\\*\\).*" ; change ',*' into *
|
||||
(0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "*"))))))
|
||||
|
||||
(add-hook 'org-babel-after-execute-hook 'org-redisplay-inline-images)
|
||||
;; Scale of the latex fragments
|
||||
;; (plist-put org-format-latex-options :scale 1.3) ;; b4 presentation
|
||||
(plist-put org-format-latex-options :scale 2.5)
|
||||
|
||||
;; Run/highlight code using babel in org-mode
|
||||
;; Languages: https://orgmode.org/worg/org-contrib/babel/languages/index.html
|
||||
(setq org-babel-load-languages
|
||||
'((emacs-lisp . t)
|
||||
(lisp . t)
|
||||
(python . t)
|
||||
(js . t)
|
||||
(java . t)
|
||||
(C . t)
|
||||
(sql . t)
|
||||
(calc . t)
|
||||
(perl . t)
|
||||
(shell . t)
|
||||
(plantuml . t)
|
||||
(haskell . t)
|
||||
(go . t)))
|
||||
|
||||
(org-babel-do-load-languages 'org-babel-load-languages org-babel-load-languages)
|
||||
|
||||
;; TODO: If you want custom css in your html exports
|
||||
;; export html with styles
|
||||
;; (defvar org-style-css "~/sync/mvtn/setup/org.css")
|
||||
|
||||
;; (defun my-org-inline-css-hook (exporter)
|
||||
;; "Insert custom inline css"
|
||||
;; (when (eq exporter 'html)
|
||||
;; (let* ((dir (ignore-errors (file-name-directory (buffer-file-name))))
|
||||
;; (path (concat dir "style.css"))
|
||||
;; (homestyle (or (null dir) (null (file-exists-p path))))
|
||||
;; (final (if homestyle org-style-css path))) ;; <- set your own style file path
|
||||
;; (setq org-html-head-include-default-style nil)
|
||||
;; (setq org-html-head (concat
|
||||
;; "<style type=\"text/css\">\n"
|
||||
;; "<!--/*--><![CDATA[/*><!--*/\n"
|
||||
;; (with-temp-buffer
|
||||
;; (insert-file-contents final)
|
||||
;; (buffer-string))
|
||||
;; "/*]]>*/-->\n"
|
||||
;; "</style>\n")))))
|
||||
|
||||
;; (add-hook 'org-export-before-processing-hook 'my-org-inline-css-hook)
|
||||
|
||||
;; (setq org-html-htmlize-font-prefix "org-") ; default: "org-"
|
||||
|
||||
;; TODO: If you want to manage your time with org-mode
|
||||
;; ORG-CLOCK
|
||||
;; (setq org-clock-history-length 23
|
||||
;; org-clock-in-resume t
|
||||
;; org-drawers '("PROPERTIES" "LOGBOOK")
|
||||
;; org-clock-into-drawer t
|
||||
;; org-clock-out-remove-zero-time-clocks t
|
||||
;; org-clock-out-when-done t
|
||||
;; org-clock-persist 'history
|
||||
;; org-clock-persist-query-resume nil
|
||||
;; org-clock-auto-clock-resolution 'when-no-clock-is-running
|
||||
;; org-clock-report-include-clocking-task t)
|
||||
|
||||
;; (org-clock-persistence-insinuate)
|
||||
|
||||
;; ORG-AGENDA
|
||||
;; (defvar org-agenda-window-setup)
|
||||
;; (setq org-agenda-window-setup 'current-window)
|
||||
|
||||
;; ORG-DOWNLOAD
|
||||
;; TODO: Setup for seemless insertion of screenshots
|
||||
(setq org-download-screenshot-file "~/sync/screenshots/tmp/orgcapture.png"
|
||||
org-download-screenshot-method "grim -g $(slurp -b '#000000a0' -c '#00000000') -o %s"
|
||||
org-download-image-attr-list '("#+ATTR_ORG: :width 600")
|
||||
org-download-annotate-function (lambda(link) ""))
|
||||
(setq-default org-download-image-dir "./ORGPICS"
|
||||
|
||||
;; KEYBINDINGS
|
||||
(my-leader
|
||||
:states 'normal
|
||||
:definer 'minor-mode
|
||||
:keymaps 'org-src-mode
|
||||
"'" 'org-edit-src-exit)
|
||||
|
||||
(my-leader
|
||||
:states '(normal visual)
|
||||
:keymaps 'org-mode-map
|
||||
"'" 'org-edit-src-code
|
||||
"SPC p" 'fill-paragraph
|
||||
"SPC i" '(:ignore t :which-key "Insert")
|
||||
"SPC i s" 'org-download-screenshot
|
||||
"SPC i t" 'org-todo
|
||||
"SPC i l" 'org-insert-link
|
||||
"SPC s l" 'org-store-link
|
||||
"SPC t" '(:ignore t :which-key "Toggle")
|
||||
"SPC t i" 'org-toggle-inline-images
|
||||
"SPC t l" 'org-latex-preview
|
||||
;; "SPC c" '(:ignore t :which-key "C Funktions (clock, execute)")
|
||||
;; "SPC c i" 'org-clock-in
|
||||
;; "SPC c o" 'org-clock-out
|
||||
;; "SPC c l" 'org-clock-in-last
|
||||
"SPC c c" 'org-babel-execute-src-block
|
||||
"SPC r" '(:ignore t :which-key "Remove")
|
||||
"SPC r r" 'org-babel-remove-result
|
||||
"SPC r a" (lambda () (interactive) (org-babel-remove-result-one-or-many t))
|
||||
"SPC o" 'org-open-at-point
|
||||
"SPC e" 'org-export-dispatch)
|
||||
|
||||
(provide 'a-orgmode)
|
151
cnf/essentials.el
Normal file
151
cnf/essentials.el
Normal file
@ -0,0 +1,151 @@
|
||||
;; ENVIRONMENT
|
||||
;; COMPAT
|
||||
(straight-use-package 'compat)
|
||||
|
||||
;; ORG-MODE: FIX so the correct org package is loaded (not the one shipped with emacs)
|
||||
;; Has to be as early in the config as possible, so no other package can load the
|
||||
;; incorrect org version beforehand
|
||||
;; (straight-use-package 'org)
|
||||
|
||||
;; ASYNC: Asynchronous functionality
|
||||
(straight-use-package 'async)
|
||||
(require 'async)
|
||||
|
||||
;; GENERAL: Keybindings
|
||||
(straight-use-package 'general)
|
||||
(require 'general)
|
||||
|
||||
;; TODO: Rename the leader key (if you want)
|
||||
(general-create-definer my-leader
|
||||
:prefix "<SPC>"
|
||||
:non-normal-prefix "C-SPC")
|
||||
|
||||
;; EVIL:
|
||||
;; depends on: goto-chg, undo-tree
|
||||
(straight-use-package 'evil)
|
||||
(straight-use-package 'undo-fu)
|
||||
(straight-use-package 'undo-fu-session)
|
||||
(undo-fu-session-global-mode)
|
||||
(straight-use-package 'vundo)
|
||||
|
||||
;; variables
|
||||
(setq evil-want-C-u-scroll t
|
||||
evil-want-integration t
|
||||
evil-want-keybinding nil
|
||||
evil-undo-system 'undo-fu)
|
||||
(require 'evil)
|
||||
;; start mode
|
||||
(evil-mode t)
|
||||
|
||||
;; https://github.com/emacs-evil/evil/issues/1288
|
||||
;; Credit goes to: https://github.com/nnicandro
|
||||
;; Fix for the broken org-src-tab-acts-natively functionality
|
||||
;; Tab in fact does nothing in src blocks if evil is enabled
|
||||
(defun evil-org-insert-state-in-edit-buffer (fun &rest args)
|
||||
"Bind `evil-default-state' to `insert' before calling FUN with ARGS."
|
||||
(let ((evil-default-state 'insert)
|
||||
;; Force insert state
|
||||
evil-emacs-state-modes
|
||||
evil-normal-state-modes
|
||||
evil-motion-state-modes
|
||||
evil-visual-state-modes
|
||||
evil-operator-state-modes
|
||||
evil-replace-state-modes)
|
||||
(apply fun args)
|
||||
(evil-refresh-cursor)))
|
||||
|
||||
;; MESSAGE BUFFER:
|
||||
(evil-set-initial-state 'message-mode 'normal)
|
||||
|
||||
(advice-add 'org-babel-do-key-sequence-in-edit-buffer
|
||||
:around #'evil-org-insert-state-in-edit-buffer)
|
||||
|
||||
;; EVIL-NERD-COMMENTER: Easy un/comment
|
||||
(straight-use-package 'evil-nerd-commenter)
|
||||
|
||||
;; EVIL-VILUALSTAR: Search selected thing with *
|
||||
(straight-use-package 'evil-visualstar)
|
||||
(global-evil-visualstar-mode)
|
||||
|
||||
;; EVIL-SURROUND:
|
||||
(straight-use-package 'evil-surround)
|
||||
;; start mode
|
||||
(global-evil-surround-mode t)
|
||||
|
||||
;; EVIL-COLLECTION: improved evil support for multiple packages
|
||||
(straight-use-package 'evil-collection)
|
||||
;; variables
|
||||
(setq evil-collection-setup-minibuffer t
|
||||
evil-collection-mode-list
|
||||
'(ibuffer help calc nov man calendar ivy minibuffer dired debug
|
||||
doc-view arc-mode magit vterm))
|
||||
;; start mode
|
||||
(evil-collection-init)
|
||||
|
||||
;; IVY: better popup menu (Alternative: Helm)
|
||||
(straight-use-package 'ivy)
|
||||
;; variables
|
||||
(setq ivy-use-virtual-buffers t
|
||||
ivy-re-builders-alist '((t . ivy--regex-ignore-order))
|
||||
enable-recursive-minibuffers t
|
||||
ivy-wrap t
|
||||
ivy-magic-slash-non-match-action 'ivy-magic-slash-non-match-create
|
||||
ivy-count-format "%d/%d ")
|
||||
;; remove caret (has to be counsel not ivy #thanksfornothinginternet)
|
||||
(with-eval-after-load 'counsel (setq ivy-initial-inputs-alist nil))
|
||||
;; start mode
|
||||
(ivy-mode t)
|
||||
|
||||
;; Keybindings
|
||||
;; Allow the creation of files/folders even if a file/folder with a similar name
|
||||
;; is matched in the ivy buffer.
|
||||
(my-leader
|
||||
:states 'normal
|
||||
:keymaps 'ivy-minibuffer-map
|
||||
"SPC f" 'ivy-immediate-done)
|
||||
|
||||
;; IVY-PRESCIENT: better suggestions for ivy
|
||||
(straight-use-package 'ivy-prescient)
|
||||
;; start mode
|
||||
(ivy-prescient-mode)
|
||||
|
||||
;; COUNSEL: several improved functions like find-file, etc.
|
||||
(straight-use-package 'counsel)
|
||||
(setq counsel-grep-base-command "grep -R -i -n -H --color=never %s ."
|
||||
counsel-rg-base-command "rg -i -M 250 --hidden --no-heading --line-number --color never %s")
|
||||
|
||||
;; WHICH-KEY: hints in the mini bar
|
||||
(straight-use-package 'which-key)
|
||||
(which-key-setup-minibuffer)
|
||||
;; start mode
|
||||
(which-key-mode)
|
||||
|
||||
;; ACE-WINDOW: jump between windows faster
|
||||
;; TODO: Set your own keys (;
|
||||
(straight-use-package 'ace-window)
|
||||
(setq aw-scope 'frame
|
||||
aw-keys '(?j ?k ?l ?f ?d ?s))
|
||||
|
||||
;; ELECTRIC-PAIR: auto-balance brackets
|
||||
(electric-pair-mode t)
|
||||
;; electric-indent-mode is a bit buggy in src blocks...
|
||||
;; Unfortunately it adds a bug, where the cursor jumps to the start of the src
|
||||
;; block after inserting a nested block of any sort {}, [], () and pressing RET
|
||||
;; This is triggered by: org-return -> newline-and-indent
|
||||
;; Adding an advice did not work, since the point must not only be recovered
|
||||
;; but also increased by the level of indention... Also, it seemed like another
|
||||
;; function is responsible for the reset since I added the advice to
|
||||
;; org-babel-do-key-sequence-in-edit-buffer (Probably newline-and-indent)
|
||||
;; TODO: Check if this bug is still present in newer versions
|
||||
|
||||
;; hooks
|
||||
(add-hook 'org-mode-hook
|
||||
(lambda ()
|
||||
(setq-local electric-pair-inhibit-predicate
|
||||
`(lambda (c)
|
||||
(if (char-equal c ?<) t (,electric-pair-inhibit-predicate c))))))
|
||||
;; SAVE PLACE MODE
|
||||
;; Return to the point in a buffer when reopening it after some time
|
||||
(save-place-mode 1)
|
||||
|
||||
(provide 'essentials)
|
20
cnf/functions.el
Normal file
20
cnf/functions.el
Normal file
@ -0,0 +1,20 @@
|
||||
;; Run a terminal in the current folder
|
||||
;; TODO: Check the command for your terminal emulator for this to work properly
|
||||
(defun phga/run-terminal-here ()
|
||||
(interactive "@")
|
||||
(shell-command (concat "TERM_FROM_EMACS=true alacritty -e sh -c 'cd " default-directory
|
||||
"; /run/current-system/sw/bin/bash' > /dev/null 2>&1 & disown ")
|
||||
nil nil))
|
||||
|
||||
;; https://gist.github.com/mads-hartmann/3402786
|
||||
;; Allows for emacs to toggle window "maximization"
|
||||
(defun toggle-maximize-buffer ()
|
||||
"Maxmize current buffer, when called again, restore previous buffer setup"
|
||||
(interactive)
|
||||
(if (= 1 (length (window-list)))
|
||||
(jump-to-register '_)
|
||||
(progn
|
||||
(window-configuration-to-register '_)
|
||||
(delete-other-windows))))
|
||||
|
||||
(provide 'functions)
|
96
cnf/global-keybindings.el
Normal file
96
cnf/global-keybindings.el
Normal file
@ -0,0 +1,96 @@
|
||||
;; EXAMPLE: Global override of keybinding
|
||||
;; Ged rid of default bindings I don't enjoy :<
|
||||
(general-def :states '(normal insert emacs visual) :keymaps 'override
|
||||
;; This motherf***** + another ESC used to close my windows. NOO MOOORE!
|
||||
"M-ESC" (lambda () (interactive) (message "You pressed it again Mr. Fatfinger...")))
|
||||
|
||||
;; GLOBAL BINDINGS
|
||||
(general-def
|
||||
:states '(normal insert visual)
|
||||
:keymaps 'override
|
||||
|
||||
"C-j" 'evil-scroll-down
|
||||
"C-k" 'evil-scroll-up
|
||||
;; "<XF86AudioLowerVolume>" 'evil-scroll-down
|
||||
;; "<XF86AudioRaiseVolume>" 'evil-scroll-up
|
||||
)
|
||||
|
||||
;; This is a reference to the leader key defined in essentials.el
|
||||
;; It basically means: <YOUR-LEADER> + whatever is configured below
|
||||
;; E.g. "SPC SPC" actually means "SPC SPC SPC" because it is prefix with `my-leader'
|
||||
(my-leader
|
||||
;; These are the states for which the keybinding should work
|
||||
:states '(normal visual emacs)
|
||||
;; This is the keymap for which the keybinding should work.
|
||||
;; Override is the GLOBAL keymap but there are specific ones for each mode
|
||||
:keymaps 'override
|
||||
|
||||
;; This ignores the sole keybinding of "SPC SPC" to use this "namespace" for mode specific bindings
|
||||
"SPC" '(:ignore t :which-key "Mode Specific Binds")
|
||||
"SPC SPC" 'counsel-M-x
|
||||
|
||||
"f" 'counsel-find-file
|
||||
"g" 'magit-status
|
||||
"h" 'evil-avy-goto-line
|
||||
"i" 'counsel-imenu
|
||||
"y" 'counsel-yank-pop
|
||||
";" 'evilnc-comment-or-uncomment-lines
|
||||
"." 'save-buffer
|
||||
|
||||
;; window stuff
|
||||
"w" '(:ignore t :which-key "Window")
|
||||
;; quick switch to other window
|
||||
"a" 'ace-window
|
||||
"w v" 'split-window-right
|
||||
"w h" 'split-window-below
|
||||
"w f" 'toggle-maximize-buffer
|
||||
"w L" 'windsize-right
|
||||
"w H" 'windsize-left
|
||||
"w J" 'windsize-down
|
||||
"w K" 'windsize-up
|
||||
|
||||
;; switch stuff
|
||||
"s" '(:ignore t :which-key "Switch")
|
||||
"s b" 'switch-to-buffer
|
||||
"s n" 'switch-to-next-buffer
|
||||
"s p" 'switch-to-prev-buffer
|
||||
"s s" 'counsel-switch-buffer
|
||||
"s a" 'ace-swap-window
|
||||
;; kill stuff
|
||||
"k" '(:ignore t :which-key "Kill")
|
||||
"k b" 'kill-buffer
|
||||
"k w" 'delete-window
|
||||
"k W" 'kill-buffer-and-window
|
||||
"k o b" 'kill-some-buffers
|
||||
"k o w" 'delete-other-windows
|
||||
"k q q" 'kill-emacs
|
||||
"k k" 'kill-current-buffer
|
||||
|
||||
;; buffer stuff
|
||||
"b" '(:ignore t :which-key "Buffer (revert)")
|
||||
"b r" 'revert-buffer
|
||||
"b a r" 'auto-revert-mode
|
||||
|
||||
;; edit stuff
|
||||
"e" '(:ignore t :which-key "Edit")
|
||||
"e c" '((lambda() (interactive) (dired my/emacsconf)) :which-key "edit emacs config")
|
||||
|
||||
;; ui stuff
|
||||
"q" '(:ignore t :which-key "Quality :)")
|
||||
"q t" 'phga/cycle-themes
|
||||
"q =" 'phga/text-scale-adjust
|
||||
|
||||
;; tools
|
||||
"t u" 'vundo
|
||||
|
||||
;; describe stuff
|
||||
"?" '(:ignore t :which-key "Describe")
|
||||
"? v" 'describe-variable
|
||||
"? f" 'describe-function
|
||||
"? c" 'describe-char
|
||||
"? m" 'describe-mode
|
||||
"? k" 'describe-key
|
||||
"? F" 'describe-face
|
||||
)
|
||||
|
||||
(provide 'global-keybindings)
|
146
cnf/ui.el
Normal file
146
cnf/ui.el
Normal file
@ -0,0 +1,146 @@
|
||||
;; GENERAL UI
|
||||
(setq x-stretch-cursor t
|
||||
blink-cursor-mode nil
|
||||
show-paren-delay 0
|
||||
scroll-conservatively 5
|
||||
scroll-margin 0
|
||||
mouse-wheel-scroll-amount '(2 ((shift) . 2)) ;; one line at a time
|
||||
mouse-wheel-progressive-speed nil ;; don't accelerate scrolling
|
||||
mouse-wheel-follow-mouse 't ;; scroll window under mouse
|
||||
scroll-step 2 ;; keyboard scroll two lines at a time
|
||||
frame-resize-pixelwise t
|
||||
frame-title-format "Allmighty Editor w/o Kitchen Sink")
|
||||
|
||||
;; Highlight matching parens
|
||||
(show-paren-mode t)
|
||||
;; Show line numbers on the left side of the buffer
|
||||
(global-display-line-numbers-mode 0)
|
||||
;; Highlight current horizontal line with a different background
|
||||
(global-hl-line-mode t)
|
||||
;; Also display the current column index in e.g. the mode-line
|
||||
(column-number-mode t)
|
||||
;; Show tooltip on hover in minibuffer
|
||||
(tooltip-mode 0)
|
||||
;; Default encoding
|
||||
(set-language-environment "UTF-8")
|
||||
;; Show line that indicates maximum number of "allowed" characters
|
||||
(add-hook 'prog-mode-hook 'display-fill-column-indicator-mode)
|
||||
|
||||
;; FONT SETUP
|
||||
(defvar phga/font "Jetbrains Mono")
|
||||
(defvar phga/font-size "19")
|
||||
(defvar phga/font-family (concat phga/font ":size=" phga/font-size))
|
||||
;; These are required to have the correct font size with the first frame (emacs server)
|
||||
(add-to-list 'default-frame-alist `(font . ,phga/font-family))
|
||||
|
||||
;; TEXT-SCALE: Scale text globally
|
||||
(defvar phga/text-scale-amount 2)
|
||||
(defvar phga/text-scale--current-size (string-to-number phga/font-size))
|
||||
(defun phga/text-scale-adjust ()
|
||||
"Adjust the size of the frame-font by `phga/text-scale-amount'."
|
||||
(interactive)
|
||||
(phga/text-scale--adjust))
|
||||
|
||||
(defun phga/text-scale--scale (inc)
|
||||
"Scale the frame-font by `phga/text-scale-amount'.
|
||||
If INC is not nil increase the font size else decrease it"
|
||||
(if inc (setq phga/text-scale--current-size
|
||||
(+ phga/text-scale--current-size phga/text-scale-amount))
|
||||
(setq phga/text-scale--current-size
|
||||
(- phga/text-scale--current-size phga/text-scale-amount)))
|
||||
(set-frame-font (concat phga/font ":size="
|
||||
(number-to-string phga/text-scale--current-size)) t t))
|
||||
|
||||
(defun phga/text-scale--adjust ()
|
||||
"Actual function which will call itself with the temporary keymap to scale the text."
|
||||
(let ((ev last-command-event)
|
||||
(echo-keystrokes nil))
|
||||
(pcase (event-basic-type ev)
|
||||
((or ?= ?k) (phga/text-scale--scale t))
|
||||
((or ?- ?j) (phga/text-scale--scale nil))
|
||||
((or ?0) (progn (set-frame-font phga/font-family t t)
|
||||
(setq phga/text-scale--current-size
|
||||
(string-to-number phga/font-size))
|
||||
(error "Reset to normal text scale"))))
|
||||
(message "Use j/=, k/-, 0 for further adjustment")
|
||||
(set-transient-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
(dolist (key '(?- ?j ?k ?= ?0))
|
||||
(define-key map (vector (list key))
|
||||
(lambda () (interactive) (phga/text-scale--adjust))))
|
||||
map))))
|
||||
|
||||
;; LIGATURES
|
||||
(straight-use-package 'ligature)
|
||||
;; Enable the "www" ligature in every possible major mode
|
||||
;; (ligature-set-ligatures 't '("www"))
|
||||
;; Enable all Cascadia Code ligatures in programming modes
|
||||
(ligature-set-ligatures
|
||||
'prog-mode
|
||||
'("|||>" "<|||" "<==>" "<!--" "####" "~~>" "***" "||=" "||>"
|
||||
":::" "::=" "=:=" "===" "==>" "=!=" "=>>" "=<<" "=/=" "!=="
|
||||
"!!." ">=>" ">>=" ">>>" ">>-" ">->" "->>" "-->" "---" "-<<"
|
||||
"<~~" "<~>" "<*>" "<||" "<|>" "<$>" "<==" "<=>" "<=<" "<->"
|
||||
"<--" "<-<" "<<=" "<<-" "<<<" "<+>" "</>" "###" "#_(" "..<"
|
||||
"..." "+++" "/==" "///" "_|_" "www" "&&" "^=" "~~" "~@" "~="
|
||||
"~>" "~-" "**" "*>" "*/" "||" "|}" "|]" "|=" "|>" "|-" "{|"
|
||||
"[|" "]#" "::" ":=" ":>" ":<" "$>" "==" "=>" "!=" "!!" ">:"
|
||||
">=" ">>" ">-" "-~" "-|" "->" "--" "-<" "<~" "<*" "<|" "<:"
|
||||
"<$" "<=" "<>" "<-" "<<" "<+" "</" "#{" "#[" "#:" "#=" "#!"
|
||||
"##" "#(" "#?" "#_" "%%" ".=" ".-" ".." ".?" "+>" "++" "?:"
|
||||
"?=" "?." "??" ";;" "/*" "/=" "/>" "//" "__" "~~" "(*" "*)"
|
||||
"\\\\" "://"))
|
||||
|
||||
(global-ligature-mode t)
|
||||
|
||||
;; THEMES
|
||||
;; SHANTY
|
||||
(straight-use-package 'shanty-themes)
|
||||
(defvar phga/dark-theme 'shanty-themes-dark)
|
||||
(defvar phga/light-theme 'shanty-themes-light)
|
||||
|
||||
(defvar phga/current-theme phga/dark-theme)
|
||||
(load-theme phga/current-theme t)
|
||||
|
||||
(defun phga/cycle-themes ()
|
||||
"Cycle through my preferred dark and light theme"
|
||||
(interactive)
|
||||
(if (eq phga/current-theme phga/dark-theme)
|
||||
(progn
|
||||
(disable-theme phga/dark-theme)
|
||||
(load-theme phga/light-theme t)
|
||||
(message "Loaded light theme")
|
||||
(setq phga/current-theme phga/light-theme))
|
||||
(progn
|
||||
(disable-theme phga/light-theme)
|
||||
(load-theme phga/dark-theme t)
|
||||
(message "Loaded dark theme")
|
||||
(setq phga/current-theme phga/dark-theme))))
|
||||
|
||||
;; MODE-LINE
|
||||
;; https://emacs.stackexchange.com/questions/5529/how-to-right-align-some-items-in-the-modeline
|
||||
(defun simple-mode-line-render (left right)
|
||||
"Return a string of `window-width' length containing LEFT, and RIGHT aligned respectively."
|
||||
(let* ((available-width (- (window-total-width) (length left) 2)))
|
||||
(format (format " %%s %%%ds " available-width) left right)))
|
||||
|
||||
(setq-default mode-line-format
|
||||
'((:eval (simple-mode-line-render
|
||||
;; left
|
||||
(format-mode-line
|
||||
'(""
|
||||
;; (:eval (propertize "%* %b"))
|
||||
(:eval (propertize "%* %b" 'face 'mode-line-buffer-id))
|
||||
evil-mode-line-tag
|
||||
(:eval (propertize "%m"))))
|
||||
;; (:eval (propertize "%m" 'face 'font-lock-comment-face))))
|
||||
;; right
|
||||
(format-mode-line mode-line-position)))))
|
||||
|
||||
;; FIXES
|
||||
;; Shell mode line highlighted
|
||||
;; (set-face-attribute 'comint-highlight-prompt nil :inherit nil)
|
||||
;; (custom-set-faces '(comint-highlight-prompt ((t nil))))
|
||||
|
||||
(message "ui.el was succesfully loaded")
|
||||
(provide 'ui)
|
23
early-init.el
Normal file
23
early-init.el
Normal file
@ -0,0 +1,23 @@
|
||||
;;; early-init.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; Emacs HEAD (27+) introduces early-init.el, which is run before init.el,
|
||||
;; before package and UI initialization happens.
|
||||
|
||||
;; Defer garbage collection further back in the startup process
|
||||
(setq gc-cons-threshold most-positive-fixnum)
|
||||
;; In Emacs 27+, package initialization occurs before `user-init-file' is
|
||||
;; loaded, but after `early-init-file'. Doom handles package initialization, so
|
||||
;; we must prevent Emacs from doing it early!
|
||||
(setq package-enable-at-startup nil)
|
||||
(advice-add #'package--ensure-init-file :override #'ignore)
|
||||
|
||||
;; Prevent the glimpse of un-styled Emacs by disabling these UI elements early.
|
||||
(push '(menu-bar-lines . 0) default-frame-alist)
|
||||
(push '(tool-bar-lines . 0) default-frame-alist)
|
||||
(push '(vertical-scroll-bars . nil) default-frame-alist)
|
||||
(push '(horizontal-scroll-bars . nil) default-frame-alist)
|
||||
|
||||
;; Resizing the Emacs frame can be a terribly expensive part of changing the
|
||||
;; font. By inhibiting this, we easily halve startup times with fonts that are
|
||||
;; larger than the system default.
|
||||
(setq frame-inhibit-implied-resize t)
|
31
init.el
Normal file
31
init.el
Normal file
@ -0,0 +1,31 @@
|
||||
(setq gc-cons-threshold most-positive-fixnum)
|
||||
;; install straight.el
|
||||
(defvar bootstrap-version)
|
||||
(let ((bootstrap-file
|
||||
(expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
|
||||
(bootstrap-version 5))
|
||||
(unless (file-exists-p bootstrap-file)
|
||||
(with-current-buffer
|
||||
(url-retrieve-synchronously
|
||||
"https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el"
|
||||
'silent 'inhibit-cookies)
|
||||
(goto-char (point-max))
|
||||
(eval-print-last-sexp)))
|
||||
(load bootstrap-file nil 'nomessage))
|
||||
|
||||
;; load own config files
|
||||
(setq custom-file (concat user-emacs-directory "customs.el"))
|
||||
(unless (file-exists-p custom-file)
|
||||
(make-empty-file custom-file))
|
||||
(load-file custom-file)
|
||||
|
||||
(push (concat user-emacs-directory "cnf") load-path)
|
||||
|
||||
(require 'essentials)
|
||||
(require 'ui)
|
||||
(require 'additionals)
|
||||
(require 'global-keybindings)
|
||||
(require 'functions)
|
||||
|
||||
;; set gc values back to smth reasonable
|
||||
(setq gc-cons-threshold 104857600) ;; 100 MegaByte (LSP)
|
Loading…
x
Reference in New Issue
Block a user