Created
December 1, 2020 14:54
-
-
Save al3rez/8a76b4e81b61827180ff547acaeee6ce to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;;; init.el --- Emacs init file | |
;; Author: Ian Y.E. Pan | |
;;; Commentary: | |
;;; A lightweight Emacs config containing only the essentials: shipped with a custom theme! | |
;;; Code: | |
(defvar file-name-handler-alist-original file-name-handler-alist) | |
(setq gc-cons-threshold most-positive-fixnum | |
gc-cons-percentage 0.6 | |
file-name-handler-alist nil | |
site-run-file nil) | |
(defvar ian/gc-cons-threshold 100000000) | |
(add-hook 'emacs-startup-hook ; hook run after loading init files | |
(lambda () | |
(setq gc-cons-threshold ian/gc-cons-threshold | |
gc-cons-percentage 0.1 | |
file-name-handler-alist file-name-handler-alist-original))) | |
(add-hook 'minibuffer-setup-hook (lambda () | |
(setq gc-cons-threshold (* ian/gc-cons-threshold 2)))) | |
(add-hook 'minibuffer-exit-hook (lambda () | |
(garbage-collect) | |
(setq gc-cons-threshold ian/gc-cons-threshold))) | |
(require 'package) | |
(add-to-list 'package-archives '("gnu" . "https://elpa.gnu.org/packages/")) | |
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/")) | |
(add-to-list 'package-archives '("org" . "https://orgmode.org/elpa/")) | |
(setq package-enable-at-startup nil) | |
(package-initialize) | |
;; Setting up the package manager. Install if missing. | |
(unless (package-installed-p 'use-package) | |
(package-refresh-contents) | |
(package-install 'use-package)) | |
(eval-and-compile | |
(setq use-package-always-ensure t)) | |
;; Load main config file "./config.org" | |
(require 'org) | |
(org-babel-load-file (expand-file-name (concat user-emacs-directory "config.org"))) | |
(provide 'init) | |
;;; init.el ends here | |
(setq hrs/default-font "SF Mono Powerline") | |
(setq hrs/default-font-size 12) | |
(setq hrs/current-font-size hrs/default-font-size) | |
(setq hrs/font-change-increment 1.1) | |
(defun hrs/font-code () | |
"Return a string representing the current font (like \"Inconsolata-14\")." | |
(concat hrs/default-font "-" (number-to-string hrs/current-font-size))) | |
(defun hrs/set-font-size () | |
"Set the font to `hrs/default-font' at `hrs/current-font-size'. | |
Set that for the current frame, and also make it the default for | |
other, future frames." | |
(let ((font-code (hrs/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 hrs/reset-font-size () | |
"Change font size back to `hrs/default-font-size'." | |
(interactive) | |
(setq hrs/current-font-size hrs/default-font-size) | |
(hrs/set-font-size)) | |
(defun hrs/increase-font-size () | |
"Increase current font size by a factor of `hrs/font-change-increment'." | |
(interactive) | |
(setq hrs/current-font-size | |
(ceiling (* hrs/current-font-size hrs/font-change-increment))) | |
(hrs/set-font-size)) | |
(defun hrs/decrease-font-size () | |
"Decrease current font size by a factor of `hrs/font-change-increment', down to a minimum size of 1." | |
(interactive) | |
(setq hrs/current-font-size | |
(max 1 | |
(floor (/ hrs/current-font-size hrs/font-change-increment)))) | |
(hrs/set-font-size)) | |
(define-key global-map (kbd "C-)") 'hrs/reset-font-size) | |
(define-key global-map (kbd "C-+") 'hrs/increase-font-size) | |
(define-key global-map (kbd "C-=") 'hrs/increase-font-size) | |
(define-key global-map (kbd "C-_") 'hrs/decrease-font-size) | |
(define-key global-map (kbd "C--") 'hrs/decrease-font-size) | |
(hrs/reset-font-size) | |
; Disable italic | |
(set-face-italic-p 'italic nil) | |
(set-face-italic 'font-lock-comment-face nil) | |
(use-package go-mode) | |
(use-package evil-leader) | |
(use-package ivy) | |
(use-package swiper) | |
(use-package counsel | |
:after (counsel-spotify)) | |
(use-package vterm ; when installing, evaluate exec-path first (else 'command not found') | |
:hook (vterm-mode . (lambda () | |
(setq-local global-hl-line-mode nil) | |
(setq-local line-spacing nil))) | |
:config | |
(define-key vterm-mode-map (kbd "C-l") #'(lambda () | |
(interactive) | |
(vterm-clear) | |
(vterm-clear-scrollback)))) | |
(use-package vterm-toggle | |
:after (projectile vterm evil) | |
:config | |
(setq vterm-toggle-fullscreen-p nil) | |
(setq vterm-toggle-scope 'projectile) | |
(with-eval-after-load 'evil | |
(evil-set-initial-state 'vterm-mode 'emacs)) | |
(global-set-key (kbd "C-`") #'vterm-toggle) | |
(global-set-key (kbd "s-j") #'vterm-toggle) | |
(add-to-list 'display-buffer-alist | |
'((lambda (bufname _) (with-current-buffer bufname (equal major-mode 'vterm-mode))) | |
(display-buffer-reuse-window display-buffer-at-bottom) | |
(reusable-frames . visible) | |
(window-height . 0.7)))) | |
(use-package emojify | |
:after (vterm) | |
:config | |
:hook (after-init . global-emojify-mode)) | |
(ivy-mode 1) | |
(setq ivy-use-virtual-buffers t) | |
(setq enable-recursive-minibuffers t) | |
;; enable this if you want `swiper' to use it | |
;; (setq search-default-mode #'char-fold-to-regexp) | |
(global-set-key "\C-s" 'swiper) | |
(global-set-key (kbd "C-c C-r") 'ivy-resume) | |
(global-set-key (kbd "<f6>") 'ivy-resume) | |
(global-set-key (kbd "M-x") 'counsel-M-x) | |
(global-set-key (kbd "<f1> f") 'counsel-describe-function) | |
(global-set-key (kbd "<f1> v") 'counsel-describe-variable) | |
(global-set-key (kbd "<f1> o") 'counsel-describe-symbol) | |
(global-set-key (kbd "<f1> l") 'counsel-find-library) | |
(global-set-key (kbd "<f2> i") 'counsel-info-lookup-symbol) | |
(global-set-key (kbd "<f2> u") 'counsel-unicode-char) | |
(global-set-key (kbd "C-c g") 'counsel-git) | |
(global-set-key (kbd "C-c j") 'counsel-git-grep) | |
(global-set-key (kbd "C-c k") 'counsel-ag) | |
(global-set-key (kbd "C-x l") 'counsel-locate) | |
(global-set-key (kbd "C-S-o") 'counsel-rhythmbox) | |
(define-key minibuffer-local-map (kbd "C-r") 'counsel-minibuffer-history) | |
(defun split-4-ways () | |
(interactive) | |
(delete-other-windows) | |
(split-window-right) | |
(split-window-below) | |
(windmove-right) | |
(split-window-below) | |
(windmove-left)) | |
(add-to-list 'default-frame-alist '(ns-transparent-titlebar . t)) | |
(setq counsel-spotify-client-id "cb86407f22624fffbc8e59a1a34e3ec5") | |
(setq counsel-spotify-client-secret "282e84062777410f9565a2d630e7e468") | |
(define-key evil-normal-state-map (kbd ",e") 'counsel-find-file) | |
(define-key evil-normal-state-map (kbd ",s") 'counsel-spotify-search-tracks-by-artist) | |
(setq magit-status-buffer-switch-function 'switch-to-buffer) | |
(setq magit-display-buffer-function 'magit-display-buffer-same-window-except-diff-v1) | |
(defun org-archive-done-tasks () | |
(interactive) | |
(org-map-entries 'org-archive-subtree "/DONE" 'file)) | |
(set-face-attribute 'fixed-pitch nil :family "Libre Baskerville" :height 150) | |
(set-face-attribute 'variable-pitch nil :family "Libre Baskerville" :height 150) | |
(defun close-all-buffers () | |
(interactive) | |
(mapc 'kill-buffer (buffer-list))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment