use poper emacs namespace, move keys to dedicated minor mode
This commit is contained in:
parent
7f5f90ae4d
commit
76c7d665c7
38 changed files with 337 additions and 221 deletions
36
lang/clang.el
Normal file
36
lang/clang.el
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
;;; languages/clang.el --- summary
|
||||
;;; Commentary:
|
||||
;;; Code:
|
||||
|
||||
(require 'icejam-pkg-projectile "$HOME/.emacs.d/pkg/projectile.el")
|
||||
(require 'icejam-pkg-ctags "$HOME/.emacs.d/pkg/ctags.el")
|
||||
(require 'icejam-pkg-prog-mode "$HOME/.emacs.d/pkg/prog-mode.el")
|
||||
|
||||
(defun activate-clang-mode ()
|
||||
"Goodies for editing c files."
|
||||
|
||||
;; 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))))
|
||||
|
||||
(add-hook 'c-mode-hook 'activate-clang-mode)
|
||||
|
||||
(provide 'icejam-lang-clang)
|
||||
;;; clang.el ends here
|
||||
67
lang/clojure.el
Normal file
67
lang/clojure.el
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
;;; languages/clojure -- summary
|
||||
;;; Commentary:
|
||||
;;; Code:
|
||||
|
||||
(require 'icejam-pkg-prog-mode "$HOME/.emacs.d/pkg/prog-mode.el")
|
||||
(require 'icejam-pkg-hydra "$HOME/.emacs.d/pkg/hydra.el")
|
||||
|
||||
(use-package clojure-mode
|
||||
:defer t
|
||||
:ensure t)
|
||||
|
||||
(use-package cider
|
||||
:requires clojure-mode
|
||||
:commands cider-jack-in
|
||||
:defer t
|
||||
:ensure t
|
||||
:config (setq cider-annotate-completion-function t))
|
||||
|
||||
(use-package clj-refactor
|
||||
:requires (cider clojure-mode)
|
||||
:defer t
|
||||
:ensure t)
|
||||
|
||||
;; Hydra
|
||||
(defhydra my-clojure/context-hydra (:color teal :hint nil)
|
||||
"
|
||||
Clojure actions
|
||||
|
||||
^Cider^ ^Actions^
|
||||
^^^^^^^^-----------------------------------------------------------------------
|
||||
_j_: Jack in _t_: Run loaded test(s)
|
||||
_f_: Format buffer
|
||||
_l_: Load buffer
|
||||
"
|
||||
("q" nil "cancel" :color blue)
|
||||
|
||||
("j" cider-jack-in)
|
||||
("f" cider-format-buffer)
|
||||
("l" cider-load-buffer)
|
||||
("t" cider-test-run-loaded-tests))
|
||||
|
||||
(defun activate-my-clojure-mode ()
|
||||
"Goodies for clojure files."
|
||||
(set-indent 2) ;; Default indentation of 2 characters
|
||||
(column-enforce-n 80)
|
||||
(clj-refactor-mode 1)
|
||||
(cider-mode 1)
|
||||
(setq-local indent-tabs-mode nil)
|
||||
|
||||
(define-key clojure-mode-map (kbd "C-c l") 'my-clojure/context-hydra/body)
|
||||
|
||||
;; Do not enable paredit for clojure
|
||||
;; (paredit-mode 1)
|
||||
;; Do not show separate error window when in REPL
|
||||
(setq cider-show-error-buffer 'except-in-repl))
|
||||
|
||||
(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)
|
||||
(add-hook 'cider-mode-hook #'cider-company-enable-fuzzy-completion)
|
||||
|
||||
(provide 'icejam-lang-clojure)
|
||||
;;; clojure.el ends here
|
||||
20
lang/elisp.el
Normal file
20
lang/elisp.el
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
;;; languages/elisp -- summary
|
||||
;;; Commentary:
|
||||
;;; Code:
|
||||
|
||||
(require 'icejam-pkg-prog-mode "$HOME/.emacs.d/pkg/prog-mode.el")
|
||||
|
||||
(defun activate-emacs-lisp-mode ()
|
||||
"Goodies for editing Emacs files."
|
||||
(set-indent 2) ;; Default indentation of 2 characters
|
||||
(column-enforce-n 80)
|
||||
(setq-default indent-tabs-mode nil)
|
||||
|
||||
;; Company list override
|
||||
(add-to-list (make-local-variable 'company-backends)
|
||||
'(company-yasnippet company-elisp)))
|
||||
|
||||
(add-hook 'emacs-lisp-mode-hook 'activate-emacs-lisp-mode)
|
||||
|
||||
(provide 'icejam-lang-elisp)
|
||||
;;; elisp.el ends here
|
||||
48
lang/elixir.el
Normal file
48
lang/elixir.el
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
;;; languages/elixir -- summary
|
||||
;;; Commentary:
|
||||
;;; Code:
|
||||
|
||||
(require 'icejam-pkg-prog-mode "$HOME/.emacs.d/pkg/prog-mode.el")
|
||||
(require 'icejam-pkg-flycheck "$HOME/.emacs.d/pkg/flycheck.el")
|
||||
(require 'icejam-pkg-hydra "$HOME/.emacs.d/pkg/hydra.el")
|
||||
|
||||
(use-package elixir-mode
|
||||
:requires (lsp-mode lsp-ui)
|
||||
:ensure t)
|
||||
|
||||
(defhydra my-elixir/context-hydra (:color teal :hint nil)
|
||||
"
|
||||
^Elixir actions^
|
||||
^^^^^^^^-----------------------------------------------------------------------
|
||||
_r_: Reload buffer _f_: Format buffer
|
||||
_i_: Indent buffer _m_: iMenu
|
||||
"
|
||||
("q" nil "cancel" :color blue)
|
||||
|
||||
("r" revert-buffer-no-confirm)
|
||||
("i" indent-region)
|
||||
|
||||
("f" elixir-format)
|
||||
("m" lsp-ui-imenu))
|
||||
|
||||
(defun activate-elixir-mode ()
|
||||
"All things Elixir."
|
||||
(set-indent 2)
|
||||
(column-enforce-n 98)
|
||||
(lsp)
|
||||
(setq-local flycheck-check-syntax-automatically '(save mode-enabled))
|
||||
(define-key elixir-mode-map (kbd "<f17>") 'elixir-format)
|
||||
|
||||
;; If needed, switch the one below to false to disable documentation pop-ups
|
||||
;; (setq-local lsp-ui-doc-enable t)
|
||||
|
||||
(define-key elixir-mode-map (kbd "C-c l") 'my-elixir/context-hydra/body)
|
||||
|
||||
;; Company list override
|
||||
(add-to-list (make-local-variable 'company-backends)
|
||||
'(company-capf company-yasnippet)))
|
||||
|
||||
(add-hook 'elixir-mode-hook 'activate-elixir-mode)
|
||||
|
||||
(provide 'icejam-lang-elixir)
|
||||
;;; elixir.el ends here
|
||||
113
lang/erlang.el
Normal file
113
lang/erlang.el
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
;;; languages/erlang -- summary
|
||||
;;; Commentary:
|
||||
;;; Code:
|
||||
|
||||
(require 'icejam-pkg-ctags "$HOME/.emacs.d/pkg/ctags.el")
|
||||
(require 'icejam-pkg-prog-mode "$HOME/.emacs.d/pkg/prog-mode.el")
|
||||
|
||||
(use-package erlang
|
||||
:defer t
|
||||
:ensure t
|
||||
:requires (lsp-mode lsp-ui))
|
||||
|
||||
(cl-defun erlang/emacs-path (erlang-version)
|
||||
(car (split-string
|
||||
(shell-command-to-string
|
||||
(format "find $HOME/.asdf/installs/erlang/%s/ -name erlang.el"
|
||||
erlang-version)) "erlang.el")))
|
||||
|
||||
(cl-defun erlang/erlang-path (erlang-version)
|
||||
(format "$HOME/.asdf/installs/erlang/%s/" erlang-version))
|
||||
|
||||
(defun erlang/erlang-plist (erlang-version)
|
||||
"Create property list for ERLANG-VERSION."
|
||||
(list :version erlang-version
|
||||
:erlang-path (erlang/erlang-path erlang-version)
|
||||
:emacs-path (erlang/emacs-path erlang-version)))
|
||||
|
||||
(cl-defun erlang/installed-erlangs ()
|
||||
(split-string
|
||||
(shell-command-to-string
|
||||
(format "asdf list erlang"))))
|
||||
|
||||
(cl-defun erlang/available-versions--plist ()
|
||||
(mapcar 'erlang/erlang-plist (erlang/installed-erlangs)))
|
||||
|
||||
(defvar erlang/available-versions (erlang/available-versions--plist))
|
||||
|
||||
(cl-defun erlang/currently-in-use ()
|
||||
(car (split-string (shell-command-to-string "asdf current erlang"))))
|
||||
|
||||
(cl-defun erlang/current-version--plistp (erlang-plist)
|
||||
(equal (plist-get erlang-plist :version) (erlang/currently-in-use)))
|
||||
|
||||
(cl-defun erlang/current-plist ()
|
||||
(seq-find 'erlang/current-version--plistp erlang/available-versions))
|
||||
|
||||
;; Flycheck checker for Erlang
|
||||
(flycheck-define-checker erlang-otp
|
||||
"An Erlang syntax checker using the Erlang interpreter."
|
||||
:command ("erlc" "-o" temporary-directory "-Wall"
|
||||
"-I" "../include" "-I" "../../include"
|
||||
"-I" "../../../include" source)
|
||||
:error-patterns
|
||||
((warning line-start (file-name) ":" line ": Warning:" (message) line-end)
|
||||
(error line-start (file-name) ":" line ": " (message) line-end))
|
||||
:modes (my-erlang-mode))
|
||||
|
||||
(defun erlang/activate-erlang-mode ()
|
||||
"All things for all Erlang, including header files."
|
||||
(when (featurep 'erlang-start) (unload-feature 'erlang-start))
|
||||
|
||||
(defvar erlang/current-erlang (erlang/current-plist))
|
||||
|
||||
(add-to-list (make-local-variable 'load-path)
|
||||
(plist-get erlang/current-erlang :emacs-path))
|
||||
|
||||
(add-to-list (make-local-variable 'exec-path)
|
||||
(format "%slib/tools-3.1/emacs"
|
||||
(plist-get erlang/current-erlang :erlang-path)))
|
||||
|
||||
(setq-local erlang-man-root-dir
|
||||
(format "%sman"
|
||||
(plist-get erlang/current-erlang :erlang-path)))
|
||||
|
||||
(require 'erlang-start)
|
||||
(set-indent 4)
|
||||
(column-enforce-n 80)
|
||||
|
||||
;; Set specific ctags command
|
||||
(setq-local
|
||||
ctags/refresh-command
|
||||
(format
|
||||
"ctags -e -R --languages=erlang -f %sTAGS %ssrc %sdeps %sapps %s_build %stest %slib/stdlib-* %slib/kernel-*"
|
||||
(projectile-project-root) (projectile-project-root)
|
||||
(projectile-project-root) (projectile-project-root)
|
||||
(projectile-project-root) (projectile-project-root)
|
||||
(plist-get erlang/current-erlang :erlang-path)
|
||||
(plist-get erlang/current-erlang :erlang-path)))
|
||||
|
||||
;; Add include path so that Erlang does not complain about
|
||||
;; missing header files.
|
||||
(setq-local flycheck-erlang-include-path
|
||||
(list (format "%sdeps" (projectile-project-root))
|
||||
(format "%s_build/default/lib" (projectile-project-root))
|
||||
(format "%sinclude" (projectile-project-root))
|
||||
(format "%sapps" (projectile-project-root))))
|
||||
|
||||
(setq-local flycheck-erlang-library-path
|
||||
(list (format "%sdeps" (projectile-project-root))
|
||||
(format "%s_build/default/lib" (projectile-project-root))
|
||||
(format "%sapps" (projectile-project-root))))
|
||||
|
||||
;; Company list override
|
||||
(add-to-list (make-local-variable 'company-backends)
|
||||
'(company-capf company-yasnippet))
|
||||
|
||||
;; Start LSP server
|
||||
(lsp))
|
||||
|
||||
(add-hook 'erlang-mode-hook 'erlang/activate-erlang-mode)
|
||||
|
||||
(provide 'icejam-lang-erlang)
|
||||
;;; erlang.el ends here
|
||||
50
lang/fsharp.el
Normal file
50
lang/fsharp.el
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
;;; fsharp.el --- summary
|
||||
|
||||
;; Author: Maciej Szlosarczyk
|
||||
;; Maintainer: Maciej Szlosarczyk
|
||||
;; Version: 0.1-snapshot
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; Fsharp configuration
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'icejam-pkg-prog-mode "$HOME/.emacs.d/pkg/prog-mode.el")
|
||||
(require 'icejam-pkg-flycheck "$HOME/.emacs.d/pkg/flycheck.el")
|
||||
|
||||
(use-package fsharp-mode
|
||||
:requires (lsp-mode lsp-ui)
|
||||
:ensure t
|
||||
:defer t)
|
||||
|
||||
(defhydra my-fsharp/context-hydra (:color teal :hint nil)
|
||||
"
|
||||
^Fsharp actions^
|
||||
^^^^^^^^-----------------------------------------------------------------------
|
||||
_r_: Reload buffer _f_: Format buffer
|
||||
_i_: Indent buffer _m_: iMenu
|
||||
"
|
||||
("q" nil "cancel" :color blue)
|
||||
|
||||
("r" revert-buffer-no-confirm)
|
||||
("i" indent-region)
|
||||
|
||||
("f" lsp-format-buffer)
|
||||
("m" lsp-ui-imenu))
|
||||
|
||||
(defun activate-fsharp-mode ()
|
||||
"Activate F# goodies."
|
||||
(set-indent 4)
|
||||
(column-enforce-n 100)
|
||||
(lsp-deferred)
|
||||
(define-key fsharp-mode-map (kbd "C-c l") 'my-fsharp/context-hydra/body)
|
||||
|
||||
;; Company list override
|
||||
(add-to-list (make-local-variable 'company-backends)
|
||||
'(company-capf company-yasnippet)))
|
||||
|
||||
(add-hook 'fsharp-mode-hook 'activate-fsharp-mode)
|
||||
|
||||
(provide 'icejam-lang-fsharp)
|
||||
;;; fsharp.el ends here
|
||||
57
lang/haskell.el
Normal file
57
lang/haskell.el
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
;;; haskell.el --- summary
|
||||
|
||||
;; Author: Maciej Szlosarczyk
|
||||
;; Maintainer: Maciej Szlosarczyk
|
||||
;; Version: 0.1-snapshot
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;;; Provides configuration for haskell files
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'icejam-pkg-prog-mode "$HOME/.emacs.d/pkg/prog-mode.el")
|
||||
(require 'icejam-pkg-flycheck "$HOME/.emacs.d/pkg/flycheck.el")
|
||||
(require 'icejam-pkg-hydra "$HOME/.emacs.d/pkg/hydra.el")
|
||||
|
||||
(use-package haskell-mode
|
||||
:ensure t
|
||||
:defer t)
|
||||
|
||||
(use-package lsp-haskell
|
||||
:ensure t
|
||||
:defer t
|
||||
:requires (lsp-mode lsp-ui haskell-mode)
|
||||
:config
|
||||
(setq lsp-haskell-process-path-hie "haskell-language-server-wrapper"))
|
||||
|
||||
(defhydra my-haskell/context-hydra (:color teal :hint nil)
|
||||
"
|
||||
^Haskell actions^
|
||||
^^^^^^^^-----------------------------------------------------------------------
|
||||
_r_: Reload buffer _f_: Format buffer
|
||||
_i_: Indent buffer _m_: iMenu
|
||||
"
|
||||
("q" nil "cancel" :color blue)
|
||||
|
||||
("r" revert-buffer-no-confirm)
|
||||
("i" indent-region)
|
||||
|
||||
("f" lsp-format-buffer)
|
||||
("m" lsp-ui-imenu))
|
||||
|
||||
(defun activate-haskell-mode ()
|
||||
"Run this in haskell-mode."
|
||||
(set-indent 2)
|
||||
(column-enforce-n 80)
|
||||
(lsp)
|
||||
(define-key haskell-mode-map (kbd "C-c l") 'my-haskell/context-hydra/body)
|
||||
|
||||
;; Company list override
|
||||
(add-to-list (make-local-variable 'company-backends)
|
||||
'(company-capf company-yasnippet)))
|
||||
|
||||
(add-hook 'haskell-mode-hook 'activate-haskell-mode)
|
||||
|
||||
(provide 'icejam-lang-haskell)
|
||||
;;; haskell.el ends here
|
||||
49
lang/javascript.el
Normal file
49
lang/javascript.el
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
;;; javascript -- summary
|
||||
;;; Commentary:
|
||||
;;; Code:
|
||||
|
||||
(require 'icejam-pkg-prog-mode "$HOME/.emacs.d/pkg/prog-mode.el")
|
||||
(require 'icejam-pkg-flycheck "$HOME/.emacs.d/pkg/flycheck.el")
|
||||
(require 'icejam-pkg-lsp "$HOME/.emacs.d/pkg/lsp.el")
|
||||
|
||||
(use-package js2-mode
|
||||
:requires (web-mode company-web lsp-mode lsp-ui)
|
||||
:ensure t)
|
||||
|
||||
(use-package vue-mode
|
||||
:ensure t
|
||||
:defer t)
|
||||
|
||||
;; Use js2-mode for javascript editing
|
||||
(add-to-list 'auto-mode-alist '("\\.js\\'" . js2-mode))
|
||||
(add-to-list 'auto-mode-alist '("\\.json\\'" . js2-mode))
|
||||
|
||||
;; Use js2-mode for typescript editing
|
||||
(add-to-list 'auto-mode-alist '("\\.ts\\'" . js2-mode))
|
||||
|
||||
(defun activate-js2-mode ()
|
||||
"JS2 mode overrides."
|
||||
(set-indent 2)
|
||||
|
||||
(when (not (string-match-p ".json" (buffer-file-name)))
|
||||
(lsp-deferred))
|
||||
|
||||
(column-enforce-n 80)
|
||||
(setq-local js2-basic-offset 2)
|
||||
(setq-local js2-strict-missing-semi-warning nil)
|
||||
(setq-local lsp-eldoc-enable-hover nil)
|
||||
(setq js2-mode-show-parse-errors nil)
|
||||
(setq js2-mode-show-strict-warnings nil)
|
||||
|
||||
(setq-local lsp-eldoc-enable-hover nil)
|
||||
(setq-local flycheck-check-syntax-automatically '(save mode-enabled))
|
||||
|
||||
;; "Company list override."
|
||||
(add-to-list (make-local-variable 'company-backends)
|
||||
'(company-capf company-yasnippet)))
|
||||
|
||||
(add-hook 'js2-mode-hook 'activate-js2-mode)
|
||||
(add-hook 'vue-mode-hook 'lsp)
|
||||
|
||||
(provide 'icejam-lang-javascript)
|
||||
;;; javascript.el ends here
|
||||
27
lang/markdown.el
Normal file
27
lang/markdown.el
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
;;; markdown -- summary
|
||||
;;; Commentary:
|
||||
;;; Code:
|
||||
|
||||
(require 'icejam-pkg-prog-mode "$HOME/.emacs.d/pkg/prog-mode.el")
|
||||
|
||||
(use-package markdown-mode
|
||||
:ensure t
|
||||
:defer t
|
||||
:init (setq-default markdown-command "pandoc"))
|
||||
|
||||
(defun activate-markdown-mode ()
|
||||
"Reconfigure markdown mode for your own purposes."
|
||||
(set-indent 2)
|
||||
(column-enforce-n 80)
|
||||
|
||||
;; Markdown mode reuses my bindings, remove them.
|
||||
(define-key markdown-mode-map (kbd "C-c <left>") nil)
|
||||
(define-key markdown-mode-map (kbd "C-c <right>") nil)
|
||||
(define-key markdown-mode-map (kbd "C-c <up>") nil)
|
||||
(define-key markdown-mode-map (kbd "C-c <down>") nil)
|
||||
(define-key markdown-mode-map (kbd "C-c C-v") 'markdown-preview))
|
||||
|
||||
(add-hook 'markdown-mode-hook 'activate-markdown-mode)
|
||||
|
||||
(provide 'icejam-lang-markdown)
|
||||
;;; markdown.el ends here
|
||||
96
lang/ocaml.el
Normal file
96
lang/ocaml.el
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
;;; ocaml -- summary
|
||||
;;; Commentary:
|
||||
;;; Code:
|
||||
|
||||
(use-package tuareg
|
||||
:defer t
|
||||
:ensure t
|
||||
:config
|
||||
(add-hook 'tuareg-mode-hook 'merlin-mode))
|
||||
|
||||
(use-package merlin
|
||||
:defer t
|
||||
:ensure t)
|
||||
|
||||
(use-package reason-mode
|
||||
:defer t
|
||||
:ensure t
|
||||
:config (setq refmt-command 'opam))
|
||||
|
||||
(use-package dune
|
||||
:defer t
|
||||
:ensure t)
|
||||
|
||||
|
||||
(defhydra my-ocaml/context-hydra (:color teal :hint nil)
|
||||
"
|
||||
OCaml actions
|
||||
|
||||
^OCaml^ ^Actions^
|
||||
^^^^^^^^-----------------------------------------------------------------------
|
||||
_f_: Format buffer
|
||||
_o_: Update opam env
|
||||
"
|
||||
("q" nil "cancel" :color blue)
|
||||
|
||||
("f" ocamlformat)
|
||||
("o" tuareg-opam-update-env))
|
||||
|
||||
(defun load-ocaml-site-packages ()
|
||||
"Generate ocaml config."
|
||||
(let ((opam-share (ignore-errors (car (process-lines "opam" "config" "var" "share")))))
|
||||
(when (and opam-share (file-directory-p opam-share))
|
||||
;; Register Merlin
|
||||
(add-to-list 'load-path (expand-file-name "emacs/site-lisp" opam-share))
|
||||
(autoload 'merlin-mode "merlin" nil t nil)
|
||||
(autoload 'ocamlformat "ocamlformat" nil t nil)
|
||||
(autoload 'utop "utop" nil t nil)
|
||||
(autoload 'dune "dune" nil t nil)
|
||||
|
||||
;; Use opam switch to lookup ocamlmerlin binary
|
||||
(setq merlin-command 'opam)))
|
||||
(define-key tuareg-mode-map (kbd "C-c l") 'my-ocaml/context-hydra/body))
|
||||
|
||||
;; OCaml setup
|
||||
(add-hook 'tuareg-mode-hook 'merlin-mode)
|
||||
(add-hook 'tuareg-mode-hook 'load-ocaml-site-packages)
|
||||
(add-hook 'merlin-mode-hook (lambda ()
|
||||
(unbind-key "C-c C-d" merlin-mode-map)
|
||||
(unbind-key "C-c C-l" merlin-mode-map)
|
||||
(unbind-key "C-c C-n" merlin-mode-map)
|
||||
(unbind-key "C-c C-p" merlin-mode-map)
|
||||
(unbind-key "C-c C-r" merlin-mode-map)
|
||||
(unbind-key "C-c C-t" merlin-mode-map)
|
||||
(unbind-key "C-c C-x" merlin-mode-map)
|
||||
(unbind-key "C-c &" merlin-mode-map)))
|
||||
|
||||
;; Use tuareg-opam with lock files
|
||||
(add-to-list 'auto-mode-alist '("\\.opam.locked\\'" . tuareg-opam-mode))
|
||||
|
||||
(defhydra my-reason/context-hydra (:color teal :hint nil)
|
||||
"
|
||||
Reason actions
|
||||
|
||||
^Reason^ ^Actions^
|
||||
^^^^^^^^-----------------------------------------------------------------------
|
||||
_f_: Format buffer
|
||||
_o_: Update opam env
|
||||
"
|
||||
("q" nil "cancel" :color blue)
|
||||
|
||||
("f" refmt)
|
||||
("o" tuareg-opam-update-env))
|
||||
|
||||
(defun my-reason-mode ()
|
||||
"Generate reason config."
|
||||
(define-key reason-mode-map (kbd "C-c l") 'my-reason/context-hydra/body))
|
||||
|
||||
;; Reason setup
|
||||
(add-hook 'reason-mode-hook
|
||||
(lambda ()
|
||||
(add-hook 'before-save-hook #'refmt-before-save)))
|
||||
(add-hook 'reason-mode-hook 'my-reason-mode)
|
||||
(add-hook 'reason-mode-hook 'merlin-mode)
|
||||
|
||||
(provide 'icejam-lang-ocaml)
|
||||
;;; ocaml.el ends here
|
||||
29
lang/other.el
Normal file
29
lang/other.el
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
;;; 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)
|
||||
(use-package jenkinsfile-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 'icejam-lang-other)
|
||||
;;; other.el ends here
|
||||
49
lang/php.el
Normal file
49
lang/php.el
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
;;; php.el --- summary
|
||||
|
||||
;; Author: Maciej Szlosarczyk
|
||||
;; Maintainer: Maciej Szlosarczyk
|
||||
;; Version: 0.1-snapshot
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; php related settings
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'icejam-pkg-prog-mode "$HOME/.emacs.d/pkg/prog-mode.el")
|
||||
(require 'icejam-pkg-flycheck "$HOME/.emacs.d/pkg/flycheck.el")
|
||||
(require 'icejam-pkg-hydra "$HOME/.emacs.d/pkg/hydra.el")
|
||||
|
||||
(use-package php-mode
|
||||
:requires (lsp-mode lsp-ui)
|
||||
:ensure t)
|
||||
|
||||
(defhydra my-php/context-hydra (:color teal :hint nil)
|
||||
"
|
||||
^PHP actions^
|
||||
^^^^^^^^-----------------------------------------------------------------------
|
||||
_r_: Reload buffer
|
||||
_i_: Indent buffer _m_: iMenu
|
||||
"
|
||||
("q" nil "cancel" :color blue)
|
||||
|
||||
("r" revert-buffer-no-confirm)
|
||||
("i" indent-region)
|
||||
|
||||
("m" lsp-ui-imenu))
|
||||
|
||||
(defun activate-php-mode ()
|
||||
"All things php."
|
||||
(set-indent 4)
|
||||
(column-enforce-n 80)
|
||||
|
||||
(define-key php-mode-map (kbd "C-c l") 'my-php/context-hydra/body)
|
||||
|
||||
;; Company list override
|
||||
(add-to-list (make-local-variable 'company-backends)
|
||||
'(company-capf company-yasnippet)))
|
||||
|
||||
(add-hook 'php-mode-hook 'activate-php-mode)
|
||||
|
||||
(provide 'icejam-lang-php)
|
||||
;;; php.el ends here
|
||||
31
lang/purescript.el
Normal file
31
lang/purescript.el
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
;;; purescript.el --- summary
|
||||
|
||||
;; Author: Maciej Szlosarczyk
|
||||
;; Maintainer: Maciej Szlosarczyk
|
||||
;; Version: 0.1-snapshot
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; purescript does a thing.
|
||||
|
||||
;;; Code:
|
||||
(use-package purescript-mode
|
||||
:requires (lsp-mode lsp-ui)
|
||||
:ensure t)
|
||||
|
||||
(defun activate-purescript-mode ()
|
||||
"All things Purescript."
|
||||
(set-indent 2)
|
||||
(column-enforce-n 98)
|
||||
|
||||
;; Purescript indentation
|
||||
(purescript-indentation-mode t)
|
||||
|
||||
;; Company list override
|
||||
(add-to-list (make-local-variable 'company-backends)
|
||||
'(company-capf company-yasnippet)))
|
||||
|
||||
(add-hook 'purescript-mode-hook 'activate-purescript-mode)
|
||||
|
||||
(provide 'icejam-lang-purescript)
|
||||
;;; purescript.el ends here
|
||||
44
lang/ruby.el
Normal file
44
lang/ruby.el
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
;;; ruby -- summary
|
||||
;;; Commentary:
|
||||
;;; Code:
|
||||
|
||||
(require 'icejam-pkg-prog-mode "$HOME/.emacs.d/pkg/prog-mode.el")
|
||||
(require 'icejam-pkg-projectile "$HOME/.emacs.d/pkg/projectile.el")
|
||||
(require 'icejam-pkg-ctags "$HOME/.emacs.d/pkg/ctags.el")
|
||||
|
||||
(use-package rspec-mode :ensure t :defer t)
|
||||
(use-package ruby-end :ensure t :defer t)
|
||||
|
||||
(use-package enh-ruby-mode
|
||||
:requires (rspec-mode ruby-end)
|
||||
:ensure t
|
||||
:defer t)
|
||||
|
||||
(defun activate-ruby-mode ()
|
||||
"All things for ruby mode."
|
||||
(set-indent 2)
|
||||
|
||||
;; Disable reek syntax checking permanently
|
||||
(add-to-list (make-local-variable 'flycheck-disabled-checkers) 'ruby-reek)
|
||||
|
||||
;; Do not insert magic encoding comment at the begining of each file
|
||||
(setq ruby-insert-encoding-magic-comment nil)
|
||||
|
||||
;; Company list override
|
||||
(add-to-list (make-local-variable 'company-backends)
|
||||
'(company-etags company-yasnippet))
|
||||
|
||||
;; Set specific ctags command
|
||||
(setq-local ctags/refresh-command
|
||||
(format "ctags -e -R --languages=ruby -f %sTAGS %s. $(bundle list --paths)"
|
||||
(projectile-project-root) (projectile-project-root))))
|
||||
|
||||
(add-hook 'ruby-mode-hook 'enh-ruby-mode)
|
||||
(add-hook 'enh-ruby-mode-hook 'rspec-mode)
|
||||
(add-hook 'enh-ruby-mode-hook 'ruby-end-mode)
|
||||
(eval-after-load 'rspec-mode
|
||||
'(rspec-install-snippets))
|
||||
(add-hook 'enh-ruby-mode-hook 'activate-ruby-mode)
|
||||
|
||||
(provide 'icejam-lang-ruby)
|
||||
;;; ruby.el ends here
|
||||
40
lang/rust.el
Normal file
40
lang/rust.el
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
;;; rust -- summary
|
||||
;;; Commentary:
|
||||
;;; Code:
|
||||
|
||||
(require 'icejam-pkg-prog-mode "$HOME/.emacs.d/pkg/prog-mode.el")
|
||||
(require 'icejam-pkg-flycheck "$HOME/.emacs.d/pkg/flycheck.el")
|
||||
|
||||
(use-package rust-mode
|
||||
:ensure t
|
||||
:defer t)
|
||||
|
||||
(use-package flycheck-rust
|
||||
:ensure t
|
||||
:defer t
|
||||
:requires (rust-mode))
|
||||
|
||||
(use-package racer
|
||||
:ensure t
|
||||
:defer t
|
||||
:requires (rust-mode))
|
||||
|
||||
(defun activate-rust-mode ()
|
||||
"All things for Rust mode."
|
||||
(interactive)
|
||||
(set-indent 4)
|
||||
(column-enforce-n 99)
|
||||
|
||||
;; Run LSP
|
||||
(lsp-deferred)
|
||||
|
||||
;; Company list override
|
||||
(add-to-list (make-local-variable 'company-backends)
|
||||
'(company-capf company-yasnippet)))
|
||||
|
||||
(add-hook 'rust-mode-hook 'activate-rust-mode)
|
||||
(add-hook 'rust-mode-hook 'flycheck-rust-setup)
|
||||
(add-hook 'rust-mode-hook 'racer-mode)
|
||||
|
||||
(provide 'icejam-lang-rust)
|
||||
;;; rust.el ends here
|
||||
10
lang/sh.el
Normal file
10
lang/sh.el
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
;;; sh -- summary
|
||||
;;; Commentary:
|
||||
;;; Code:
|
||||
|
||||
(add-to-list 'auto-mode-alist '("\\.zsh\\'" . sh-mode))
|
||||
(add-to-list 'auto-mode-alist '("\\zshrc\\'" . sh-mode))
|
||||
(add-to-list 'auto-mode-alist '("\\.zshrc\\'" . sh-mode))
|
||||
|
||||
(provide 'icejam-lang-sh)
|
||||
;;; sh.el ends here
|
||||
51
lang/web.el
Normal file
51
lang/web.el
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
;;; web -- summary
|
||||
;;; Commentary:
|
||||
;;; Code:
|
||||
|
||||
(require 'icejam-pkg-lsp "$HOME/.emacs.d/pkg/lsp.el")
|
||||
(require 'icejam-pkg-flycheck "$HOME/.emacs.d/pkg/flycheck.el")
|
||||
|
||||
(use-package web-mode
|
||||
:requires (lsp-mode flycheck)
|
||||
:ensure t)
|
||||
|
||||
;; Eex Web mode
|
||||
(add-to-list 'auto-mode-alist '("\\.eex\\'" . web-mode))
|
||||
(add-to-list 'auto-mode-alist '("\\.leex\\'" . web-mode))
|
||||
|
||||
;; ERB mode
|
||||
(add-to-list 'auto-mode-alist '("\\.erb\\'" . web-mode))
|
||||
|
||||
;; React Typescript
|
||||
(add-to-list 'auto-mode-alist '("\\.tsx\\'" . web-mode))
|
||||
|
||||
;; Plain React
|
||||
(add-to-list 'auto-mode-alist '("\\.jsx\\'" . web-mode))
|
||||
|
||||
(setq web-mode-extra-auto-pairs
|
||||
'(("eex" . (("<%" "%>")))
|
||||
("leex" . (("<%" "%>")))
|
||||
("erb" . (("<%" "%>")
|
||||
("beg" "end")))))
|
||||
|
||||
(defun activate-web-mode ()
|
||||
"Web mode overrides."
|
||||
;; Indent web mode scripts by 2
|
||||
(setq-local web-mode-script-padding 2)
|
||||
(setq-local web-mode-code-indent-offset 2)
|
||||
(setq-local web-mode-markup-indent-offset 2)
|
||||
(setq-local lsp-eldoc-enable-hover nil)
|
||||
(setq-local flycheck-check-syntax-automatically '(save mode-enabled))
|
||||
|
||||
(add-to-list (make-local-variable 'company-backends)
|
||||
'(company-capf company-yasnippet))
|
||||
|
||||
(when (string-match-p "jsx" (buffer-file-name))
|
||||
(lsp))
|
||||
(when (string-match-p "tsx" (buffer-file-name))
|
||||
(lsp)))
|
||||
|
||||
(add-hook 'web-mode-hook 'activate-web-mode)
|
||||
|
||||
(provide 'icejam-lang-web)
|
||||
;;; web.el ends here
|
||||
Loading…
Add table
Add a link
Reference in a new issue