WIP emacs config
This commit is contained in:
parent
4cb3de339a
commit
19061287b9
3
apps/emacs/.gitignore
vendored
Normal file
3
apps/emacs/.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
/auto-save-list
|
||||
/elpa
|
||||
*~
|
103
apps/emacs/config.el
Normal file
103
apps/emacs/config.el
Normal file
|
@ -0,0 +1,103 @@
|
|||
(require 'use-package-ensure)
|
||||
(setq use-package-always-ensure t)
|
||||
|
||||
(use-package auto-compile :config (auto-compile-on-load-mode))
|
||||
(setq load-prefer-newer t)
|
||||
|
||||
(setq evil-want-abbrev-expand-on-insert-exit nil)
|
||||
|
||||
(use-package evil
|
||||
:config
|
||||
(evil-mode 1))
|
||||
|
||||
(use-package evil-collection
|
||||
:after evil)
|
||||
|
||||
(use-package evil-surround
|
||||
:config
|
||||
(global-evil-surround-mode 1))
|
||||
|
||||
(use-package evil-org
|
||||
:after org
|
||||
:config
|
||||
(add-hook 'org-mode-hook 'evil-org-mode)
|
||||
(add-hook 'evil-org-mode-hook
|
||||
(lambda () (evil-org-set-key-theme)))
|
||||
(require 'evil-org-agenda)
|
||||
(evil-org-agenda-set-keys))
|
||||
|
||||
(use-package key-chord :after evil)
|
||||
(key-chord-mode 1)
|
||||
(key-chord-define evil-insert-state-map "jk" 'evil-normal-state)
|
||||
|
||||
(defun lytedev/reload-config ()
|
||||
(interactive)
|
||||
(load-file "~/.emacs"))
|
||||
(global-set-key (kbd "C-x M-r") 'lytedev/reload-config)
|
||||
|
||||
(tool-bar-mode 0)
|
||||
(menu-bar-mode 1) ;; Keep the menu while I'm a newb.
|
||||
(scroll-bar-mode -1)
|
||||
|
||||
(set-window-scroll-bars (minibuffer-window) nil nil)
|
||||
|
||||
(use-package monokai-theme)
|
||||
(let ((line (face-attribute 'mode-line :underline)))
|
||||
(set-face-attribute 'mode-line nil :overline line)
|
||||
(set-face-attribute 'mode-line-inactive nil :overline line)
|
||||
(set-face-attribute 'mode-line-inactive nil :underline nil)
|
||||
(set-face-attribute 'mode-line nil :box nil)
|
||||
(set-face-attribute 'mode-line-inactive nil :box nil)
|
||||
(set-face-attribute 'mode-line-inactive nil :background "#f9f2d9"))
|
||||
|
||||
(defun lytedev/apply-theme ()
|
||||
(interactive)
|
||||
(load-theme 'monokai t))
|
||||
|
||||
;; (if (daemonp)
|
||||
;; (add-hook 'after-make-frame-functions (lambda (frame) (with-selected-frame frame
|
||||
|
||||
(use-package moody
|
||||
:config
|
||||
(setq x-underline-at-descent-line t)
|
||||
(moody-replace-mode-line-buffer-identification)
|
||||
(moody-replace-vc-mode))
|
||||
|
||||
(setq lytedev/default-font "Iosevka Type")
|
||||
(setq lytedev/default-font-size 10)
|
||||
(setq lytedev/min-font-size 4)
|
||||
(setq lytedev/current-font-size lytedev/default-font-size)
|
||||
|
||||
(setq lytedev/font-change-increment 1.1)
|
||||
|
||||
(defun lytedev/font-code ()
|
||||
(concat lytedev/default-font "-" (number-to-string lytedev/current-font-size)))
|
||||
|
||||
(defun lytedev/set-font-size ()
|
||||
(let ((font-code (lytedev/font-code)))
|
||||
(if (assoc 'font default-frame-alist)
|
||||
(setcdr (assoc 'font default-frame-alist) font-code)
|
||||
(add-to-list 'default-frame-alist (cons 'font font-code)))
|
||||
(set-frame-font font-code)))
|
||||
|
||||
(defun lytedev/reset-font-size ()
|
||||
(interactive)
|
||||
(setq lytedev/current-font-size lytedev/default-font-size)
|
||||
(lytedev/set-font-size))
|
||||
|
||||
(defun lytedev/increase-font-size ()
|
||||
(interactive)
|
||||
(setq lytedev/current-font-size (ceiling (* lytedev/current-font-size lytedev/font-change-increment)))
|
||||
(lytedev/set-font-size))
|
||||
|
||||
(defun lytedev/decrease-font-size ()
|
||||
(interactive)
|
||||
(setq lytedev/current-font-size (max lytedev/min-font-size (floor (/ lytedev/current-font-size lytedev/font-change-increment))))
|
||||
(lytedev/set-font-size))
|
||||
|
||||
(define-key global-map (kbd "C-+") 'lytedev/increase-font-size)
|
||||
(define-key global-map (kbd "C--") 'lytedev/decrease-font-size)
|
||||
(define-key global-map (kbd "C-0") 'lytedev/reset-font-size)
|
||||
|
||||
;; NOTE: I have no clue what this does... yet.
|
||||
(global-prettify-symbols-mode t)
|
180
apps/emacs/config.org
Normal file
180
apps/emacs/config.org
Normal file
|
@ -0,0 +1,180 @@
|
|||
#+TITLE: emacs config
|
||||
#+AUTHOR: Daniel "lytedev" Flanagan
|
||||
#+EMAIL: daniel@lyte.dev
|
||||
|
||||
I have very little idea what I'm doing. Here goes!
|
||||
|
||||
* Meta
|
||||
|
||||
User information.
|
||||
|
||||
#+begin_src
|
||||
(setq user-full-name "Daniel Flanagan"
|
||||
user-mail-address "daniel@lyte.dev"
|
||||
calendar-location-name "Kansas City, MO")
|
||||
#+end_src
|
||||
|
||||
* Package Setup
|
||||
|
||||
Make sure packages in use are installed.
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(require 'use-package-ensure)
|
||||
(setq use-package-always-ensure t)
|
||||
#+end_src
|
||||
|
||||
... and that we compile them.
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(use-package auto-compile :config (auto-compile-on-load-mode))
|
||||
(setq load-prefer-newer t)
|
||||
#+end_src
|
||||
|
||||
* Setup a text editor
|
||||
|
||||
Get vimmy with it.
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(setq evil-want-abbrev-expand-on-insert-exit nil)
|
||||
|
||||
(use-package evil
|
||||
:config
|
||||
(evil-mode 1))
|
||||
|
||||
(use-package evil-collection
|
||||
:after evil)
|
||||
|
||||
(use-package evil-surround
|
||||
:config
|
||||
(global-evil-surround-mode 1))
|
||||
|
||||
(use-package evil-org
|
||||
:after org
|
||||
:config
|
||||
(add-hook 'org-mode-hook 'evil-org-mode)
|
||||
(add-hook 'evil-org-mode-hook
|
||||
(lambda () (evil-org-set-key-theme)))
|
||||
(require 'evil-org-agenda)
|
||||
(evil-org-agenda-set-keys))
|
||||
#+end_src
|
||||
|
||||
Map the `jk` chord to escape.
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(use-package key-chord :after evil)
|
||||
(key-chord-mode 1)
|
||||
(key-chord-define evil-insert-state-map "jk" 'evil-normal-state)
|
||||
#+end_src
|
||||
|
||||
And so that I can iterate quickly while writing this, setup the chord `<space>r` to reload my config.
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(defun lytedev/reload-config ()
|
||||
(interactive)
|
||||
(load-file "~/.emacs"))
|
||||
(global-set-key (kbd "C-x M-r") 'lytedev/reload-config)
|
||||
#+end_src
|
||||
|
||||
Kill GUI elements unnecessary for my usage.
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(tool-bar-mode 0)
|
||||
(menu-bar-mode 1) ;; Keep the menu while I'm a newb.
|
||||
(scroll-bar-mode -1)
|
||||
#+end_src
|
||||
|
||||
Kill minibuffer scroll bars.
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(set-window-scroll-bars (minibuffer-window) nil nil)
|
||||
#+end_src
|
||||
|
||||
** Editor
|
||||
|
||||
Setup a decent theme.
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(use-package monokai-theme)
|
||||
(let ((line (face-attribute 'mode-line :underline)))
|
||||
(set-face-attribute 'mode-line nil :overline line)
|
||||
(set-face-attribute 'mode-line-inactive nil :overline line)
|
||||
(set-face-attribute 'mode-line-inactive nil :underline nil)
|
||||
(set-face-attribute 'mode-line nil :box nil)
|
||||
(set-face-attribute 'mode-line-inactive nil :box nil)
|
||||
(set-face-attribute 'mode-line-inactive nil :background "#f9f2d9"))
|
||||
|
||||
(defun lytedev/apply-theme ()
|
||||
(interactive)
|
||||
(load-theme 'monokai t))
|
||||
#+end_src
|
||||
|
||||
... and make it work in daemon mode.
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
;; (if (daemonp)
|
||||
;; (add-hook 'after-make-frame-functions (lambda (frame) (with-selected-frame frame
|
||||
#+end_src
|
||||
|
||||
Setup a pretty modeline.
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(use-package moody
|
||||
:config
|
||||
(setq x-underline-at-descent-line t)
|
||||
(moody-replace-mode-line-buffer-identification)
|
||||
(moody-replace-vc-mode))
|
||||
#+end_src
|
||||
|
||||
Setup the best font and bindings to adjust its size on the fly.
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(setq lytedev/default-font "Iosevka Type")
|
||||
(setq lytedev/default-font-size 10)
|
||||
(setq lytedev/min-font-size 4)
|
||||
(setq lytedev/current-font-size lytedev/default-font-size)
|
||||
|
||||
(setq lytedev/font-change-increment 1.1)
|
||||
|
||||
(defun lytedev/font-code ()
|
||||
(concat lytedev/default-font "-" (number-to-string lytedev/current-font-size)))
|
||||
|
||||
(defun lytedev/set-font-size ()
|
||||
(let ((font-code (lytedev/font-code)))
|
||||
(if (assoc 'font default-frame-alist)
|
||||
(setcdr (assoc 'font default-frame-alist) font-code)
|
||||
(add-to-list 'default-frame-alist (cons 'font font-code)))
|
||||
(set-frame-font font-code)))
|
||||
|
||||
(defun lytedev/reset-font-size ()
|
||||
(interactive)
|
||||
(setq lytedev/current-font-size lytedev/default-font-size)
|
||||
(lytedev/set-font-size))
|
||||
|
||||
(defun lytedev/increase-font-size ()
|
||||
(interactive)
|
||||
(setq lytedev/current-font-size (ceiling (* lytedev/current-font-size lytedev/font-change-increment)))
|
||||
(lytedev/set-font-size))
|
||||
|
||||
(defun lytedev/decrease-font-size ()
|
||||
(interactive)
|
||||
(setq lytedev/current-font-size (max lytedev/min-font-size (floor (/ lytedev/current-font-size lytedev/font-change-increment))))
|
||||
(lytedev/set-font-size))
|
||||
|
||||
(define-key global-map (kbd "C-+") 'lytedev/increase-font-size)
|
||||
(define-key global-map (kbd "C--") 'lytedev/decrease-font-size)
|
||||
(define-key global-map (kbd "C-0") 'lytedev/reset-font-size)
|
||||
#+end_src
|
||||
|
||||
** Misc
|
||||
|
||||
NOTE: What exactly does this get me?
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
;; NOTE: I have no clue what this does... yet.
|
||||
(global-prettify-symbols-mode t)
|
||||
#+end_src
|
||||
|
||||
* To Do
|
||||
|
||||
1. Setup theme
|
||||
2. Setup an editor
|
17
apps/emacs/config~
Normal file
17
apps/emacs/config~
Normal file
|
@ -0,0 +1,17 @@
|
|||
;; Configure package.el to include MELPA.
|
||||
(require 'package)
|
||||
(add-to-list 'package-archives '("gnu" . "https://elpa.gnu.org/packages/") t)
|
||||
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
|
||||
(add-to-list 'package-archives '("org" . "https://orgmode.org/elpa/") t)
|
||||
(package-initialize)
|
||||
|
||||
;; Ensure that use-package is installed.
|
||||
;;
|
||||
;; If use-package isn't already installed, it's extremely likely that this is a
|
||||
;; fresh installation! So we'll want to update the package repository and
|
||||
;; install use-package before loading the literate configuration.
|
||||
(when (not (package-installed-p 'use-package))
|
||||
(package-refresh-contents)
|
||||
(package-install 'use-package))
|
||||
|
||||
(org-babel-load-file "~/.emacs.d/config.org")
|
14
apps/emacs/init.el
Normal file
14
apps/emacs/init.el
Normal file
|
@ -0,0 +1,14 @@
|
|||
;; Setup package archives.
|
||||
(require 'package)
|
||||
(add-to-list 'package-archives '("gnu" . "https://elpa.gnu.org/packages/") t)
|
||||
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
|
||||
(add-to-list 'package-archives '("org" . "https://orgmode.org/elpa/") t)
|
||||
(package-initialize)
|
||||
|
||||
;; Setup `use-package`.
|
||||
(when (not (package-installed-p 'use-package))
|
||||
(package-refresh-contents)
|
||||
(package-install 'use-package))
|
||||
|
||||
;; Load the bulk of our configuration from a fancy org file.
|
||||
(org-babel-load-file "~/.emacs.d/config.org")
|
|
@ -48,7 +48,7 @@ links=(
|
|||
"apps/neovim/" "$HOME/.vim"
|
||||
"apps/neovim/init.vim" "$HOME/.vimrc"
|
||||
"bin/lib/colors/vim" "$XDG_CONFIG_HOME/nvim/colors/base16-donokai.vim"
|
||||
"apps/emacs/config" "$HOME/.emacs"
|
||||
"apps/emacs/" "$HOME/.emacs.d"
|
||||
|
||||
# gtk configuration files
|
||||
"apps/de/gtk/2rc" "$HOME/.gtkrc-2.0"
|
||||
|
|
Reference in a new issue