alex / emacs-config / dde9f36 vs. 90d4f4e
Compare Hashes
HUNK
;;; init.el --- Initialization file for Emacs
;;; Commentary:
;; Emacs Startup File --- initialization for Emacs
;;; Code:
(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
;; 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
(add-to-list 'auto-mode-alist '("\\.jsx?$" . web-mode))) ;; auto-enable for js/jsx files
(evil-mode))
(use-package flycheck
;; lsp Language Server Interface Mode
(use-package lsp-mode
:ensure t)
;; Company mode for autocomplete
(use-package company
: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
(add-hook 'after-init-hook 'global-company-mode))
;; yasnippet templating for autocomplete in company-mode
(use-package yasnippet
:ensure t
:config
(add-hook 'web-mode-hook 'prettier-js-mode))
(yas-global-mode 1))
(use-package lsp-mode
(use-package company-quickhelp
:ensure t
:config
(add-hook 'web-mode-hook #'lsp))
(company-quickhelp-mode))
(use-package yasnippet
:ensure t)
(use-package which-key
; bind company-select-next to tab
(eval-after-load 'company
'(progn
(define-key company-active-map (kbd "TAB") 'company-select-next)
(define-key company-active-map [tab] 'company-select-next)))
;; (setq company-selection t) <-- this doesn't make sense -- Dmitry
(setq company-idle-delay 0)
(use-package flycheck
:ensure t
:config
(which-key-mode))
(flycheck-add-mode 'javascript-eslint 'web-mode) ;; use eslint for jsx files
(add-hook 'after-init-hook #'global-flycheck-mode)) ;; enable in all buffers
(use-package add-node-modules-path
;; Javascript IDE
(use-package web-mode
:ensure t
:config
(add-hook 'flycheck-mode-hook 'add-node-modules-path)) ;; use eslint from node_modules
(add-hook 'web-mode-hook 'lsp-deferred) ;; use lsp when in web-mode
(add-to-list 'auto-mode-alist '("\\.jsx?$" . web-mode))) ;; auto-enable for js/jsx files
;; evil mode for vim emulation
(use-package evil
(use-package prettier-js
: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))
(add-hook 'web-mode-hook 'prettier-js-mode))
(use-package company
(use-package add-node-modules-path
: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))
(add-hook 'flycheck-mode-hook 'add-node-modules-path)) ;; use eslint from node_modules
;; 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))
HUNK
;; JSX syntax highlighting
(setq web-mode-content-types-alist '(("jsx" . "\\.js[x]?\\'")))
;; Golang IDE
(use-package go-mode
:ensure t
:hook (flycheck-add-next-checker 'lsp-ui 'golangci-lint)
:config
(setq gofmt-command "goimports") ;; use goimports instead of gofmt
(add-hook 'before-save-hook 'gofmt-before-save)
(add-hook 'go-mode-hook 'lsp-deferred)
;; Use go-mode when loading a file with extension .go
(add-to-list 'auto-mode-alist '("\\.go\\'" . go-mode)))
(use-package flycheck-golangci-lint
:ensure t
:hook (go-mode . flycheck-golangci-lint-setup)
:config
(setq flycheck-golangci-lint-enable-all t))
(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.
'(company-selection-wrap-around t)
'(custom-enabled-themes '(wombat))
'(inhibit-startup-screen t)
'(package-selected-packages
'(yaml-mode coverlay cov go-mode yasnippet which-key web-mode use-package prettier-js powerline neotree lsp-ui flycheck evil dumb-jump company add-node-modules-path)))
(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.
)
(provide 'init)
;;; init.el ends here