diff --git a/01mac.el b/01mac.el index d57537a..131561a 100644 --- a/01mac.el +++ b/01mac.el @@ -7,6 +7,7 @@ (setq gc-cons-threshold 50000000) ;;;;;;;; Other optimizations ;;;;;;;;;;;;;;;;; +;; Stolen from Doom Emacs. ;; Update emacs less often (setq idle-update-delay 1.0) @@ -161,21 +162,16 @@ ;;;;;;;;;;;;;;;;;;;;;; Shell stuff ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on) +;; Disable warning related to PATH on startup +(defvar exec-path-from-shell-check-startup-files nil) + ;; Allow to execute path from shell (use-package exec-path-from-shell :if (memq window-system '(mac ns)) :ensure t - :config (add-to-list 'exec-path "/usr/local/bin") + :config (add-to-list 'exec-path "/opt/local/bin") (exec-path-from-shell-initialize)) - -;;;;;;;;;;;;;;;;;;;;;; Font configuration ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defun set-font-size (size) - "Set font SIZE to X px." - (interactive "NNew font size: ") - (set-face-attribute 'default nil :font (format "Hasklig %d" size)) - (set-face-attribute 'mode-line nil :font (format "Hasklig %d" size))) - ;;;;;;;;;;;;;;;;;;;;;; Window configuration ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Always start in fullscreen (defun toggle-fullscreen () diff --git a/05prog-mode.el b/05prog-mode.el index c1232d1..da1dc24 100644 --- a/05prog-mode.el +++ b/05prog-mode.el @@ -74,5 +74,10 @@ :defer t :config (global-column-enforce-mode t)) +;; Vim-like regex replace with preview in buffer. +(use-package visual-regexp + :ensure t + :defer t) + (provide '05prog-mode) ;;; 05prog-mode ends here diff --git a/init.el b/init.el index eedacf0..789f141 100644 --- a/init.el +++ b/init.el @@ -9,42 +9,15 @@ (package-initialize) ;; fetch the list of packages available -(unless package-archive-contents - (package-refresh-contents)) +(unless package-archive-contents (package-refresh-contents)) -;; list the packages you want -(defvar package-list '( - use-package - visual-regexp ;; Regexp replacement with preview in - ;; current buffer. - - ;; Themes - smart-mode-line - base16-theme - flatui-theme - planet-theme - - ;; Infrastructure files - dockerfile-mode - terraform-mode - ansible - nginx-mode - - ;; Text files - yaml-mode - markdown-mode - gitignore-mode - ) - ) - -;; install the missing packages -(dolist (package package-list) - (unless (package-installed-p package) - (package-install package))) +;; install use-package, the workhorse of configuration +(unless (package-installed-p 'use-package) + (package-install 'use-package)) (require 'use-package) -;; Additional files +;; General configuration files. (require '01mac "$HOME/.emacs.d/01mac.el") (require '05macros "$HOME/.emacs.d/05macros.el") (require '05ivy "$HOME/.emacs.d/05ivy.el") @@ -60,33 +33,31 @@ (require '05lsp "$HOME/.emacs.d/05lsp.el") ;; Themes -(load "$HOME/.emacs.d/themes/themes.el" 'f 't) +(require '10themes "$HOME/.emacs.d/themes/themes.el") -;; Actual supported languages -(load "$HOME/.emacs.d/languages/elisp.el" 'f 't) -(load "$HOME/.emacs.d/languages/ruby.el" 'f 't) -(load "$HOME/.emacs.d/languages/web.el" 'f 't) -(load "$HOME/.emacs.d/languages/javascript.el" 'f 't) -(load "$HOME/.emacs.d/languages/elixir.el" 'f 't) -(load "$HOME/.emacs.d/languages/erlang.el" 'f 't) -(load "$HOME/.emacs.d/languages/sh.el" 'f 't) -(load "$HOME/.emacs.d/languages/rust.el" 'f 't) -(load "$HOME/.emacs.d/languages/clang.el" 'f 't) -(load "$HOME/.emacs.d/languages/clojure.el" 'f 't) -(load "$HOME/.emacs.d/languages/ocaml.el" 'f 't) -(load "$HOME/.emacs.d/languages/markdown.el" 'f 't) +;; Actual supported languages and file syntax. +(require 'languages/elisp "$HOME/.emacs.d/languages/elisp.el") +(require 'languages/ruby "$HOME/.emacs.d/languages/ruby.el") +(require 'languages/web "$HOME/.emacs.d/languages/web.el") +(require 'languages/javascript "$HOME/.emacs.d/languages/javascript.el") +(require 'languages/elixir "$HOME/.emacs.d/languages/elixir.el") +(require 'languages/erlang "$HOME/.emacs.d/languages/erlang.el") +(require 'languages/sh "$HOME/.emacs.d/languages/sh.el") +(require 'languages/rust "$HOME/.emacs.d/languages/rust.el") +(require 'languages/clang "$HOME/.emacs.d/languages/clang.el") +(require 'languages/clojure "$HOME/.emacs.d/languages/clojure.el") +(require 'languages/ocaml "$HOME/.emacs.d/languages/ocaml.el") +(require 'languages/markdown "$HOME/.emacs.d/languages/markdown.el") +(require 'languages/other "$HOME/.emacs.d/languages/other.el") (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. - '(custom-safe-themes - (quote - ("1f38fb71e55e5ec5f14a39d03ca7d7a416123d3f0847745c7bade053ca58f043" "fec45178b55ad0258c5f68f61c9c8fd1a47d73b08fb7a51c15558d42c376083d" "60e09d2e58343186a59d9ed52a9b13d822a174b33f20bdc1d4abb86e6b17f45b" "85e6bb2425cbfeed2f2b367246ad11a62fb0f6d525c157038a0d0eaaabc1bfee" "3380a2766cf0590d50d6366c5a91e976bdc3c413df963a0ab9952314b4577299" "cea3ec09c821b7eaf235882e6555c3ffa2fd23de92459751e18f26ad035d2142" "8ffdc8c66ceeaf7921f4510a70d808f01b303e6b4d177c947b442e80d4228678" "b0c5c6cc59d530d3f6fbcfa67801993669ce062dda1435014f74cafac7d86246" "ad16a1bf1fd86bfbedae4b32c269b19f8d20d416bd52a87cd50e355bf13c2f23" "d9dab332207600e49400d798ed05f38372ec32132b3f7d2ba697e59088021555" "bc4c89a7b91cfbd3e28b2a8e9e6750079a985237b960384f158515d32c7f0490" "99c86852decaeb0c6f51ce8bd46e4906a4f28ab4c5b201bdc3fdf85b24f88518" "a85e40c7d2df4a5e993742929dfd903899b66a667547f740872797198778d7b5" default))) '(package-selected-packages (quote - (lsp-ui lsp tuareg merlin reason-mode deft buffer-move clj-refactor planet-theme cider clojure-mode erlang rspec-mode dap-mode lsp-mode nginx-mode gitignore-mode js2-mode keyfreq visual-regexp enh-ruby-mode counsel-projectile counsel ivy flycheck-rust flycheck hydra solarized-theme company-ansible column-enforce-mode yaml-mode ansible dockerfile-mode ruby-end dash-at-point base16-theme exec-path-from-shell)))) + (erlang gitignore-mode yaml-mode nginx-mode ansible terraform-mode dockerfile-mode reason-mode merlin tuareg clj-refactor cider clojure-mode elixir-mode js2-mode web-mode enh-ruby-mode ruby-end rspec-mode planet-theme flatui-theme base16-theme smart-mode-line lsp-ui lsp-mode deft counsel-projectile flycheck company yasnippet-snippets yasnippet visual-regexp column-enforce-mode dash-at-point rainbow-mode rainbow-delimiters magit hydra counsel keyfreq exec-path-from-shell buffer-move use-package)))) ;; Improve font settings in Markdown code (custom-set-faces diff --git a/languages/clang.el b/languages/clang.el index 149ff0f..a8d94bb 100644 --- a/languages/clang.el +++ b/languages/clang.el @@ -8,20 +8,29 @@ (defun activate-clang-mode () "Goodies for editing c files." - (set-indent 8) + + ;; Set column width to 100 (column-enforce-n 100) + ;; Set indentation to 4 chars + (if (boundp 'c-basic-offset) + (setq-local c-basic-offset 4) + (defvar c-basic-offset 4)) + + (if (boundp 'c-default-style) + (setq-local c-default-style "bsd") + (defvar c-default-style "bsd")) + (add-to-list (make-local-variable 'company-backends) '(company-etags company-yasnippet)) (setq-local ctags/refresh-command (format - "ctags -e -R --languages=C -f %sTAGS %s." - (projectile-project-root) (projectile-project-root) - ))) + "uctags -e -R --languages=C -f %sTAGS %s/*" + (projectile-project-root) (projectile-project-root)))) -(add-hook 'c-mode 'activate-clang-mode) +(add-hook 'c-mode-hook 'activate-clang-mode) (provide 'languages/clang) ;;; clang.el ends here diff --git a/languages/clojure.el b/languages/clojure.el index 73cccc6..871e6f1 100644 --- a/languages/clojure.el +++ b/languages/clojure.el @@ -28,7 +28,7 @@ ^Cider^ ^Actions^ ^^^^^^^^----------------------------------------------------------------------- -_j_: Jack in +_j_: Jack in _t_: Run loaded test(s) _f_: Format buffer _l_: Load buffer " @@ -36,7 +36,8 @@ _l_: Load buffer ("j" cider-jack-in) ("f" cider-format-buffer) - ("l" cider-load-buffer)) + ("l" cider-load-buffer) + ("t" cider-test-run-loaded-tests)) (defun activate-my-clojure-mode () "Goodies for clojure files." @@ -56,6 +57,7 @@ _l_: Load buffer (add-hook 'clojure-mode-hook 'activate-my-clojure-mode) (defun my-clj-repl-config () + "Do not show stacktrace when in REPL." (setq-local cider-show-error-buffer 'except-in-repl)) (add-hook 'cider-repl-mode-hook 'my-clj-repl-config) diff --git a/languages/erlang.el b/languages/erlang.el index 0d49927..b6e9db6 100644 --- a/languages/erlang.el +++ b/languages/erlang.el @@ -5,6 +5,10 @@ (require '05ctags "$HOME/.emacs.d/05ctags.el") (require '05prog-mode "$HOME/.emacs.d/05prog-mode.el") +(use-package erlang + :defer t + :ensure t) + (cl-defun erlang/emacs-path (erlang-version) (car (split-string (shell-command-to-string @@ -97,19 +101,12 @@ ;; Company list override (add-to-list (make-local-variable 'company-backends) - '(company-yasnippet company-etags))) + '(company-yasnippet company-capf)) + + ;; Start LSP server + (lsp-deferred)) (add-hook 'erlang-mode-hook 'erlang/activate-erlang-mode) -(define-derived-mode my-erlang-mode erlang-mode "My Erlang mode" - "A mode for Erlang things" - - (activate-erlang-mode) - ;; Enable flycheck - (flycheck-select-checker 'erlang-otp) - - ;; Automatically update tags on save - (ctags/update-this-mode-on-save 'erlang-mode)) - (provide 'languages/erlang) ;;; erlang.el ends here diff --git a/languages/other.el b/languages/other.el new file mode 100644 index 0000000..a941717 --- /dev/null +++ b/languages/other.el @@ -0,0 +1,28 @@ +;;; other.el --- summary + +;; Author: Maciej Szlosarczyk +;; Maintainer: Maciej Szlosarczyk +;; Version: 0.1-snapshot + +;;; Commentary: + +;; Load other languages or syntaxes configuration that do not fit anywhere else. + +;;; Code: + +;; Infrastructure files +(use-package dockerfile-mode :ensure t :defer t) +(use-package terraform-mode :ensure t :defer t) +(use-package ansible :ensure t :defer t) +(use-package nginx-mode :ensure t :defer t) + +;; Text files +(use-package yaml-mode :ensure t :defer t) +(use-package gitignore-mode + :ensure t + :defer t + :hook ((gitignore-mode . whitespace-mode) + (before-save . whitespace-cleanup))) + +(provide 'languages/other) +;;; other.el ends here diff --git a/snippets/emacs-lisp-mode/short-package b/snippets/emacs-lisp-mode/short-package index e79faa6..c20ab85 100644 --- a/snippets/emacs-lisp-mode/short-package +++ b/snippets/emacs-lisp-mode/short-package @@ -1,6 +1,3 @@ -# -*- mode: snippet -*- -# name: short-package -# -- ;;; ${1:name}.el --- summary ;; Author: Maciej Szlosarczyk diff --git a/themes/themes.el b/themes/themes.el index cba0603..920ac6f 100644 --- a/themes/themes.el +++ b/themes/themes.el @@ -10,6 +10,10 @@ (setq-default display-time-format "%H:%M") ;; time format to display on mode line (sml/setup)) +(use-package base16-theme :ensure t) +(use-package flatui-theme :ensure t :defer t) +(use-package planet-theme :ensure t :defer t) + ;; Disable cursor blinking (blink-cursor-mode 0) @@ -59,5 +63,5 @@ :foreground (face-foreground 'default) :background (face-background 'default)) -(provide 'themes) +(provide '10themes) ;;; themes.el ends here