diff --git a/init.el b/init.el index 7cbef8d..6a5d4d9 100644 --- a/init.el +++ b/init.el @@ -1,11 +1,18 @@ -;; -*- lexical-binding: t; -*- +;;; init --- My custom emacs config + +;;; Commentary: + +;;; Code: (add-to-list 'load-path (concat user-emacs-directory "lisp/")) (require 'custom-early-init) (require 'custom-package-setup) +(require 'custom-binds) (require 'custom-init) (require 'custom-functions) (require 'custom-packages) (server-start) + +;;; init.el ends here diff --git a/lisp/custom-binds.el b/lisp/custom-binds.el new file mode 100644 index 0000000..45640c0 --- /dev/null +++ b/lisp/custom-binds.el @@ -0,0 +1,17 @@ +;;; custom-binds --- A set of custom key bindings + +;;; Commentary: + +;;; Code: + +(defvar my-term-shell "/bin/bash" "My preferred choice of shell.") +(defadvice ansi-term (before force-bash) + "Open an interactive ansi-terminal that defaults to bash." + (interactive (list my-term-shell))) +(ad-activate 'ansi-term) + +(bind-key "" 'eshell) +(bind-key "" 'ansi-term) + +(provide 'custom-binds) +;;; custom-binds.el ends here diff --git a/lisp/custom-early-init.el b/lisp/custom-early-init.el index 8a376f7..8889391 100644 --- a/lisp/custom-early-init.el +++ b/lisp/custom-early-init.el @@ -1,6 +1,9 @@ -;; -*- lexical-binding: t; -*- ;;; custom-early-init --- Provide early init vars +;;; Commentary: + +;;; Code: + (defvar file-name-handler-alist-old file-name-handler-alist) (defvar personal-keybindings nil "List of bindings performed by `bind-key'. @@ -27,3 +30,4 @@ Elements have the form ((KEY . [MAP]) CMD ORIGINAL-CMD)") (garbage-collect)) t) (provide 'custom-early-init) +;;; custom-early-init.el ends here diff --git a/lisp/custom-functions.el b/lisp/custom-functions.el index fdbb4f6..c214e37 100644 --- a/lisp/custom-functions.el +++ b/lisp/custom-functions.el @@ -1,6 +1,9 @@ -;; -*- lexical-binding: t; -*- ;;; custom-functions --- custom functions prefixed with "leo/" +;;; Commentary: + +;;; Code: + (defun leo/compile-init () "If the current buffer is 'init.el', compile it." (interactive) @@ -99,3 +102,4 @@ (provide 'custom-functions) +;;; custom-functions.el ends here diff --git a/lisp/custom-init.el b/lisp/custom-init.el index 395539c..037c5e5 100644 --- a/lisp/custom-init.el +++ b/lisp/custom-init.el @@ -1,8 +1,11 @@ -;; -*- lexical-binding: t; -*- ;;; custom-init --- Provide custom basic init for emacs -(defvar backup-dir (expand-file-name "~/.emacs.d/backup/")) -(defvar autosave-dir (expand-file-name "~/.emacs.d/autosave/")) +;;; Commentary: + +;;; Code: + +(defvar backup-dir (expand-file-name "~/.emacs.d/backup/") "Set the default location of file backups.") +(defvar autosave-dir (expand-file-name "~/.emacs.d/autosave/") "Set the default location of autosaves.") (cond ((member "PragmataPro Liga" (font-family-list)) (set-face-attribute 'default nil :font "PragmataPro Liga-12"))) @@ -20,13 +23,15 @@ ;; Revert to file on disk if it changes (global-auto-revert-mode t) ;; Highlight the current line -(global-hl-line-mode t) +(when window-system (global-hl-line-mode t)) ;; Show the column number after the line number (i.e. 50:57) (column-number-mode t) ;; C-c | to undo|redo window changes like adding buffers. (winner-mode t) ;; Show matching paren (show-paren-mode t) +;; Pretty Symbols +(when window-system (global-prettify-symbols-mode t)) ;; Indent w/spaces only (setq indent-tabs-mode nil) @@ -49,6 +54,7 @@ (defalias 'yes-or-no-p 'y-or-n-p) +(defvar browse-url-generic-program) (setq browse-url-generic-program "brave" browse-url-browser-function 'browse-url-generic) @@ -58,3 +64,4 @@ (provide 'custom-init) +;;; custom-init.el ends here diff --git a/lisp/custom-package-setup.el b/lisp/custom-package-setup.el index b89eb87..1a79c13 100644 --- a/lisp/custom-package-setup.el +++ b/lisp/custom-package-setup.el @@ -1,10 +1,13 @@ -;; -*- lexical-binding: t; -*- ;;; custom-package-setup --- Provide setup for packages and use-package +;;; Commentary: ;; Configure Melpa ;; Package management ;; set load-path manually ;; don't call package-initialize + +;;; Code: + (eval-and-compile (setq load-prefer-newer t package-user-dir "~/.emacs.d/elpa" @@ -50,5 +53,5 @@ (bind-keys :prefix-map my-ctrl-x-ctrl-l-map :prefix "C-x C-l")) - (provide 'custom-package-setup) +;;; custom-package-setup.el ends here diff --git a/lisp/custom-packages.el b/lisp/custom-packages.el index 267b7f5..f21251b 100644 --- a/lisp/custom-packages.el +++ b/lisp/custom-packages.el @@ -1,38 +1,37 @@ ;;; custom-packages --- Provide all the use-package declarations -;;; + ;;; Commentary: -;;; -;;;;; See https://github.com/jwiegley/use-package for help -;;;;; USE PACKAGE help -;;;;; (use-package package-here -;;;;; :commands (cmd cmd-all cmd-etc) ;; List commands used to ":defer" the package -;;;;; :bind-keymap -;;;;; ("M-q" . package-here-keymap) ;; Setup an entire keymap using Prefix "M-q" -;;;;; :bind -;;;;; (("M-s" . cmd) ;; Available Globally -;;;;; :map here-mode-map -;;;;; ("C-t" . cmd-all) ;; Available only in "here-mode" -;;;;; ("C-e" . cmd-etc)) ;; Available only in "here-mode" -;;;;; :init -;;;;; (setq stuff t) ;; declar vars etc... -;;;;; :config -;;;;; (here-mode 1) ;; eval stuff here after the init -;;;;; -;;;;; (use-package ruby-mode -;;;;; :mode "\\.rb\\'" -;;;;; :interpreter "ruby" -;;;;; -;;;;; ;; OR when the package name isn't the same as the =mode= -;;;;; (use-package python -;;;;; :mode ("\\.py\\'" . python-mode) -;;;;; :interpreter ("python" . python-mode)) -;;;;; -;;;;; USE ":defer" when you aren't using either :commands, :bind, :bind*, :bind-keymap, :bind-keymap*, :mode, :interpreter, or :hook -;;;;; (use-package deferred-package -;;;;; :defer t) -;;; +;; +;; See https://github.com/jwiegley/use-package for help +;; USE PACKAGE help +;; (use-package package-here +;; :commands (cmd cmd-all cmd-etc) ;; List commands used to ":defer" the package +;; :bind-keymap +;; ("M-q" . package-here-keymap) ;; Setup an entire keymap using Prefix "M-q" +;; :bind +;; (("M-s" . cmd) ;; Available Globally +;; :map here-mode-map +;; ("C-t" . cmd-all) ;; Available only in "here-mode" +;; ("C-e" . cmd-etc)) ;; Available only in "here-mode" +;; :init +;; (setq stuff t) ;; declar vars etc... +;; :config +;; (here-mode 1) ;; eval stuff here after the init +;; +;; (use-package ruby-mode +;; :mode "\\.rb\\'" +;; :interpreter "ruby" +;; +;; ;; OR when the package name isn't the same as the =mode= +;; (use-package python +;; :mode ("\\.py\\'" . python-mode) +;; :interpreter ("python" . python-mode)) +;; +;; USE ":defer" when you aren't using either :commands, :bind, :bind*, :bind-keymap, :bind-keymap*, :mode, :interpreter, or :hook +;; (use-package deferred-package +;; :defer t) + ;;; Code: -;;; ;; https://github.com/jwiegley/use-package/blob/master/bind-key.el (use-package bind-key @@ -84,11 +83,35 @@ ;; https://github.com/Malabarba/beacon (use-package beacon - :diminish + :ensure t :commands beacon-mode :demand t :init - (setq beacon-size 80)) + (setq beacon-size 30 + beacon-color "#5B6268" + beacon-blink-delay 0.2 + beacon-blink-duration 0.5 + beacon-blink-when-focused t) + (beacon-mode 1)) + +;; https://github.com/iqbalansari/emacs-emojify +(use-package emojify + :ensure t + :defer 15 + :config + (global-emojify-mode 1)) + +;; https://github.com/hrs/engine-mode +(use-package engine-mode + :ensure t + :defer 5 + :commands (engine/get-query engine/execute-search) + :config + (defengine google "https://www.google.com/search?q=%s" + :keybinding "g") + (defengine duckduckgo "https://duckduckgo.com/?q=%s" + :keybinding "d") + (engine-mode 1)) ;; https://github.com/coldnew/linum-relative (use-package linum-relative @@ -115,11 +138,19 @@ :ensure t :after (all-the-icons minions) :hook (after-init . doom-modeline-mode) + :commands (doom-modeline-def-modeline doom-modeline-set-modeline) :init (setq doom-modeline-height 40) (setq doom-modeline-bar-width 6) (setq doom-modeline-checker-simple-format nil) (setq doom-modeline-minor-modes (featurep 'minions)) + :config + (doom-modeline-def-modeline 'leo/custom-modeline + '(bar matches buffer-info remote-host buffer-position parrot selection-info) + '(misc-info minor-modes input-method buffer-encoding major-mode process vcs checker " ")) + (defun leo/setup-custom-doom-modeline () + (doom-modeline-set-modeline 'leo/custom-modeline 'default)) + (add-hook 'doom-modeline-mode-hook 'leo/setup-custom-doom-modeline) ) (use-package dashboard @@ -142,11 +173,15 @@ (use-package helm :ensure t + :commands (helm-M-x helm-buffers-list helm-find-files helm-candidate-number-at-point) :demand t :bind ("M-x" . helm-M-x) ("C-c b" . helm-buffers-list) - ("C-x C-f" . helm-find-files)) + ("C-x C-f" . helm-find-files) + :config + (declare-function helm-candidate-number-at-point "helm.el") + ) ;; https://github.com/emacsorphanage/helm-swoop (use-package helm-swoop @@ -346,7 +381,11 @@ ;; https://github.com/flycheck/flycheck (use-package flycheck :ensure t - :init (global-flycheck-mode)) + :preface + (defvar flycheck-emacs-lisp-load-path) + :init + (setq flycheck-emacs-lisp-load-path 'inherit) + (global-flycheck-mode)) ;; https://orgmode.org/elpa.html (use-package org @@ -458,5 +497,4 @@ (provide 'custom-packages) - ;;; custom-packages.el ends here