From d2e4c202b000b0fd3a661090650588f488e9db64 Mon Sep 17 00:00:00 2001 From: Maciej Szlosarczyk Date: Thu, 9 Apr 2020 14:36:15 +0300 Subject: [PATCH] Add ReasonML --- .gitignore | 3 ++- 06company-yasnippet.el | 20 +------------------- 10deft.el | 3 ++- init.el | 12 ++++++++---- languages/elisp.el | 2 +- languages/elm.el | 15 +++++++++++++++ languages/javascript.el | 2 +- languages/markdown.el | 6 ++++-- languages/ocaml.el | 8 ++------ languages/reason.el | 21 +++++++++++++++++++++ themes/themes.el | 16 +++++++++------- 11 files changed, 66 insertions(+), 42 deletions(-) create mode 100644 languages/elm.el create mode 100644 languages/reason.el diff --git a/.gitignore b/.gitignore index 1dfed57..77ba098 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,5 @@ url/* transient/* .lsp-session-* eshell/* -.yas-compiled-snippets.el \ No newline at end of file +.yas-compiled-snippets.el +ac-comphist.dat diff --git a/06company-yasnippet.el b/06company-yasnippet.el index 824037b..a098033 100644 --- a/06company-yasnippet.el +++ b/06company-yasnippet.el @@ -7,26 +7,13 @@ :ensure t :defer t) -(use-package lsp-mode - :ensure t - :defer t) - -(use-package lsp-ui) - (use-package company :commands (company-indent-or-complete-common company-yasnippet) :requires (yasnippet - yasnippet-snippets - lsp-mode - lsp-ui) + yasnippet-snippets) :ensure t :defer t) -(use-package company-lsp - :ensure t - :requires company - :defer t) - (global-company-mode t) (yas-global-mode t) @@ -59,11 +46,6 @@ (company-dabbrev company-abbrev) )) -(setq-default - company-lsp-cache-candidates 1 ;; Cache LSP results - company-lsp-async 1 ;; Fetch LSP results asynchronously - ) - ;; Use standard emacs next and previous bindings for navigating company ;; suggestions (define-key company-active-map (kbd "C-p") 'company-select-previous-or-abort) diff --git a/10deft.el b/10deft.el index 0540f8b..b9dad1d 100644 --- a/10deft.el +++ b/10deft.el @@ -4,6 +4,7 @@ :defer t :config (setq deft-directory (substitute-in-file-name "$HOME/OneDrive/deft") - deft-default-extension "md")) + deft-default-extension "md" + deft-auto-save-interval 30.0)) (global-set-key (kbd "C-c d d") 'deft) diff --git a/init.el b/init.el index 9d662d6..ae89200 100644 --- a/init.el +++ b/init.el @@ -26,7 +26,6 @@ ;; Web web-mode - company-web js2-mode ;; Infrastructure files @@ -78,7 +77,8 @@ (load "$HOME/.emacs.d/languages/clang.el" 'f 't) (load "$HOME/.emacs.d/languages/clojure.el" 'f 't) (load "$HOME/.emacs.d/languages/kotlin.el" 'f 't) -(load "$HOME/.emacs.d/languages/ocaml.el" 'f 't) +(load "$HOME/.emacs.d/languages/reason.el" 'f 't) +(load "$HOME/.emacs.d/languages/markdown.el" 'f 't) (custom-set-variables ;; custom-set-variables was added by Custom. @@ -90,10 +90,14 @@ ("60e09d2e58343186a59d9ed52a9b13d822a174b33f20bdc1d4abb86e6b17f45b" "85e6bb2425cbfeed2f2b367246ad11a62fb0f6d525c157038a0d0eaaabc1bfee" "3380a2766cf0590d50d6366c5a91e976bdc3c413df963a0ab9952314b4577299" "cea3ec09c821b7eaf235882e6555c3ffa2fd23de92459751e18f26ad035d2142" "8ffdc8c66ceeaf7921f4510a70d808f01b303e6b4d177c947b442e80d4228678" "b0c5c6cc59d530d3f6fbcfa67801993669ce062dda1435014f74cafac7d86246" "ad16a1bf1fd86bfbedae4b32c269b19f8d20d416bd52a87cd50e355bf13c2f23" "d9dab332207600e49400d798ed05f38372ec32132b3f7d2ba697e59088021555" "bc4c89a7b91cfbd3e28b2a8e9e6750079a985237b960384f158515d32c7f0490" "99c86852decaeb0c6f51ce8bd46e4906a4f28ab4c5b201bdc3fdf85b24f88518" "a85e40c7d2df4a5e993742929dfd903899b66a667547f740872797198778d7b5" default))) '(package-selected-packages (quote - (tuareg reason-mode deft buffer-move tide gradle-mode kotlin-mode clj-refactor planet-theme cider clojure-mode erlang rspec-mode dap-mode lsp-ui company-lsp lsp-mode nginx-mode gitignore-mode js2-mode keyfreq company-web visual-regexp enh-ruby-mode counsel-projectile counsel ivy flycheck-rust flycheck hydra solarized-theme company-ansible alchemist column-enforce-mode yaml-mode ansible dockerfile-mode ruby-end dash-at-point base16-theme exec-path-from-shell)))) + (merlin reason-mode elm-mode deft buffer-move tide gradle-mode kotlin-mode clj-refactor planet-theme cider clojure-mode erlang rspec-mode dap-mode lsp-ui 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 alchemist column-enforce-mode yaml-mode ansible dockerfile-mode ruby-end dash-at-point base16-theme exec-path-from-shell)))) + +;; Improve font settings in Markdown code (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. - ) + '(font-lock-constant-face ((((type graphic)) (:foreground "#dfaf8f")) (((min-colors 256)) (:foreground "brightred")) (t (:foreground "brightred")))) + '(font-lock-type-face ((t (:foreground "#ffcb6b" :family "IBM Plex Mono")))) + '(markdown-code-face ((t (:inherit fixed-pitch :family "IBM Plex Mono"))))) diff --git a/languages/elisp.el b/languages/elisp.el index fd42eaa..a4bfebd 100644 --- a/languages/elisp.el +++ b/languages/elisp.el @@ -6,7 +6,7 @@ ;; Company list override (add-to-list (make-local-variable 'company-backends) - '(company-elisp company-yasnippet)) + '(company-yasnippet company-elisp)) (paredit-mode 1)) diff --git a/languages/elm.el b/languages/elm.el new file mode 100644 index 0000000..671df65 --- /dev/null +++ b/languages/elm.el @@ -0,0 +1,15 @@ +(use-package elm-mode + :ensure t + :defer t) + +(defun activate-elm-mode () + "All things Elixir." + (set-indent 2) + (column-enforce-n 80) + + ;; Company list override + (add-to-list (make-local-variable 'company-backends) + '(elm-company company-yasnippet)) + (define-key elm-mode-map (kbd "TAB") 'elm-indent-cycle)) + +(add-hook 'elm-mode-hook 'activate-elm-mode) diff --git a/languages/javascript.el b/languages/javascript.el index bb7c621..6a5e681 100644 --- a/languages/javascript.el +++ b/languages/javascript.el @@ -1,5 +1,5 @@ (use-package js2-mode - :requires (web-mode company-web lsp) + :requires (web-mode company-web) :ensure t) (use-package tide diff --git a/languages/markdown.el b/languages/markdown.el index 92e33ea..76e8ce5 100644 --- a/languages/markdown.el +++ b/languages/markdown.el @@ -1,6 +1,7 @@ (use-package markdown-mode :ensure t - :defer t) + :defer t + :init (setq-default markdown-command "pandoc")) (defun activate-markdown-mode () "Reconfigure markdown mode for your own purposes." @@ -11,6 +12,7 @@ (define-key markdown-mode-map (kbd "C-c ") nil) (define-key markdown-mode-map (kbd "C-c ") nil) (define-key markdown-mode-map (kbd "C-c ") nil) - (define-key markdown-mode-map (kbd "C-c ") nil)) + (define-key markdown-mode-map (kbd "C-c ") nil) + (define-key markdown-mode-map (kbd "C-c C-v") 'markdown-preview)) (add-hook 'markdown-mode-hook 'activate-markdown-mode) diff --git a/languages/ocaml.el b/languages/ocaml.el index 6dad6ab..0f89bd7 100644 --- a/languages/ocaml.el +++ b/languages/ocaml.el @@ -2,12 +2,8 @@ (provide 'opam-user-setup) (use-package tuareg - :defer t - :ensure t) - -(use-package reason-mode - :defer t - :ensure t) + :defer t + :ensure t) ;; Base configuration for OPAM diff --git a/languages/reason.el b/languages/reason.el new file mode 100644 index 0000000..6c0b1f2 --- /dev/null +++ b/languages/reason.el @@ -0,0 +1,21 @@ +(use-package merlin + :defer t + :ensure t) + +(use-package reason-mode + :defer t + :ensure t + :config (setq refmt-command 'opam)) + +(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) + ;; Use opam switch to lookup ocamlmerlin binary + (setq merlin-command 'opam))) + +(add-hook 'reason-mode-hook + (lambda () + (add-hook 'before-save-hook #'refmt-before-save))) +(add-hook 'reason-mode-hook 'merlin-mode) diff --git a/themes/themes.el b/themes/themes.el index 6deda30..e33ef01 100644 --- a/themes/themes.el +++ b/themes/themes.el @@ -28,20 +28,22 @@ (if (display-graphic-p) (progn (sml/apply-theme 'respectful) - (enable-theme 'base16-material-palenight)) + (enable-theme (nth + (random 2) + '(base16-zenburn-modified base16-material-palenight)))) (progn (enable-theme 'base16-mexico-light) (setq base16-theme-256-color-source "base16-shell"))) ;; Set font face ;;;;;;;;;;;;;;;;;;;;;; Font configuration ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defun set-font-size (size) - "Set font SIZE to X px." - (interactive "NNew font size: ") - (set-face-attribute 'default nil :font (format "IBM Plex Mono %d" size)) - (set-face-attribute 'mode-line nil :font (format "IBM Plex Mono %d" size))) +(defun set-font (name size) + "Set font to NAME and its SIZE to X pixels." + (interactive "sNew font: \nnEnter size for font %s: ") + (set-face-attribute 'default nil :font (format "%s %d" name size)) + (set-face-attribute 'mode-line nil :font (format "%s %d" name size))) -(set-font-size 16) +(set-font "IBM Plex Mono" 16) ;; Remove ugly black line (set-face-attribute 'vertical-border nil :foreground