Add haskell mode, update ocaml mode

This commit is contained in:
Maciej 2020-08-08 23:34:56 +03:00
parent 005fb4fcfb
commit c169983db6
Signed by: maciej
GPG key ID: 41D62D42D3B0D765
9 changed files with 74 additions and 18 deletions

View file

@ -140,7 +140,7 @@
(use-package exec-path-from-shell
:if (memq window-system '(mac ns))
:ensure t
:config (add-to-list 'exec-path "/opt/local/bin")
:config (add-to-list 'exec-path "/usr/local/bin")
(exec-path-from-shell-initialize))
;; Draw underline lower

View file

@ -10,7 +10,7 @@
(setq tags-add-tables nil)
(defvar ctags/refresh-command
(format "uctags -e -R -f %sTAGS %s."
(format "ctags -e -R -f %sTAGS %s."
default-directory default-directory))
;; Sentinel function for capturing ctags

View file

@ -45,6 +45,7 @@
(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/haskell "$HOME/.emacs.d/languages/haskell.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")
@ -58,7 +59,11 @@
;; If there is more than one, they won't work right.
'(package-selected-packages
(quote
(which-key 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))))
(dante haskell-mode dune which-key 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)))
'(safe-local-variable-values
(quote
((haskell-process-use-ghci . t)
(haskell-indent-spaces . 4)))))
;; Improve font settings in Markdown code
(custom-set-faces

View file

@ -27,7 +27,7 @@
(setq-local
ctags/refresh-command
(format
"uctags -e -R --languages=C -f %sTAGS %s/*"
"ctags -e -R --languages=C -f %sTAGS %s/*"
(projectile-project-root) (projectile-project-root))))
(add-hook 'c-mode-hook 'activate-clang-mode)

View file

@ -80,7 +80,7 @@
(setq-local
ctags/refresh-command
(format
"uctags -e -R --languages=erlang -f %sTAGS %ssrc %sdeps %sapps %s_build %stest %slib/stdlib-* %slib/kernel-*"
"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)

39
languages/haskell.el Normal file
View file

@ -0,0 +1,39 @@
;;; haskell.el --- summary
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;; haskell does a thing.
;;; Code:
(require '05prog-mode "$HOME/.emacs.d/05prog-mode.el")
(require '05flycheck "$HOME/.emacs.d/05flycheck.el")
(require '05hydra "$HOME/.emacs.d/05hydra.el")
(use-package haskell-mode
:ensure t
:defer t)
(use-package dante
:ensure t
:defer t
:requires (haskell-mode))
(defun activate-haskell-mode ()
"Run this in haskell-mode."
(set-indent 2)
(column-enforce-n 80)
;; Company list override
(add-to-list (make-local-variable 'company-backends)
'(dante-company company-yasnippet)))
(add-hook 'haskell-mode-hook 'dante-mode)
(add-hook 'haskell-mode-hook 'activate-haskell-mode)
(provide 'languages/haskell)
;;; haskell.el ends here

View file

@ -17,16 +17,27 @@
:ensure t
:config (setq refmt-command 'opam))
(use-package dune
:defer t
:ensure t)
(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)))
(setq merlin-command 'opam))))
;; OCaml setup
(add-hook 'tuareg-mode-hook 'merlin-mode)
(add-hook 'tuareg-mode-hook 'load-ocaml-site-packages)
;; Reason setup
(add-hook 'reason-mode-hook

View file

@ -35,7 +35,7 @@
;; Set specific ctags command
(setq-local ctags/refresh-command
(format "uctags -e -R --languages=ruby -f %sTAGS %s. $(bundle list --paths)"
(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)

View file

@ -28,6 +28,7 @@
(load-theme 'base16-harmonic-light t t)
(load-theme 'base16-material-palenight t t)
(load-theme 'base16-mocha t t)
(load-theme 'base16-papercolor-light t t)
(load-theme 'planet t t)
(defun base16-mexico-light-custom ()
@ -39,7 +40,7 @@
(sml/apply-theme 'respectful)
(enable-theme (nth
(random 2)
'(base16-atelier-forest-light base16-harmonic-light))))
'(base16-mexico-light base16-harmonic-light))))
(progn
(defvar base16-theme-256-color-source "base16-shell")
(enable-theme 'base16-atelier-forest-light)))