dotfiles/.config/emacs/lisp/init-base.el

163 lines
5.8 KiB
EmacsLisp
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;; init-base.el -*- lexical-binding: t -*-
(require 'init-const)
(require 'init-funcs)
(with-no-warnings
(setq read-process-output-max (* 1024 1024)) ;; 1mb (lsp recommendation)
;;
(setq ffap-machine-p-known 'reject))
;;
(use-package gcmh
:straight t
:ensure t
:diminish
:hook
(emacs-startup . gcmh-mode)
:init
(setq gcmh-idle-delay 'auto
gcmh-auto-idle-delay-factor 10
gcmh-high-cons-threshold (* 16 1024 1024)))
(when (fboundp 'set-charset-priority)
(set-charset-priority 'unicode))
(prefer-coding-system 'utf-8)
(setq locale-coding-system 'utf-8)
(setq system-time-locale "C")
(unless ON-WINDOWS
(set-selection-coding-system 'utf-8))
(when ON-LINUX
(use-package exec-path-from-shell
:straight t
:ensure t
:defer t
:init (exec-path-from-shell-initialize)))
;; open file point at where last saved place.
(use-package saveplace
:straight t
:ensure t
:hook (after-init . save-place-mode))
(use-package recentf
:straight t
:ensure t
:bind
(("C-x C-r" . recentf-open-files))
:hook
(after-init . recentf-mode)
:init
(setq recentf-max-saved-items 300
recentf-exclude
'("\\.?cache" ".cask" "url" "COMMIT_EDITMSG\\'" "bookmarks"
"\\.\\(?:gz\\|gif\\|svg\\|png\\|jpe?g\\|bmp\\|xpm\\)$"
"\\.?ido\\.last$" "\\.revive$" "/G?TAGS$" "/.elfeed/"
"^/tmp/" "^/var/folders/.+$" "^/ssh:" "/persp-confs/"
(lambda (file) (file-in-directory-p file package-user-dir))))
:config
(push (expand-file-name recentf-save-file) recentf-exclude)
(add-to-list 'recentf-filename-handlers #'abbreviate-file-name))
(use-package savehist
:straight t
:ensure t
:hook
(after-init . savehist-mode)
:init
(setq enable-recursive-minibuffers t ; Allow commands in minibuffers
history-length 25
savehist-additional-variables '(mark-ring
global-mark-ring
search-ring
regexp-search-ring
extended-command-history)
savehist-autosave-interval 300))
(use-package simple
:ensure nil ; emacs base package
:hook ((after-init . size-indication-mode)
(text-mode . visual-line-mode)
((prog-mode markdown-mode conf-mode) . enable-trailing-whitespace))
:init
(setq column-number-mode t
line-number-mode t
;; kill-whole-line t ; Kill line including '\n'
line-move-visual nil
track-eol t ; Keep cursor at end of lines. Require line-move-visual is nil.
set-mark-command-repeat-pop t) ; Repeating C-SPC after popping mark pops it again
;; Only list the commands of the current modes
(when (boundp 'read-extended-command-predicate)
(setq read-extended-command-predicate
#'command-completion-default-include-p))
;; Visualize TAB, (HARD) SPACE, NEWLINE
(setq-default show-trailing-whitespace nil) ; Don't show trailing whitespace by default
(defun enable-trailing-whitespace ()
"Show trailing spaces and delete on saving."
(setq show-trailing-whitespace t)
(add-hook 'before-save-hook #'delete-trailing-whitespace nil t))
;; Prettify the process list
(with-no-warnings
(add-hook 'process-menu-mode-hook
(lambda ()
(setq tabulated-list-format
(vconcat `(("" ,(if (icons-displayable-p) 2 0)))
tabulated-list-format))))
(defun my-list-processes--prettify ()
"Prettify process list."
(when-let ((entries tabulated-list-entries))
(setq tabulated-list-entries nil)
(dolist (p (process-list))
(when-let* ((val (cadr (assoc p entries)))
(icon (if (icons-displayable-p)
(concat
" "
(nerd-icons-faicon "nf-fa-bolt" :face 'nerd-icons-lblue))
;;(all-the-icons-faicon "nf-fa-bolt" :face 'all-the-icons-lblue))
" x"))
(name (aref val 0))
(pid (aref val 1))
(status (aref val 2))
(status (list status
'face
(if (memq status '(stop exit closed failed))
'error
'success)))
(buf-label (aref val 3))
(tty (list (aref val 4) 'face 'font-lock-doc-face))
(thread (list (aref val 5) 'face 'font-lock-doc-face))
(cmd (list (aref val 6) 'face 'completions-annotations)))
(push (list p (vector icon name pid status buf-label tty thread cmd))
tabulated-list-entries)))))
(advice-add #'list-processes--refresh :after #'my-list-processes--prettify)))
;; Misc
(if (boundp 'use-short-answers)
(setq use-short-answers t)
(fset 'yes-or-no-p 'y-or-n-p))
(setq-default major-mode 'text-mode
fill-column 80
tab-width 4
indent-tabs-mode nil) ; Permanently indent with spaces, never with TABs
(setq visible-bell t
inhibit-compacting-font-caches t ; Dont compact font caches during GC
delete-by-moving-to-trash t ; Deleting files go to OS's trash folder
make-backup-files nil ; Forbide to make backup files
auto-save-default nil ; Disable auto save
uniquify-buffer-name-style 'post-forward-angle-brackets ; Show path if names are same
adaptive-fill-regexp "[ t]+|[ t]*([0-9]+.|*+)[ t]*"
adaptive-fill-first-line-regexp "^* *$"
sentence-end "\\([。!?]\\|……\\|[.?!][]\"')}]*\\($\\|[ \t]\\)\\)[ \t\n]*"
sentence-end-double-space nil
word-wrap-by-category t)
(provide 'init-base)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; init-base.el ends here