Last active
May 11, 2020 08:04
-
-
Save sprusr/f37ade924855475f050ae38bbfae860b to your computer and use it in GitHub Desktop.
init.el
This file contains 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
auto-save-list | |
custom.el | |
elpa | |
eshell | |
projectile-bookmarks.eld | |
quelpa | |
transient | |
url |
This file contains 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 --- config of sprusr | |
;;; Commentary: | |
;; This config is written to be as close to vanilla Emacs as possible | |
;; while having modern editor features that I can't live without. | |
;;; Code: | |
(eval-when-compile | |
;; Init package manager | |
(package-initialize) | |
(add-to-list 'package-archives | |
'("melpa" . "https://melpa.org/packages/")) | |
;; Don't update quelpa melpa on init | |
(defvar quelpa-update-melpa-p nil) | |
;; Install quelpa | |
(unless (package-installed-p 'quelpa) | |
(with-temp-buffer | |
(url-insert-file-contents | |
"https://github.com/quelpa/quelpa/raw/master/quelpa.el") | |
(eval-buffer) | |
(quelpa-self-upgrade))) | |
;; Install use-package dependencies | |
(quelpa | |
'(quelpa-use-package | |
:fetcher github | |
:repo "quelpa/quelpa-use-package")) | |
(quelpa 'diminish) | |
(quelpa 'exec-path-from-shell) | |
;; Require use-package dependencies | |
(require 'quelpa-use-package) | |
(require 'diminish)) | |
;; Get correct PATH for macOS GUI Emacs | |
(when (string-equal system-type "darwin") | |
(exec-path-from-shell-initialize)) | |
;; Icons for neotreec | |
(use-package all-the-icons | |
:ensure t) | |
;; Python highlighting | |
(use-package anaconda-mode | |
:diminish | |
:ensure t | |
:hook (python-mode)) | |
;; Completion framework | |
(use-package company | |
:diminish company-mode | |
:config | |
(global-company-mode 1) | |
:ensure t) | |
;; Golang completion | |
(use-package company-go | |
:ensure t | |
:hook (go-mode) | |
:config | |
(add-to-list 'company-backends 'company-go)) | |
;; Python completion | |
(use-package company-anaconda | |
:ensure t | |
:config | |
(add-to-list 'company-backends 'company-anaconda)) | |
;; Use ivy completion for everything | |
(use-package counsel | |
:diminish counsel-mode | |
:config (counsel-mode 1) | |
:ensure t) | |
;; Emacs built-in GUI config | |
(use-package custom | |
:custom | |
(custom-file (expand-file-name "custom.el" user-emacs-directory) | |
"Make custom add stuff to its own file.") | |
:config | |
(load custom-file 'noerror)) | |
(use-package elfeed | |
:ensure t | |
:custom | |
(elfeed-feeds '() "Feeds to be used with elfeed.") | |
(shr-inhibit-images t "Disable images in elfeed.")) | |
;; General Emacs config | |
(use-package emacs | |
:custom | |
(package-enable-at-startup nil) | |
(mac-option-key-is-meta nil) | |
(mac-command-key-is-meta t) | |
(mac-command-modifier 'meta) | |
(mac-option-modifier 'none) | |
(ring-bell-function 'ignore) | |
(backup-directory-alist `(("." . "~/.saves"))) | |
(indent-tabs-mode nil "Don't convert spaces to tabs at tab-width") | |
:config | |
;; default frame | |
(add-to-list 'default-frame-alist '(width . 200)) | |
(add-to-list 'default-frame-alist '(height . 100)) | |
(add-to-list 'default-frame-alist '(font . "Monospace-14")) | |
;; hide the GUI toolbar | |
(tool-bar-mode 0) | |
(toggle-scroll-bar 0) | |
;; undo window layout changes | |
(when (fboundp 'winner-mode) | |
(winner-mode 1))) | |
;; Error checking on-the-fly | |
(use-package flycheck | |
:ensure t | |
:diminish | |
:init (global-flycheck-mode)) | |
;; Diffs in gutter | |
(use-package git-gutter | |
:ensure t) | |
;; Point gnutls to trustfile | |
(use-package gnutls | |
:config | |
(add-to-list 'gnutls-trustfiles "/usr/local/etc/openssl/cert.pem")) | |
;; Golang highlighting | |
(use-package go-mode | |
:ensure t | |
:mode "\\.go\\'") | |
;; Completion UI | |
(use-package ivy | |
:diminish ivy-mode | |
:config (ivy-mode 1) | |
:ensure t) | |
;; JavaScript highlighting | |
(use-package js2-mode | |
:ensure t | |
:mode ("\\.m?jsx?\\'" . js2-jsx-mode) | |
:interpreter ("node" . js2-jsx-mode) | |
:custom | |
(js2-mode-show-strict-warnings nil "Disable strict JS warnings.") | |
(js2-basic-offset 2)) | |
;; Git magic | |
(use-package magit | |
:commands (magit) | |
:ensure t) | |
;; Code minimap | |
(use-package minimap | |
:demand | |
:diminish minimap-mode | |
:bind ("C-c n" . minimap-mode) | |
:custom | |
(minimap-window-location 'right) | |
:ensure t) | |
;; File tree | |
(use-package neotree | |
:ensure t | |
:after (all-the-icons) | |
:bind (("C-c t" . neotree-toggle)) | |
:custom | |
(neo-theme | |
(if (display-graphic-p) 'icons 'arrow) | |
"Use icons and arrows for neotree.") | |
(neo-window-fixed-size nil "Allow neotree resize")) | |
;; Dark theme | |
(use-package night-owl-theme | |
:ensure t) | |
;; Jira in org-mode | |
(use-package org-jira | |
:ensure t) | |
;; Use macOS clipboard | |
(use-package pbcopy | |
:ensure t | |
:hook (dashboard-mode . (turn-on-pbcopy)) | |
:if (eq system-type 'darwin)) | |
;; Prettier for JS | |
(use-package prettier-js | |
:ensure t) | |
;; Introduce concept of projects | |
(use-package projectile | |
:after (ivy) | |
:ensure t | |
:config | |
(define-key projectile-mode-map (kbd "s-p") 'projectile-command-map) | |
(define-key projectile-mode-map (kbd "C-c p") | |
'projectile-command-map) | |
(projectile-mode +1) | |
:custom | |
(projectile-project-search-path '("~/code") | |
"Projectile project directories") | |
(projectile-completion-system 'ivy "Projectile completion system") | |
:diminish) | |
;; Reveal in finder for current buffer | |
(use-package reveal-in-osx-finder | |
:bind ("C-c z" . reveal-in-osx-finder) | |
:ensure t | |
:if (eq system-type 'darwin)) | |
;; Does what it says | |
(use-package scss-mode | |
:ensure t | |
:mode ("\\.scssm?\\'" . scss-mode) | |
:custom | |
(css-indent-offset 2 "CSS indent size")) | |
;; Spotify client | |
(use-package spotify | |
:quelpa (spotify | |
:fetcher github | |
:repo "jkdufair/spotify.el" | |
:branch "feature/melpa") | |
:bind-keymap ("C-c ." . spotify-command-map)) | |
;; Telegram client | |
(use-package telega | |
:commands (telega) | |
:defer t | |
:ensure t) | |
;; TypeScript completion | |
(use-package tide | |
:demand t | |
:ensure t | |
:after (typescript-mode web-mode company flycheck) | |
:hook ((typescript-mode . tide-setup) | |
(typescript-mode . tide-hl-identifier-mode) | |
(web-mode . (lambda () | |
(when (string-equal "tsx" (file-name-extension | |
buffer-file-name)) | |
(tide-setup)))) | |
(web-mode . (lambda () | |
(when (string-equal "tsx" (file-name-extension | |
buffer-file-name)) | |
(tide-hl-identifier-mode))))) | |
:config (flycheck-add-mode 'typescript-tslint 'web-mode)) | |
;; TypeScript highlighting | |
(use-package typescript-mode | |
:demand t | |
:ensure t | |
:mode (("\\.ts\\'" . typescript-mode)) | |
:custom | |
(typescript-indent-level 2 "TypeScript indent size")) | |
;; J/TSX highlighting | |
(use-package web-mode | |
:demand t | |
:ensure t | |
:mode (("\\.tsx\\'" . web-mode) | |
("\\.jsx\\'" . web-mode)) | |
:custom | |
(web-mode-markup-indent-offset 2 "Web mode indent size")) | |
;; Shows keyboard shortcut suggestions | |
(use-package which-key | |
:config (which-key-mode 1) | |
:diminish which-key-mode | |
:ensure t) | |
(provide 'init) | |
;;; init.el ends here |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment