Created
October 5, 2021 12:04
-
-
Save Lukewh/b92378cda2d0952de8bf1f3f5615a237 to your computer and use it in GitHub Desktop.
20211005 - Emacs config for typescript and CRA
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
(eval-and-compile | |
(customize-set-variable | |
'package-archives '(("org" . "https://orgmode.org/elpa/") | |
("melpa" . "https://melpa.org/packages/") | |
("gnu" . "https://elpa.gnu.org/packages/"))) | |
(package-initialize) | |
(unless (package-installed-p 'use-package) | |
(package-refresh-contents) | |
(package-install 'use-package))) | |
;; IDO | |
;; (setq ido-everywhere t | |
;; ido-enable-prefix nil | |
;; ido-enable-flex-matching t | |
;; ido-auto-merge-work-directories-length nil | |
;; ;;ido-use-filename-at-point t | |
;; ido-max-prospects 10 | |
;; ido-create-new-buffer 'always | |
;; ;; ido-use-virtual-buffers t | |
;; ;; ido-handle-duplicate-virtual-buffers 2 | |
;; ido-default-buffer-method 'selected-window | |
;; ido-default-file-method 'selected-window) | |
;; (setq ido-decorations (quote ("\n" "" "\n" "\n ..." "[" "]" " | |
;; [No match]" " [Matched]" " [Not readable]" " [Too big]" " | |
;; [Confirm]"))) | |
;; (defun ido-disable-line-truncation () (set (make-local-variable 'truncate-lines) nil)) | |
;; (add-hook 'ido-minibuffer-setup-hook 'ido-disable-line-truncation) | |
;; (defun ido-my-keys () | |
;; (define-key ido-completion-map (kbd "<up>") 'ido-prev-match) | |
;; (define-key ido-completion-map (kbd "<down>") 'ido-next-match)) | |
;; (add-hook 'ido-setup-hook 'ido-my-keys) | |
;; (ido-mode 1) | |
;; Icomplete | |
;; (setq icomplete-show-matches-on-no-input t) | |
;; (setq icomplete-in-buffer t) | |
;; (icomplete-mode 1) | |
;; FIDO | |
(fido-mode 1) | |
;; Built-in project package | |
(require 'project) | |
(global-set-key (kbd "C-x p f") #'project-find-file) | |
;; I need the hash on uk keyboard for mac OS | |
(global-set-key (kbd "M-3") (lambda () (interactive) (insert "#"))) | |
;; Go to next error | |
(global-set-key (kbd "C-c N") #'flymake-goto-next-error) | |
;; Go to previous error | |
(global-set-key (kbd "C-c P") #'flymake-goto-prev-error) | |
;; (defun luke/select-project () | |
;; (interactive) | |
;; (let ( | |
;; (projects (directory-files "~/Projects")))) | |
;; (let ( | |
;; (pr (project-current nil (concat "~/Projects/" (ido-completing-read "Select projec;;: " project))))) | |
;; (dirs (project-roots pr)) | |
;; (project-find-file-in (thing-at-point 'filename) dirs pr))) | |
;; (luke/select-project) | |
(defun luke/grep-in-project () | |
(interactive) | |
(let* ( | |
(current-project (project-current t)) | |
(current-project-root (car (project-roots current-project))) | |
(search-term | |
(read-from-minibuffer "Search term: "))) | |
(rgrep search-term "*" current-project-root) | |
)) | |
;; Preferred font | |
;; Load pragmatapro-lig.el | |
;;(add-to-list 'load-path "/home/luke/emacs/custom-packages/emacs-pragmatapro-ligatures") | |
;;(require 'pragmatapro-lig) | |
;;(add-to-list 'default-frame-alist '(font . "PragmataPro Mono Liga-10")) | |
;; Enable pragmatapro-lig-mode for specific modes | |
;;(add-hook 'text-mode-hook 'pragmatapro-lig-mode) | |
;;(add-hook 'prog-mode-hook 'pragmatapro-lig-mode) | |
;; or globally | |
;;(pragmatapro-lig-global-mode) | |
;;(setq line-spacing 0) | |
;; General settings | |
(delete-selection-mode t) | |
(tool-bar-mode -1) | |
(setq gc-cons-threshold 100000000) | |
(setq read-process-output-max (* 1024 1024)) ;; 1mb | |
(setq auto-save-default nil) | |
(setq make-backup-files nil) | |
(setq create-lockfiles nil) | |
(global-display-line-numbers-mode) | |
(global-prettify-symbols-mode 1) | |
(global-hl-line-mode 1) | |
(setq tab-line-close-button-show nil) | |
(setq tab-line-tabs-function 'tab-line-tabs-mode-buffers) | |
(global-tab-line-mode t) | |
(add-to-list 'default-frame-alist '(ns-transparent-titlebar . t)) | |
(add-to-list 'default-frame-alist '(ns-appearance . dark)) | |
(when (eq window-system 'mac) | |
(mac-auto-operator-composition-mode)) | |
(use-package exec-path-from-shell | |
:ensure t | |
:config | |
(exec-path-from-shell-initialize)) | |
(use-package add-node-modules-path | |
:ensure t) | |
(use-package which-key | |
:ensure t | |
:config | |
(which-key-mode)) | |
(use-package expand-region | |
:ensure t | |
:bind (("C-=" . er/expand-region) | |
("C--" . er/contract-region))) | |
;; json-mode | |
(use-package json-mode | |
:ensure t) | |
;; web-mode | |
(setq web-mode-enable-comment-annotation t) | |
(setq web-mode-markup-indent-offset 2) | |
(setq web-mode-code-indent-offset 2) | |
(setq web-mode-css-indent-offset 2) | |
(setq web-mode-attr-indent-offset 0) | |
(setq indent-tabs-mode nil) | |
(setq web-mode-enable-auto-indentation nil) | |
(setq web-mode-enable-auto-pairing t) | |
(setq web-mode-enable-css-colorization t) | |
(use-package web-mode | |
:ensure t | |
:mode (("\\.jsx?\\'" . web-mode) | |
("\\.tsx?\\'" . web-mode) | |
("\\.html\\'" . web-mode)) | |
:commands web-mode) | |
;; company | |
(setq company-minimum-prefix-length 1 | |
company-idle-delay 0.0) | |
(use-package company | |
:ensure t | |
:config (global-company-mode t)) | |
;; magit | |
(use-package magit | |
:ensure t | |
:bind ( | |
("C-x g" . magit-status))) | |
;; theme | |
(use-package modus-themes | |
:ensure t | |
:init | |
(setq modus-themes-syntax '(green-strings yellow-comments) | |
modus-themes-mode-line '(accented borderless) | |
modus-themes-hl-line '(accented)) | |
(modus-themes-load-themes) | |
:config | |
(load-theme 'modus-vivendi t)) | |
;; lsp-mode | |
(setq lsp-log-io nil) ;; Don't log everything = speed | |
(setq lsp-keymap-prefix "C-c l") | |
;;(setq lsp-restart 'auto-restart) | |
(setq lsp-ui-sideline-show-diagnostics t) | |
(setq lsp-ui-sideline-show-hover t) | |
(setq lsp-ui-sideline-show-code-actions t) | |
(setq lsp-diagnostics-provider :flymake) | |
(setq lsp-ui-doc-enable t) | |
(setq lsp-ui-doc-position 'at-point) | |
(global-set-key (kbd "C-.") #'lsp-ui-peek-find-definitions) | |
(use-package lsp-mode | |
:ensure t | |
:hook ( | |
(web-mode . lsp-deferred) | |
(lsp-mode . lsp-enable-which-key-integration) | |
) | |
:commands lsp-deferred) | |
(use-package lsp-ui | |
:ensure t | |
:commands lsp-ui-mode) | |
(use-package lsp-python-ms | |
:ensure t | |
:init (setq lsp-python-ms-auto-install-server t) | |
:hook (python-mode . (lambda () | |
(require 'lsp-python-ms) | |
(lsp)))) ; or lsp-deferred | |
(defun enable-minor-mode (my-pair) | |
"Enable minor mode if filename match the regexp. MY-PAIR is a cons cell (regexp . minor-mode)." | |
(if (buffer-file-name) | |
(if (string-match (car my-pair) buffer-file-name) | |
(funcall (cdr my-pair))))) | |
(use-package prettier-js | |
:ensure t) | |
(add-hook 'web-mode-hook #'(lambda () | |
(enable-minor-mode | |
'("\\.jsx?\\'" . prettier-js-mode)) | |
(enable-minor-mode | |
'("\\.tsx?\\'" . prettier-js-mode)))) | |
(eval-after-load 'web-mode | |
'(progn | |
(add-hook 'web-mode-hook #'add-node-modules-path) | |
(add-hook 'web-mode-hook #'prettier-js-mode))) | |
(use-package editorconfig | |
:ensure t | |
:config | |
(editorconfig-mode 1)) | |
(use-package npm-mode | |
:ensure t | |
:config | |
(npm-global-mode)) | |
;; Custome functions | |
(defun lukewh/kill-buffer () | |
"Kill the active buffer." | |
(interactive) | |
(kill-buffer (current-buffer))) | |
(global-set-key (kbd "C-x K") 'lukewh/kill-buffer) | |
(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. | |
'(package-archives | |
'(("org" . "https://orgmode.org/elpa/") | |
("melpa" . "https://melpa.org/packages/") | |
("gnu" . "https://elpa.gnu.org/packages/"))) | |
'(package-selected-packages | |
'(editorconfig add-node-modules-path flymake-cursor lsp-python-ms modus-themes modus-vivendi-theme npm-mode mini-frame prettier-js lsp-ui lsp-mode modus-operandi-theme magit company web-mode json-mode expand-region which-key exec-path-from-shell 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. | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment