Created
October 19, 2021 16:30
-
-
Save Lukewh/2da7b54cd773f931b1bf710c84f2f0fb to your computer and use it in GitHub Desktop.
20211019 - Emacs config
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
(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 | |
(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) | |
)) | |
;; Particles | |
;; https://github.com/elizagamedev/power-mode.el | |
(setq power-mode-shake-strength nil) | |
(setq power-mode-streak-shake-threshold nil) | |
(use-package power-mode | |
:load-path "packages" | |
:init | |
(add-hook 'after-init-hook #'power-mode)) | |
;; 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-default tab-width 2) | |
(setq indent-tabs-mode nil) | |
(defun luke/webmode-hook () | |
"Webmode hooks." | |
(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 web-mode-enable-auto-indentation t) | |
(setq web-mode-enable-auto-closing t) | |
(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 | |
:hook (web-mode . luke/webmode-hook) | |
) | |
;; 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)) | |
;; Custom 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