From 457b6895fa8943b3f32f709dd33d5cbbd4705310 Mon Sep 17 00:00:00 2001
From: David Li
Date: Mon, 16 May 2016 23:19:49 -0400
Subject: Update Emacs config
- More concise evil-visual-line stuff
- JS2-mode
---
init.el | 64 +++++++++++++++++++++++++++++++++++++---------------------------
1 file changed, 37 insertions(+), 27 deletions(-)
diff --git a/init.el b/init.el
index 934b452..3aac958 100644
--- a/init.el
+++ b/init.el
@@ -2,6 +2,7 @@
;;; Commentary:
;;; Code:
+
(require 'package)
(push '("marmalade" . "http://marmalade-repo.org/packages/")
package-archives )
@@ -18,6 +19,8 @@
(global-linum-mode 1)
(add-to-list 'custom-theme-load-path "~/.emacs.d/themes/")
(set-frame-font (font-spec :family "Input" :size 10.5))
+(if (display-graphic-p)
+ (load-theme 'cyberpunk t))
;; (defun set-80-editing-columns ()
;; "Set the right window margin so the editable space is only 80 columns."
@@ -43,6 +46,7 @@
;; ido
(require 'ido)
(ido-mode t)
+(setq ido-ignore-extensions t)
(require 'ido-vertical-mode)
(ido-vertical-mode 1)
@@ -76,33 +80,20 @@ This functions should be added to the hooks of major modes for programming."
(evil-mode 1)
(setq-default evil-cross-lines t)
;; http://stackoverflow.com/a/32660401/262727
-(defun evil-next-line--check-visual-line-mode (orig-fun &rest args)
- (if visual-line-mode
- (apply 'evil-next-visual-line args)
- (apply orig-fun args)))
-
-(advice-add 'evil-next-line :around 'evil-next-line--check-visual-line-mode)
-
-(defun evil-previous-line--check-visual-line-mode (orig-fun &rest args)
- (if visual-line-mode
- (apply 'evil-previous-visual-line args)
- (apply orig-fun args)))
-
-(advice-add 'evil-previous-line :around 'evil-previous-line--check-visual-line-mode)
-
-(defun evil-beginning-of-line--check-visual-line-mode (orig-fun &rest args)
- (if visual-line-mode
- (apply 'evil-beginning-of-visual-line args)
- (apply orig-fun args)))
-(advice-add 'evil-beginning-of-line :around 'evil-beginning-of-line--check-visual-line-mode)
+(eval-when-compile (require 'cl))
+(defun evil--check-visual-line-mode (visual-fun)
+ "Use VISUAL-FUN if in 'visual-line-mode', or ORIG-FUN otherwise (optional ARGS)."
+ (lexical-let ((visual-fun visual-fun))
+ #'(lambda(orig-fun &rest args)
+ (if visual-line-mode
+ (apply visual-fun args)
+ (apply orig-fun args)))))
-(defun evil-end-of-line--check-visual-line-mode (orig-fun &rest args)
- (if visual-line-mode
- (apply 'evil-end-of-visual-line args)
- (apply orig-fun args)))
-
-(advice-add 'evil-end-of-line :around 'evil-end-of-line--check-visual-line-mode)
+(advice-add 'evil-next-line :around (evil--check-visual-line-mode 'evil-next-visual-line))
+(advice-add 'evil-previous-line :around (evil--check-visual-line-mode 'evil-previous-visual-line))
+(advice-add 'evil-beginning-of-line :around (evil--check-visual-line-mode 'evil-beginning-of-visual-line))
+(advice-add 'evil-end-of-line :around (evil--check-visual-line-mode 'evil-end-of-visual-line))
(require 'evil-little-word)
(define-key evil-motion-state-map (kbd "w") 'evil-forward-little-word-begin)
@@ -151,6 +142,22 @@ This functions should be added to the hooks of major modes for programming."
(unless (getenv "RUST_SRC_PATH")
(setenv "RUST_SRC_PATH" (expand-file-name "~/Downloads/rustc-nightly/src")))
+;; javascript: js2
+
+(defun my/use-eslint-from-node-modules ()
+ "Use local NPM eslint when available."
+ (let* ((root (locate-dominating-file
+ (or (buffer-file-name) default-directory)
+ "node_modules"))
+ (eslint (and root
+ (expand-file-name "node_modules/eslint/bin/eslint.js"
+ root))))
+ (when (and eslint (file-executable-p eslint))
+ (setq-local flycheck-javascript-eslint-executable eslint))))
+(add-hook 'flycheck-mode-hook #'my/use-eslint-from-node-modules)
+
+(add-to-list 'auto-mode-alist `(,(rx ".js" string-end) . js2-mode))
+
;; typescript: tide
(add-hook 'typescript-mode-hook
@@ -158,7 +165,6 @@ This functions should be added to the hooks of major modes for programming."
(tide-setup)
(flycheck-mode +1)
(setq flycheck-check-syntax-automatically '(save mode-enabled))
- (eldoc-mode +1)
(company-mode-on)))
;; aligns annotation to the right hand side
@@ -180,11 +186,15 @@ This functions should be added to the hooks of major modes for programming."
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(company-racer-executable "~/.cargo/bin/racer")
- '(custom-enabled-themes (quote (cyberpunk)))
+ '(completion-ignored-extensions
+ (quote
+ (".o" "~" ".bin" ".lbin" ".so" ".a" ".ln" ".blg" ".bbl" ".elc" ".lof" ".glo" ".idx" ".lot" ".svn/" ".hg/" ".git/" ".bzr/" "CVS/" "_darcs/" "_MTN/" ".fmt" ".tfm" ".class" ".fas" ".lib" ".mem" ".x86f" ".sparcf" ".dfsl" ".pfsl" ".d64fsl" ".p64fsl" ".lx64fsl" ".lx32fsl" ".dx64fsl" ".dx32fsl" ".fx64fsl" ".fx32fsl" ".sx64fsl" ".sx32fsl" ".wx64fsl" ".wx32fsl" ".fasl" ".ufsl" ".fsl" ".dxl" ".lo" ".la" ".gmo" ".mo" ".toc" ".aux" ".cp" ".fn" ".ky" ".pg" ".tp" ".vr" ".cps" ".fns" ".kys" ".pgs" ".tps" ".vrs" ".pyc" ".pyo" ".log")))
'(custom-safe-themes
(quote
("71ecffba18621354a1be303687f33b84788e13f40141580fa81e7840752d31bf" "561ba4316ba42fe75bc07a907647caa55fc883749ee4f8f280a29516525fc9e8" "a81bc918eceaee124247648fc9682caddd713897d7fd1398856a5b61a592cb62" default)))
'(doc-view-continuous t)
+ '(ido-auto-merge-work-directories-length -1)
+ '(js-indent-level 2)
'(js2-strict-trailing-comma-warning nil))
;; custom variables
--
cgit v1.2.3