Support updated emacs

Finally ported my up-to-date emacs configuration here. I was putting
this off for a long while, unsure of how to handle all of the work. All
it took was my laptop being fried to force me to do this. So... voila!
This commit is contained in:
William Carroll 2018-04-25 13:26:53 -04:00
parent 56a7b9fa41
commit 3c8e6f0cc5
51 changed files with 3186 additions and 0 deletions

View file

@ -0,0 +1,63 @@
;;; clojure.el --- My Clojure preferences -*- lexical-binding: t -*-
;; Author: William Carroll <wpcarro@gmail.com>
;;; Commentary:
;; Hosting my Clojure tooling preferences
;;; Code:
;; Helper functions
(defun wpc/buffer-name-for-clojure-mode (mode)
(let* ((project-name (projectile-project-name))
(cljs-name (concat "*cider-repl CLJS " project-name "*"))
(clj-name (concat "*cider-repl " project-name "*")))
(cond ((eq mode 'clojurescript-mode) cljs-name)
((eq mode 'clojure-mode) clj-name)
((eq mode 'clojurec-mode) cljs-name))))
(defun wpc/repl-function-for-clojure-mode (mode)
(let ((project-name (projectile-project-name))
(cljs-fn #'cider-jack-in-clojurescript)
(clj-fn #'cider-jack-in))
(cond ((eq mode 'clojurescript-mode) cljs-fn)
((eq mode 'clojure-mode) clj-fn)
((eq mode 'clojurec-mode) cljs-fn))))
(defun wpc/find-or-create-clojure-or-clojurescript-repl ()
(interactive)
(with-current-buffer (current-buffer)
(let ((buffer-name (wpc/buffer-name-for-clojure-mode major-mode))
(repl-function (wpc/repl-function-for-clojure-mode major-mode)))
(if (get-buffer buffer-name)
(switch-to-buffer buffer-name)
(funcall repl-function)))))
;; (defun wpc/evil-leader/set-key-for-clojure-modes (kbd callback)
;; (evil-leader/set-key-for-mode 'clojure-mode kbd callback)
;; (evil-leader/set-key-for-mode 'clojurec-mode kbd callback)
;; (evil-leader/set-key-for-mode 'clojurescript-mode kbd callback))
;; ;; clojure
;; (wpc/evil-leader/set-key-for-clojure-modes "d" #'cider-doc)
;; (wpc/evil-leader/set-key-for-clojure-modes "e" #'cider-eval-defun-at-point)
;; (wpc/evil-leader/set-key-for-clojure-modes "r" #'wpc/find-or-create-clojure-or-clojurescript-repl)
(use-package cider
:general
(cider-repl-mode-map
"C-l" 'cider-repl-clear-buffer
"C-u" 'kill-whole-line
"<up>" 'cider-repl-previous-input
"<down>" 'cider-repl-next-input
"C-c 'j" 'wpc/find-or-create-clojure-or-clojurescript-repl)
(n
"M-." 'cider-find-var)
:config
(setq cider-cljs-lein-repl
"(do (require 'figwheel-sidecar.repl-api)
(figwheel-sidecar.repl-api/start-figwheel!)
(figwheel-sidecar.repl-api/cljs-repl))"
cider-prompt-for-symbol nil))
(provide 'wpc-clojure)
;;; wpc-clojure.el ends here

View file

@ -0,0 +1,24 @@
;;; company.el --- Autocompletion package, company, preferences -*- lexical-binding: t -*-
;; Author: William Carroll <wpcarro@gmail.com>
;;; Commentary:
;; Hosts my company mode preferences
;;; Code:
;; autocompletion client
(use-package company
:general
(company-active-map
"C-j" 'company-select-next
"C-n" 'company-select-next
"C-k" 'company-select-previous
"C-p" 'company-select-previous
"C-d" 'company-show-doc-buffer)
:config
(setq company-idle-delay 0)
(setq company-minimum-prefix-length 2)
(global-company-mode))
(provide 'wpc-company)
;;; company.el ends here

View file

@ -0,0 +1,18 @@
;;; dired.el --- My dired preferences -*- lexical-binding: t -*-
;; Author: William Carroll <wpcarro@gmail.com>
;;; Commentary:
;; Hosts my attempts at configuring dired
;;; Code:
(require 'dired)
(general-def 'dired-mode-map
"c" 'find-file
"f" 'wpc/find-file
"-" 'dired-up-directory)
(general-add-hook 'dired-mode-hook (list (enable dired-hide-details-mode)
#'auto-revert-mode))
(provide 'wpc-dired)
;;; dired.el ends here

View file

@ -0,0 +1,18 @@
;;; docker.el --- Docker preferences -*- lexical-binding: t -*-
;; Author: William Carroll <wpcarro@gmail.com>
;;; Commentary:
;; My Docker preferences and configuration
;;; Code:
(use-package docker
:config
(setenv "DOCKER_TLS_VERIFY" "1")
(setenv "DOCKER_HOST" "tcp://10.11.12.13:2376")
(setenv "DOCKER_MACHINE_NAME" "name"))
(use-package dockerfile-mode)
(provide 'wpc-docker)
;;; docker.el ends here

View file

@ -0,0 +1,14 @@
;;; flycheck.el --- My flycheck configuration -*- lexical-binding: t -*-
;; Author: William Carroll <wpcarro@gmail.com>
;;; Commentary:
;; Hosts my Flycheck preferences
;;; Code:
(use-package flycheck
:config
(global-flycheck-mode))
(provide 'wpc-flycheck)
;;; flycheck.el ends here

View file

@ -0,0 +1,17 @@
;;; git.el --- My version control preferences -*- lexical-binding: t -*-
;; Author: William Carroll <wpcarro@gmail.com>
;;; Commentary:
;; Things related to git, magit, etc belong here
;;; Code:
(use-package git-timemachine)
(use-package magit)
(use-package magit-gh-pulls
:ghook ('magit-mode-hook #'turn-on-magit-gh-pulls))
(provide 'wpc-git)
;;; git.el ends here

View file

@ -0,0 +1,32 @@
;;; haskell.el --- My Haskell preferences -*- lexical-binding: t -*-
;; Author: William Carroll <wpcarro@gmail.com>
;;; Commentary:
;; Hosts my Haskell development preferences
;;; Code:
;; Haskell support
(use-package intero
:config
(intero-global-mode 1))
;; text objects for Haskell
(quelpa '(evil-text-objects-haskell
:fetcher github
:repo "urbint/evil-text-objects-haskell"))
(require 'evil-text-objects-haskell)
(use-package haskell-mode
:gfhook #'evil-text-objects-haskell/install
:after (intero evil-text-objects-haskell)
:config
(flycheck-add-next-checker 'intero 'haskell-hlint)
(let ((m-symbols
'(("`mappend`" . "")
("<>" . ""))))
(dolist (item m-symbols) (add-to-list 'haskell-font-lock-symbols-alist item)))
(setq haskell-font-lock-symbols t))
(provide 'wpc-haskell)
;;; haskell.el ends here

View file

@ -0,0 +1,87 @@
;;; javascript.el --- My Javascript preferences -*- lexical-binding: t -*-
;; Author: William Carroll <wpcarro@gmail.com>
;;; Commentary:
;; This module hosts my Javascript tooling preferences
;;; Code:
;; Helper functions
(defun wpc/indium-setup (url)
"Setup the indium environment using URL."
(indium-eval (format "window.dispatchEvent(new CustomEvent('patch', {detail: {url: %s}}" url)))
(defun wpc/insert-flow-annotation ()
"Insert a flow type annotation to the beginning of a buffer."
(interactive)
(save-excursion
(goto-char (point-min))
(insert "// @flow\n")))
;; ;; javascript
;; (evil-leader/set-key-for-mode 'rjsx-mode "t" #'wpc/toggle-between-js-test-and-module)
;; (evil-leader/set-key-for-mode 'rjsx-mode "x" #'wpc/toggle-between-js-component-and-store)
;; (evil-leader/set-key-for-mode 'rjsx-mode "u" #'wpc/jump-to-parent-file)
;; javascript setup
(use-package indium
:hook (indium-update-script-source . wpc/indium-setup))
;; javascript text objects
(quelpa '(evil-text-objects-javascript
:fetcher github
:repo "urbint/evil-text-objects-javascript"))
(require 'evil-text-objects-javascript)
;; Flow for Javascript
(use-package flow-minor-mode
:hook js2-mode
:requires evil-leader
:config
(evil-leader/set-key-for-mode 'rjsx-mode "F" #'wpc/insert-flow-annotation))
(use-package company-flow
:after (company)
:hook (rjsx-mode . wpc/set-flow-executable)
:config
(add-to-list 'company-flow-modes 'rjsx-mode)
(add-to-list 'company-backends 'company-flow))
(use-package flycheck-flow
:after (flycheck)
:config
(flycheck-add-mode 'javascript-flow 'rjsx-mode)
(flycheck-add-mode 'javascript-flow 'flow-minor-mode)
(flycheck-add-mode 'javascript-eslint 'flow-minor-mode)
(flycheck-add-next-checker 'javascript-flow 'javascript-eslint))
;; front-end indentation
(setq js-indent-level 2
css-indent-offset 2)
;; eslint integration with flycheck
(setq flycheck-javascript-eslint-executable "~/urbint/grid-front-end/node_modules/.bin/eslint")
;; JS autoformatting
(use-package prettier-js
:after (rjsx-mode)
:ghook ('(rjsx-mode-hook
js2-mode-hook
json-mode-hook
css-mode-hook)))
;; JSX highlighting
(use-package rjsx-mode
:after (evil-text-objects-javascript)
:general
(general-unbind rjsx-mode-map "<" ">" "C-d")
(n rjsx-mode-map
"K" 'flow-minor-type-at-pos)
:gfhook #'evil-text-objects-javascript/install
:mode "\\.js\\'"
:config
(setq js2-mode-show-parse-errors nil
js2-mode-show-strict-warnings nil))
(provide 'wpc-javascript)
;;; wpc-javascript.el ends here

View file

@ -0,0 +1,131 @@
;;; keybindings.el --- My Evil preferences -*- lexical-binding: t -*-
;; Author: William Carroll <wpcarro@gmail.com>
;;; Commentary:
;; This module hosts my Evil preferences
;;; Code:
(quelpa
'(general
:repo "noctuid/general.el"
:fetcher github))
(general-evil-setup t)
;; vim...
(use-package evil
:general
(m
"RET" 'evil-goto-line
"H" 'evil-first-non-blank
"L" 'evil-end-of-line
"-" 'dired-jump
"sl" 'wpc/evil-window-vsplit-right
"sh" 'evil-window-vsplit
"sk" 'evil-window-split
"sj" 'wpc/evil-window-split-down
"sj" 'wpc/evil-window-split-down)
(general-unbind m "M-." "C-p")
(general-unbind n "s" "M-.")
(general-unbind i "C-d" "C-a" "C-e" "C-n" "C-p" "C-k")
(evil-ex-map
"M-p" 'previous-complete-history-element
"M-n" 'next-complete-history-element)
:init
(setq evil-want-integration nil)
:config
(setq evil-symbol-word-search t)
(evil-mode 1))
;; evil keybindings
(use-package evil-collection
:after evil
:config
(evil-collection-init))
;; expose a leader key
(use-package evil-leader
:after (evil counsel)
:config
(global-evil-leader-mode)
(evil-leader/set-leader "<SPC>")
;; global
(evil-leader/set-key
"i" #'counsel-semantic-or-imenu
"j" #'jump-to-register
"h" #'help
"a" #'wpc/toggle-terminal
"p" #'counsel-git-grep
"P" #'counsel-git-grep
"f" #'wpc/find-file
"N" #'smerge-next
"P" #'smerge-prev
"s" #'slack-send-code-snippet
"S" #'slack-select-unread-rooms
"b" #'ivy-switch-buffer
"gs" #'magit-status
"es" #'wpc/create-snippet
"ev" #'wpc/edit-init-el
"B" #'magit-blame
"w" #'save-buffer
"x" #'evil-save-and-close
"W" #'save-all-buffers
"r" #'wpc/evil-replace-under-point
))
;; create comments easily
(use-package evil-commentary
:after (evil)
:config
(evil-commentary-mode))
;; evil surround
(use-package evil-surround
:after (evil)
:config
(global-evil-surround-mode 1))
;; Custom minor mode that ensures that my kbds are available no matter which major
;; or minor modes are active.
(add-hook 'after-load-functions #'ensure-william-carroll-kbds)
(defun ensure-william-carroll-kbds (_ignore)
"Try to ensure that my keybindings retain priority over other minor modes."
(unless (eq (caar minor-mode-map-alist) 'wpc/kbds-minor-mode)
(let ((mykbds (assq 'wpc/kbds-minor-mode minor-mode-map-alist)))
(assq-delete-all 'wpc/kbds-minor-mode minor-mode-map-alist)
(add-to-list 'minor-mode-map-alist mykbds))))
(defvar wpc/kbds
(let ((map (make-sparse-keymap)))
(bind-keys :map map
("M-q" . delete-window)
("C-x C-;" . comment-or-uncomment-region)
("C-x h" . help)
("<s-return>" . toggle-frame-fullscreen)
("<down-mouse-1>" . ffap-other-window)
("M-h" . wpc/tmux-emacs-windmove-left)
("M-l" . wpc/tmux-emacs-windmove-right)
("M-k" . wpc/tmux-emacs-windmove-up)
("M-j" . wpc/tmux-emacs-windmove-down)
("M--" . split-window-below)
("M-\\" . split-window-right)
("M-q" . delete-window))
map)
"William Carroll's keybindings that should have the highest precedence.")
(define-minor-mode wpc/kbds-minor-mode
"A minor mode so that my key settings override annoying major modes."
:init-value t
:lighter " wpc/kbds"
:keymap wpc/kbds)
;; allow jk to escape
(use-package key-chord
:after (evil)
:config
(key-chord-mode 1)
(key-chord-define evil-insert-state-map "jk" 'evil-normal-state))
(provide 'wpc-keybindings)
;;; wpc-keybindings.el ends here

View file

@ -0,0 +1,37 @@
;;; lisp.el --- Generic LISP preferences -*- lexical-binding: t -*-
;; Author: William Carroll <wpcarro@gmail.com>
;;; Commentary:
;; This hosts things like Paredit settings
;;; Code:
(defconst wpc/lisp-mode-hooks
'(emacs-lisp-mode-hook
clojure-mode-hook
clojurescript-mode-hook))
;; Elisp
(use-package elisp-slime-nav
:ghook
'emacs-lisp-mode
'ielm-mode)
;; paredit LISP editing
(use-package paredit
:general
(general-unbind paredit-mode-map "C-j" "M-q")
(n paredit-mode-map
">)" 'paredit-forward-slurp-sexp
"<(" 'paredit-backward-slurp-sexp
"<)" 'paredit-forward-barf-sexp
">(" 'paredit-backward-barf-sexp
">e" 'paredit-move-forward
"<e" 'paredit-move-backward
">f" 'paredit-move-backward
"<f" 'paredit-move-backward
"go" 'paredit-raise-sexp)
:ghook (wpc/lisp-mode-hooks #'enable-paredit-mode))
(provide 'wpc-lisp)
;;; lisp.el ends here

View file

@ -0,0 +1,155 @@
;;; misc.el --- Hosting miscellaneous configuration -*- lexical-binding: t -*-
;; Author: William Carroll <wpcarro@gmail.com>
;;; Commentary:
;; This is the home of any configuration that couldn't find a better home.
;;; Code:
;; disable custom variable entries from being written to ~/.emacs.d/init.el
(setq custom-file "~/.emacs.d/custom.el")
(load custom-file 'noerror)
;; transparently edit compressed files
(auto-compression-mode t)
;; change emacs prompts from "yes or no" -> "y or n"
(fset 'yes-or-no-p 'y-or-n-p)
;; open photos in Emacs
(auto-image-file-mode 1)
;; disable line-wrapping
(setq-default truncate-lines 1)
;; shell file indentation
(setq sh-basic-offset 2)
(setq sh-indentation 2)
;; create file bookmarks
(set-register ?e '(file . "~/.emacs.d/wpc/packages"))
(set-register ?u '(file . "~/urbint"))
(set-register ?d '(file . "~/dotfiles"))
(set-register ?D '(file . "~/Dropbox"))
(set-register ?o '(file . "~/Dropbox/org/"))
(set-register ?c '(file . "~/Dropbox/org/chains.org"))
(set-register ?b '(file . "~/Dropbox/org/backlog.org"))
(set-register ?p '(file . "~/urbint/grid-front-end"))
;; persist history etc b/w Emacs sessions
(setq desktop-save 'if-exists)
(desktop-save-mode 1)
(setq desktop-globals-to-save
(append '((extended-command-history . 30)
(file-name-history . 100)
(grep-history . 30)
(compile-history . 30)
(minibuffer-history . 50)
(query-replace-history . 60)
(read-expression-history . 60)
(regexp-history . 60)
(regexp-search-ring . 20)
(search-ring . 20)
(shell-command-history . 50)
tags-file-name
register-alist)))
;; config Emacs to use $PATH values
(use-package exec-path-from-shell
:if (memq window-system '(mac ns))
:config
(exec-path-from-shell-initialize))
;; Emacs autosave, backup, interlocking files
(setq auto-save-default nil
make-backup-files nil
create-lockfiles nil)
;; ensure code wraps at 80 characters by default
(setq fill-column 80)
(put 'narrow-to-region 'disabled nil)
;; trim whitespace on save
(add-hook 'before-save-hook #'delete-trailing-whitespace)
;; use tabs instead of spaces
(setq-default indent-tabs-mode nil)
;; automatically follow symlinks
(setq vc-follow-symlinks t)
;; fullscreen settings
(setq ns-use-native-fullscreen nil)
;; auto-close parens, brackets, quotes
(electric-pair-mode 1)
(use-package oauth2
:init
;; necessary to remove warnings: https://emacs.stackexchange.com/questions/37036/where-are-these-variables-defined-bytecomp-warnings
(defvar url-http-extra-headers ())
(defvar oauth--token-data ())
(defvar url-callback-function ())
(defvar url-callback-arguments ()))
(use-package smex
:general
("M-x" 'smex)
:ghook ('ido-setup-hook #'wpc/bind-ido-keys)
:config
(smex-initialize))
(use-package flx-ido
:after (smex)
:config
(flx-ido-mode 1)
(setq ido-enable-flex-matching t
ido-use-faces nil))
(use-package swiper
:general
("C-s" 'swiper
"C-r" 'swiper))
(use-package yasnippet
:config
(yas-global-mode 1))
(use-package ace-window
:general
("C-x o" 'ace-window)
:config
(setq aw-keys '(?a ?s ?d ?f ?j ?k ?k ?\;)))
(use-package projectile
:config
(projectile-mode t))
(use-package counsel
:config
(defun wpc/counsel-git-grep ()
(interactive)
(let ((maybe-symbol (wpc/string-symbol-at-point)))
(if (string= maybe-symbol "nil")
(counsel-git-grep)
(counsel-git-grep nil maybe-symbol)))))
;; projectile intergration with ivy
(use-package counsel-projectile)
;; search Google, Stackoverflow from within Emacs
(use-package engine-mode
:config
(defengine google
"http://www.google.com/search?ie=utf-8&oe=utf-8&q=%s"
:keybinding "g")
(defengine stack-overflow
"https://stackoverflow.com/search?q=%s"
:keybinding "s"))
(use-package markdown-mode)
(use-package yaml-mode)
(provide 'wpc-misc)
;;; misc.el ends here

View file

@ -0,0 +1,45 @@
;;; org.el --- My org preferences -*- lexical-binding: t -*-
;; Author: William Carroll <wpcarro@gmail.com>
;;; Commentary:
;; Hosts my org mode preferences
;;; Code:
;; Griffin's org clubhouse integration
;;(load-file "~/.emacs.d/vendor/org-clubhouse.el")
;;(setq org-clubhouse-auth-token (wpc/read-file-as-string "~/dotfiles/configs/secrets/clubhouse_token.txt")
;; org-clubhouse-team-name "urbint")
;;(add-hook 'org-mode-hook #'org-clubhouse-mode)
(use-package org
:ghook (nil (disable linum-mode))
:general
(:prefix "C-c"
"l" 'org-store-link
"a" 'org-agenda
"c" 'org-capture)
:preface
(defconst wpc-org-directory
"~/Dropbox/org")
(defconst ub-org-directory
"~/Dropbox/sprint-planning-staging")
(defun wpc/org-file (file)
(f-join wpc-org-directory (f-swap-ext file "org")))
(defun ub/org-file (file)
(f-join ub-org-directory (f-swap-ext file "org")))
:config
(setq org-default-notes-file (wpc/org-file "notes"))
(setq org-log-done 'time)
(setq org-agenda-files (list (wpc/org-file "work")
(wpc/org-file "personal")))
(setq org-capture-templates
`(("t" "Todo" entry (file+heading ,(ub/org-file "index") "Ideas")
"* TODO %?\n %i"))))
(use-package org-bullets
:after (org)
:ghook ('org-mode-hook (enable org-bullets-mode)))
(provide 'wpc-org)
;;; org.el ends here

View file

@ -0,0 +1,32 @@
;;; package.el --- My package configuration -*- lexical-binding: t -*-
;; Author: William Carroll <wpcarro@gmail.com>
;;; Commentary:
;; This module hosts all of the settings required to work with ELPA,
;; MELPA, QUELPA, and co.
;;; Code:
(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
(add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/") t)
(package-initialize)
(if (require 'quelpa nil t)
(quelpa-self-upgrade)
(with-temp-buffer
(url-insert-file-contents "https://raw.github.com/quelpa/quelpa/master/bootstrap.el")
(eval-buffer)))
(require 'use-package)
(setq use-package-always-ensure t)
;; Remove this line once general integration with use-package calls
;; with-eval-after-load 'use-package-core instead of 'use-package
(require 'general)
(add-to-list 'load-path "~/.emacs.d/vendor/")
(add-to-list 'load-path "~/.emacs.d/wpc/")
(add-to-list 'load-path "~/.emacs.d/wpc/packages")
(provide 'wpc-package)
;;; package.el ends here

View file

@ -0,0 +1,65 @@
;;; slack.el --- Slack settings -*- lexical-binding: t -*-
;; Author: William Carroll <wpcarro@gmail.com>
;;; Commentary:
;; Wrangling the Slack client in Emacs
;;; Code:
;; Griffin's Slack plugin
;;(defconst slack/token (wpc/read-file-as-string "~/dotfiles/configs/secrets/slack_token.txt"))
;;(defconst wpc/slack-client-secret (wpc/read-file-as-string "~/dotfiles/configs/secrets/slack-client-secret"))
(defconst wpc/slack-client-secret "uncomment above line one day")
(load-file "~/.emacs.d/vendor/slack-snippets.el")
;; Slack client
(use-package slack
:general
(n slack-info-mode-map
:prefix ","
"u" 'slack-room-update-messages)
(n slack-mode-map
:prefix ","
"c" 'slack-buffer-kill
"ra" 'slack-message-add-reaction
"rr" 'slack-message-remove-reaction
"rs" 'slack-message-show-reaction-users
"pl" 'slack-room-pins-list
"pa" 'slack-message-pins-add
"pr" 'slack-message-pins-remove
"mm" 'slack-message-write-another-buffer
"me" 'slack-message-edit
"md" 'slack-message-delete
"u" 'slack-room-update-messages
"2" 'slack-message-embed-mention
"3" 'slack-message-embed-channel)
(n slack-mode-map
"C-n" 'slack-buffer-goto-next-message
"C-p" 'slack-buffer-goto-prev-message)
(n slack-edit-message-mode-map
:prefix ","
"k" 'slack-message-cancel-edit
"s" 'slack-message-send-from-buffer
"2" 'slack-message-embed-mention
"3" 'slack-message-embed-channel)
:commands (slack-start)
:init
(setq slack-buffer-emojify t) ;; if you want to enable emoji, default nil
(setq slack-prefer-current-team t)
:config
(add-hook 'slack-mode-hook (disable company-mode))
(setq slack-buffer-function #'switch-to-buffer)
(slack-register-team
:name "urbint"
:default t
:client-id "william@urbint.com"
:client-secret wpc/slack-client-secret
:token slack-token
:subscribed-channels '(dev dev_questions general random recruiting)
:full-and-display-names t))
(use-package circe)
(use-package emojify)
(provide 'wpc-slack)
;;; wpc-slack.el ends here

View file

@ -0,0 +1,19 @@
;;; terminal.el --- My cobbled together terminal -*- lexical-binding: t -*-
;; Author: William Carroll <wpcarro@gmail.com>
;;; Commentary:
;; My attempts at creating a sane Emacs terminal
;;; Code:
(setq wpc/terminal-name "wpc/terminal")
;; 256 color support in term (instead of 8)
(use-package xterm-color)
(use-package term
:config
(setq explicit-shell-file-name "/bin/zsh"))
(provide 'wpc-terminal)
;;; terminal.el ends here

View file

@ -0,0 +1,136 @@
;;; ui.el --- Any related to the UI/UX goes here -*- lexical-binding: t -*-
;; Author: William Carroll <wpcarro@gmail.com>
;;; Commentary:
;; Hosts font settings, scrolling, color schemes.
;;; Code:
;; increase line height
(setq-default line-spacing 4)
;; change font
(add-to-list 'default-frame-alist '(font . "Operator Mono-10"))
;; smooth scrolling settings
(setq scroll-step 1
scroll-conservatively 10000)
;; theme mgt
(use-package cycle-themes
:after (doom-themes)
:config
;; NOTE: may want to use `defconst' here
(setq wpc/doom-themes
(->> (custom-available-themes)
(-map #'symbol-name)
(-filter (-partial #'s-starts-with? "doom-"))
(-map #'intern)))
(setq cycle-themes-theme-list wpc/doom-themes))
;; clean up modeline
(use-package diminish
:after (yasnippet ivy which-key)
:config
(diminish 'evil-commentary-mode)
(diminish 'flycheck-mode "Flycheck")
(diminish 'company-mode "Company")
(diminish 'auto-revert-mode)
(diminish 'which-key-mode)
(diminish 'yas-minor-mode)
(diminish 'ivy-mode))
;; disable startup screen
(setq inhibit-startup-screen t)
;; disable toolbar
(tool-bar-mode -1)
;; enable line numbers
(general-add-hook '(prog-mode-hook
text-mode-hook
conf-mode-hook)
(enable linum-mode))
;;(add-hook 'after-init-hook (lambda () (set-face-foreground 'linum "#da5468")))
;; set default buffer for Emacs
(setq initial-buffer-choice "~/urbint/grid-front-end")
;; transparent Emacs
(set-frame-parameter (selected-frame) 'alpha '(100 . 100))
(add-to-list 'default-frame-alist '(alpha . (100 . 100)))
;; premium Emacs themes
(use-package doom-themes
:config
(setq doom-themes-enable-bold t
doom-themes-enable-italic t)
(load-theme 'doom-solarized-light t)
(doom-themes-visual-bell-config)
(doom-themes-org-config))
;; kbd discovery
(use-package which-key
:config
(setq which-key-idle-delay 0.25)
(which-key-mode))
;; completion framework
(use-package ivy
:config
(ivy-mode t))
;; icons for Ivy
(use-package all-the-icons-ivy
:after (ivy)
:config
(all-the-icons-ivy-setup))
;; disable menubar
(menu-bar-mode -1)
(when (string-equal system-type "darwin")
(setq ns-auto-hide-menu-bar t))
;; highlight lines that are over 100 characters long
(use-package whitespace
:config
(setq whitespace-line-column 100)
(setq whitespace-style '(face lines-tail)))
;; disable GUI scrollbars
(when (display-graphic-p)
(scroll-bar-mode -1))
;; rebalance emacs windows after splits are created
(defadvice split-window-below (after rebalance-windows activate)
(balance-windows))
(defadvice split-window-right (after rebalance-windows activate)
(balance-windows))
(defadvice delete-window (after rebalance-window activate)
(balance-windows))
;; dirname/filename instead of filename<dirname>
(setq uniquify-buffer-name-style 'forward)
;; highlight matching parens, brackets, etc
(show-paren-mode 1)
;; GUI alerts in emacs
(use-package alert
:commands (alert)
:config
(setq alert-default-style 'notifier))
;; focus mode
(quelpa '(zen-mode
:fetcher github
:repo "aki237/zen-mode"))
(require 'zen-mode)
;; focus mode
(use-package writeroom-mode)
(provide 'wpc-ui)
;;; ui.el ends here