alex / emacs-config / dde9f36

~/.emacs.d/init.el Commits Diff Raw
(require 'package)
(setq package-enable-at-startup nil)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
;;(add-to-list 'package-archives '("marmalade" . "https://marmalade-repo.org/packages/"))
(add-to-list 'package-archives '("gnu" . "https://elpa.gnu.org/packages/"))
(package-initialize)

(unless (package-installed-p 'use-package)
  (package-refresh-contents)
  (package-install 'use-package))

(eval-when-compile
  (require 'use-package))
(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(ansi-color-faces-vector
   [default default default italic underline success warning error])
 '(company-idle-delay 0.1)
 '(company-show-numbers ''t)
 '(custom-enabled-themes '(wombat))
 '(inhibit-startup-screen t)
 '(package-selected-packages
   '(company-box company-capf company-tern lsp-ui company add-node-modules-path which-key yasnippet flycheck web-mode dumb-jump lsp-javascript company-mode lsp-mode prettier-js prettier-js-mode neotree rjsx-mode powerline evil evil-mode use-package)))
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 )

;; Line numbers in modern emacs
(when (version<= "26.0.50" emacs-version )
  (global-display-line-numbers-mode))

;; dumb-jump for "go to definition"
(use-package dumb-jump
  :ensure t
  :config
  (dumb-jump-mode))

;; neotree for project navigation
(use-package neotree
  :ensure t
  :bind (([f8] . neotree-toggle)))

;; powerline status bar
(use-package powerline
  :ensure t
  :config
  (powerline-default-theme))

(use-package web-mode
  :ensure t
  :config
  (add-to-list 'auto-mode-alist '("\\.jsx?$" . web-mode))) ;; auto-enable for js/jsx files

(use-package flycheck
  :ensure t
  :config
  (flycheck-add-mode 'javascript-eslint 'web-mode) ;; use eslint for jsx files
  (add-hook 'after-init-hook #'global-flycheck-mode) ;; enable in all buffers
  (setq-default flycheck-disabled-checkers
              (append flycheck-disabled-checkers
                      '(javascript-jshint json-jsonlist)))) ;; prefer eslint
(use-package prettier-js
  :ensure t
  :config
  (add-hook 'web-mode-hook  'prettier-js-mode))

(use-package lsp-mode
  :ensure t
  :config
  (add-hook 'web-mode-hook #'lsp))

(use-package yasnippet
  :ensure t)
(use-package which-key
  :ensure t
  :config
  (which-key-mode))

(use-package add-node-modules-path
  :ensure t
  :config
  (add-hook 'flycheck-mode-hook 'add-node-modules-path)) ;; use eslint from node_modules

;; evil mode for vim emulation
(use-package evil
  :ensure t
  :init
  (setq evil-want-integration nil) ;; required by evil-collection
  (setq evil-search-module 'evil-search)
  (setq evil-ex-complete-emacs-commands nil)
  (setq evil-vsplit-window-right t) ;; like vim's 'splitright'
  (setq evil-split-window-below t) ;; like vim's 'splitbelow'
  (setq evil-shift-round nil)
  (setq evil-want-C-u-scroll t)
  :config
  (evil-mode))

(use-package company
  :ensure t
  :config
  ;;(push 'company-capf company-backends)
  (add-hook 'after-init-hook 'global-company-mode))
;;(use-package company-box
;  :ensure t
;;  :hook (company-mode . company-box-mode))

;; Sane Defaults
(setq delete-old-versions -1 )		; delete excess backup versions silently
(setq version-control t )		; use version control
(setq vc-make-backup-files t )		; make backups file even when in version controlled dir
(setq backup-directory-alist `(("." . "~/.emacs.d/backups")) ) ; which directory to put backups file
(setq vc-follow-symlinks t )				       ; don't ask for confirmation when opening symlinked file
(setq auto-save-file-name-transforms '((".*" "~/.emacs.d/auto-save-list/" )) ) ;transform backups file name
(setq inhibit-startup-screen t )	; inhibit useless and old-school startup screen
(setq ring-bell-function 'ignore )	; silent bell when you make a mistake
(setq coding-system-for-read 'utf-8 )	; use utf-8 by default
(setq coding-system-for-write 'utf-8 )
(setq sentence-end-double-space nil)	; sentence SHOULD end with only a point.
(setq default-fill-column 100)		; toggle wrapping text at the 80th character


(defun web-mode-init-hook ()
  "Hooks for Web mode.  Adjust indent."
  (setq web-mode-markup-indent-offset 2))
  
(add-hook 'web-mode-hook  'web-mode-init-hook)
;; JSX syntax highlighting
(setq web-mode-content-types-alist '(("jsx" . "\\.js[x]?\\'")))

12/22/2020 11:44PM