|
|
|
;;; dot-core-config.el --- -*- lexical-binding: t; -*-
|
|
|
|
|
|
|
|
;;; Commentary:
|
|
|
|
|
|
|
|
;; ??
|
|
|
|
|
|
|
|
;;; Code:
|
|
|
|
|
|
|
|
;; -----------------------------------------
|
|
|
|
;; General
|
|
|
|
|
|
|
|
;; Columns start at 1
|
|
|
|
(setq column-number-indicator-zero-based nil)
|
|
|
|
;; TODO: Make variable below compatible with telephone-line
|
|
|
|
;; (setq mode-line-position-column-format " C%C")
|
|
|
|
|
|
|
|
;; Dont confirm on quitting Emacs
|
|
|
|
(setq confirm-kill-processes nil)
|
|
|
|
|
|
|
|
;; Custom thems, do not ask if safe
|
|
|
|
(setq custom-safe-themes t)
|
|
|
|
|
|
|
|
;; Dired move to trash
|
|
|
|
(setq delete-by-moving-to-trash t)
|
|
|
|
|
|
|
|
;; Column indicator character
|
|
|
|
(setq display-fill-column-indicator-character ?\N{U+2503})
|
|
|
|
|
|
|
|
;; Scrolling
|
|
|
|
(setq scroll-conservatively 1)
|
|
|
|
(setq mouse-wheel-scroll-amount '(5))
|
|
|
|
(setq mouse-wheel-progressive-speed nil)
|
|
|
|
(setq pixel-scroll-precision-mode t)
|
|
|
|
|
|
|
|
;; Parenthesis, set behavior
|
|
|
|
(setq show-paren-delay 0)
|
|
|
|
(setq show-paren-style 'mixed)
|
|
|
|
(setq show-paren-context-when-offscreen t)
|
|
|
|
|
|
|
|
;; Tramp default protocol
|
|
|
|
(setq tramp-default-method "ssh")
|
|
|
|
|
|
|
|
;; Set undo limit, measured in bytes
|
|
|
|
(setq-default undo-limit 400000)
|
|
|
|
(setq-default undo-strong-limit 3000000)
|
|
|
|
(setq-default undo-outer-limit 12000000)
|
|
|
|
|
|
|
|
;; Enable line numbers
|
|
|
|
(global-display-line-numbers-mode)
|
|
|
|
|
|
|
|
;; C++ syntax highlighting for .h files
|
|
|
|
(add-to-list 'auto-mode-alist '("\\.h\\'" . c++-mode))
|
|
|
|
|
|
|
|
;; Set the frame title
|
|
|
|
(setq frame-title-format
|
|
|
|
`("%b"
|
|
|
|
(:eval
|
|
|
|
(if (buffer-file-name)
|
|
|
|
(concat
|
|
|
|
(if (buffer-modified-p) " •" nil)
|
|
|
|
" ("
|
|
|
|
(abbreviate-file-name
|
|
|
|
(directory-file-name
|
|
|
|
(file-name-directory (buffer-file-name))))
|
|
|
|
")")
|
|
|
|
nil))
|
|
|
|
,(format " - GNU Emacs %s" emacs-version)
|
|
|
|
))
|
|
|
|
(setq icon-title-format frame-title-format)
|
|
|
|
|
|
|
|
;; -----------------------------------------
|
|
|
|
;; Buffers
|
|
|
|
|
|
|
|
(setq confirm-nonexistent-file-or-buffer nil)
|
|
|
|
(setq ibuffer-expert t)
|
|
|
|
|
|
|
|
;; -----------------------------------------
|
|
|
|
;; Dired
|
|
|
|
|
|
|
|
(setq wdired-allow-to-change-permissions t)
|
|
|
|
|
|
|
|
;; -----------------------------------------
|
|
|
|
;; Electric
|
|
|
|
|
|
|
|
;; Make return key also do indent of previous line
|
|
|
|
(electric-indent-mode 1)
|
|
|
|
(setq electric-pair-pairs '(
|
|
|
|
(?\( . ?\))
|
|
|
|
(?\[ . ?\])
|
|
|
|
))
|
|
|
|
(electric-pair-mode 1)
|
|
|
|
|
|
|
|
;; -----------------------------------------
|
|
|
|
;; File Paths
|
|
|
|
|
|
|
|
;; Set file paths for built-in features like: auto-saves, backups, etc.
|
|
|
|
|
|
|
|
;; Set Directory locations
|
|
|
|
(setq auto-save-list-file-prefix (expand-file-name "auto-save/" dot-cache-dir))
|
|
|
|
(setq auto-save-file-name-transforms `((".*" ,auto-save-list-file-prefix t)))
|
|
|
|
(setq backup-directory-alist `((".*" . ,(expand-file-name "backup/" dot-cache-dir))))
|
|
|
|
(setq custom-theme-directory (expand-file-name "themes/" dot-emacs-dir))
|
|
|
|
(setq eshell-directory-name (expand-file-name "eshell/" dot-cache-dir))
|
|
|
|
(setq tramp-auto-save-directory (expand-file-name "tramp-auto-save/" dot-cache-dir))
|
|
|
|
(setq tramp-backup-directory-alist backup-directory-alist)
|
|
|
|
(setq treesit-extra-load-path `(,(expand-file-name "tree-sitter" dot-cache-dir)))
|
|
|
|
(setq url-configuration-directory (expand-file-name "url/" dot-cache-dir))
|
|
|
|
|
|
|
|
(startup-redirect-eln-cache (expand-file-name "eln-cache" dot-cache-dir))
|
|
|
|
|
|
|
|
;; Set file locations
|
|
|
|
(setq bookmark-default-file (expand-file-name "bookmarks" dot-etc-dir))
|
|
|
|
(setq nsm-settings-file (expand-file-name "network-security.data" dot-cache-dir))
|
|
|
|
(setq org-id-locations-file (expand-file-name "org-id-locations" dot-cache-dir))
|
|
|
|
(setq tramp-persistency-file-name (expand-file-name "tramp" dot-cache-dir ))
|
|
|
|
|
|
|
|
;; -----------------------------------------
|
|
|
|
;; File Backups Versioning
|
|
|
|
|
|
|
|
;; Setup file backups versioning.
|
|
|
|
|
|
|
|
(setq backup-by-copying t) ; Don't cobbler symlinks
|
|
|
|
(setq create-lockfiles nil) ; Disable lockfiles (.#)
|
|
|
|
(setq delete-old-versions t) ; Cleanup backups
|
|
|
|
(setq kept-new-versions 5) ; Newest backups to keep
|
|
|
|
(setq kept-old-versions 2) ; Oldest backups to keep
|
|
|
|
(setq version-control t) ; Use version numbers on backups
|
|
|
|
|
|
|
|
;; -----------------------------------------
|
|
|
|
;; Formatting
|
|
|
|
|
|
|
|
;; Columnn after line-wrapping happens
|
|
|
|
(setq-default fill-column 80)
|
|
|
|
|
|
|
|
;; Automatically add newline on save at the end of the file
|
|
|
|
(setq require-final-newline t)
|
|
|
|
|
|
|
|
;; End sentences with a single space
|
|
|
|
(setq sentence-end-double-space nil)
|
|
|
|
|
|
|
|
;; `tabify' and `untabify' should only affect indentation
|
|
|
|
(setq tabify-regexp "^\t* [ \t]+")
|
|
|
|
|
|
|
|
;; Do not wrap lines
|
|
|
|
(setq-default truncate-lines t)
|
|
|
|
|
|
|
|
;; Wrap lines in the middle of words, gives a \ indicator
|
|
|
|
(setq-default word-wrap nil)
|
|
|
|
|
|
|
|
;; -----------------------------------------
|
|
|
|
;; Hide Elements
|
|
|
|
|
|
|
|
(menu-bar-mode 0)
|
|
|
|
(scroll-bar-mode 0)
|
|
|
|
(tool-bar-mode 0)
|
|
|
|
(tooltip-mode 0)
|
|
|
|
(fringe-mode 0)
|
|
|
|
(blink-cursor-mode 0)
|
|
|
|
|
|
|
|
(setq inhibit-startup-message t)
|
|
|
|
(setq initial-scratch-message nil)
|
|
|
|
(setq ring-bell-function 'ignore)
|
|
|
|
|
|
|
|
;; -----------------------------------------
|
|
|
|
;; Native Compilation
|
|
|
|
|
|
|
|
(setq native-comp-async-report-warnings-errors nil)
|
|
|
|
|
|
|
|
;; -----------------------------------------
|
|
|
|
;; Recentf
|
|
|
|
|
|
|
|
(elpaca nil (setup recentf ; built-in
|
|
|
|
(:require recentf)
|
|
|
|
(:when-loaded
|
|
|
|
(setq recentf-auto-cleanup 'never)
|
|
|
|
(setq recentf-exclude '("~$" "/ssh:" "/sudo:"))
|
|
|
|
(setq recentf-filename-handlers '(abbreviate-file-name))
|
|
|
|
(setq recentf-max-menu-items 0)
|
|
|
|
(setq recentf-max-saved-items 200)
|
|
|
|
(setq recentf-save-file (expand-file-name "recentf" dot-cache-dir))
|
|
|
|
(recentf-mode))))
|
|
|
|
|
|
|
|
;; -----------------------------------------
|
|
|
|
;; Tabs
|
|
|
|
|
|
|
|
;; Tabs
|
|
|
|
(setq-default tab-width 4
|
|
|
|
indent-tabs-mode t
|
|
|
|
c-basic-offset 4
|
|
|
|
sgml-basic-offset 4
|
|
|
|
sh-basic-offset 4)
|
|
|
|
|
|
|
|
;; C/C++-like languages formatting style
|
|
|
|
;; https://www.emacswiki.org/emacs/IndentingC
|
|
|
|
;; https://www.gnu.org/software/emacs/manual/html_mono/ccmode.html#Getting-Started
|
|
|
|
;; https://www.gnu.org/software/emacs/manual/html_mono/ccmode.html#Adding-Styles
|
|
|
|
;; https://www.gnu.org/software/emacs/manual/html_mono/ccmode.html#Sample-Init-File
|
|
|
|
(c-add-style "user" `("linux"
|
|
|
|
(c-basic-offset . ,(default-value 'tab-width))
|
|
|
|
(c-offsets-alist
|
|
|
|
(innamespace . -)
|
|
|
|
)))
|
|
|
|
(setq-default c-default-style "user")
|
|
|
|
|
|
|
|
;; -----------------------------------------
|
|
|
|
;; UTF-8
|
|
|
|
|
|
|
|
;; Set UTF-8 encoding as default.
|
|
|
|
|
|
|
|
(prefer-coding-system 'utf-8-unix)
|
|
|
|
(setq locale-coding-system 'utf-8-unix)
|
|
|
|
;; Default also sets file-name, keyboard and terminal coding system
|
|
|
|
(set-default-coding-systems 'utf-8-unix)
|
|
|
|
(set-buffer-file-coding-system 'utf-8-unix)
|
|
|
|
(set-selection-coding-system 'utf-8-unix)
|
|
|
|
|
|
|
|
;; -----------------------------------------
|
|
|
|
;; Window
|
|
|
|
|
|
|
|
;; Set `switch-to-buffer' to respect the window rules
|
|
|
|
(setq switch-to-buffer-obey-display-actions t)
|
|
|
|
|
|
|
|
;; Window rules
|
|
|
|
(setq display-buffer-alist
|
|
|
|
'(
|
|
|
|
;; ^\*(e?shell|(ansi-|v)?term).*
|
|
|
|
("^\\*\\(e?shell\\|\\(ansi-\\|v\\)?term\\).*"
|
|
|
|
(display-buffer-in-side-window)
|
|
|
|
(window-height . 0.25)
|
|
|
|
(side . bottom)
|
|
|
|
(slot . -1))
|
|
|
|
("\\*Faces\\*"
|
|
|
|
(display-buffer-in-side-window)
|
|
|
|
(window-height . 0.25)
|
|
|
|
(side . bottom)
|
|
|
|
(slot . 1))
|
|
|
|
("\\*Help.*"
|
|
|
|
(display-buffer-in-side-window)
|
|
|
|
(window-height . 0.25)
|
|
|
|
(side . bottom)
|
|
|
|
(slot . 0))
|
|
|
|
))
|
|
|
|
|
|
|
|
;; Allow 'undo' and 'redo' changes in Window Configuration.
|
|
|
|
(winner-mode)
|
|
|
|
|
|
|
|
(provide 'dot-core-config)
|
|
|
|
|
|
|
|
;;; dot-core-config.el ends here
|