elisp

🧩 Syntax:
;;; Performance tweaks
;;; ---------------------------------------
(setq site-run-file nil)
(setq package-native-compile t)

;; Store custom settings in a separate file
(setq custom-file (expand-file-name "custom.el" user-emacs-directory))

;; Increase garbage collection threshold during startup
(setq gc-cons-threshold most-positive-fixnum)
(add-hook 'after-init-hook
          (lambda () (setq gc-cons-threshold 800000)))

;; Better memory management
(setq gc-cons-percentage 0.6
      read-process-output-max (* 1024 1024)) ;; 1mb

;; Faster startup with native compilation settings
(when (featurep 'native-compile)
  (setq native-comp-deferred-compilation nil)
  (setq native-comp-speed 2))

;; More responsive keyboard in terminal
(setq echo-keystrokes 0.01
      redisplay-dont-pause t)

;; Better terminal scrolling
(setq auto-window-vscroll nil)

;; Don't compact font caches during GC
(setq inhibit-compacting-font-caches t)

;;; UI settings
;;; ---------------------------------------
;; Minimal startup settings
(setq inhibit-startup-screen t
      initial-scratch-message nil
      make-backup-files nil
      auto-save-default nil
      create-lockfiles nil)
(menu-bar-mode -1)
(column-number-mode 1)

;; Cursor settings
(blink-cursor-mode -1)
(setq visible-cursor nil)

;; Save minibuffer history
(savehist-mode 1)

;; Remember and restore the last cursor location of opened files
(save-place-mode 1)

;; Revert buffers automatically when underlying files are changed
(global-auto-revert-mode 1)

;; Simple UI improvements
(defalias 'yes-or-no-p 'y-or-n-p)
(setq-default indent-tabs-mode nil
              tab-width 4
              standard-indent 4)

;; Theme (only if needed in terminal)
(add-to-list 'custom-theme-load-path "~/.emacs.d/themes/")
(load-theme 'theBestTheme t)

;; Better paren matching
(show-paren-mode 1)
(setq show-paren-delay 0
      show-paren-context-when-offscreen t)
(global-font-lock-mode 1)

;;; Package management
;;; ---------------------------------------
;; Package initialization optimization
(require 'package)
(setq package-archives '(("melpa" . "https://melpa.org/packages/")
                         ("gnu" . "https://elpa.gnu.org/packages/"))
      package-enable-at-startup nil)
(package-initialize)

;; Use-package setup
(unless (package-installed-p 'use-package)
  (package-refresh-contents)
  (package-install 'use-package))
(require 'use-package)
(setq use-package-always-ensure t)

;; Better minibuffer completion
(use-package vertico
  :init
  (vertico-mode 1)
  :config
  (setq vertico-cycle t))

;; Improve minibuffer interaction
(use-package orderless
  :init
  (setq completion-styles '(orderless basic)
        completion-category-defaults nil
        completion-category-overrides '((file (styles . (partial-completion))))))

;; Expand region
(use-package expand-region
  :ensure t
  :bind ("M-o" . er/expand-region))

;; Better unique buffer names (absolutely for js, python, where identical files)
(require 'uniquify)
(setq uniquify-buffer-name-style 'forward)

;;; Programming modes
;;; ---------------------------------------
;; Common programming settings
(add-hook 'prog-mode-hook
          (lambda ()
            (setq show-trailing-whitespace t)
            (set-face-background 'trailing-whitespace "orange")))

;; External packages with deferred loading
(use-package go-mode
  :defer t
  :mode "\\.go\\'")

(use-package puppet-mode
  :defer t
  :mode "\\.pp\\'")

;; Built-in modes with deferred loading
(use-package cc-mode
  :ensure nil
  :defer t
  :mode (("\\.c\\'" . c-mode)
         ("\\.h\\'" . c-mode)
         ("\\.cpp\\'" . c++-mode)
         ("\\.hpp\\'" . c++-mode))
  :config
  (setq c-default-style "linux"
        c-basic-offset 4))

;; Other built-in mode associations
(use-package python-mode
  :ensure nil
  :defer t
  :mode "\\.py\\'")

(use-package sql-mode
  :ensure nil
  :defer t
  :mode "\\.sql\\'")

(use-package sh-mode
  :ensure nil
  :defer t
  :mode ("\\.sh\\'" "\\.bash\\'" "\\.ksh\\'" "\\.zsh\\'"))

;; C# mode
(use-package csharp-mode
  :ensure nil
  :defer t
  :mode "\\.cs\\'")

;; Default to conf-mode for unknown files
(setq major-mode 'conf-mode)

;;; Keys
;;; ---------------------------------------
(global-set-key (kbd "C-c w") 'delete-trailing-whitespace)
(global-set-key (kbd "M-;") 'comment-line)