From 77372c5093b7c1394e63b5c33fec9698f6679114 Mon Sep 17 00:00:00 2001 From: Maciej Szlosarczyk Date: Mon, 20 Jan 2020 23:26:01 +0200 Subject: [PATCH] Add new packages Deft Ocaml ReasonML --- 03hydra.el | 9 +- 06company-yasnippet.el | 11 +- 10deft.el | 8 ++ init.el | 4 +- languages/ocaml.el | 130 +++++++++++++++++++++++ themes/themes-base16-zenburn-modified.el | 49 +++++++++ themes/themes.el | 3 +- 7 files changed, 206 insertions(+), 8 deletions(-) create mode 100644 10deft.el create mode 100644 languages/ocaml.el create mode 100644 themes/themes-base16-zenburn-modified.el diff --git a/03hydra.el b/03hydra.el index 32f3df5..779ae84 100644 --- a/03hydra.el +++ b/03hydra.el @@ -9,15 +9,16 @@ _a_: ag _s_: Switch project _m_: Git status _b_: Switch buffer _f_: Find file in project _C_: Git checkout _t_: Find file _g_: ag in current project _M_: Git blame -^^ _c_: Invalidate cache +_d_: Deft _c_: Invalidate cache ^^ _n_: New project ^^ _i_: ielm console " - ("q" nil "cancel" :color pink) + ("q" nil "cancel" :color blue) ("a" counsel-ag) ("b" ibuffer) ("t" counsel-find-file) + ("d" deft) ("s" counsel-projectile-switch-project) ("f" counsel-projectile-find-file) ("g" counsel-projectile-ag) @@ -41,7 +42,7 @@ _a_: align regexp _e_: eval region _s_: swiper " - ("q" nil "cancel" :color pink) + ("q" nil "cancel" :color blue) ("c" comment-line) ("r" vr/replace) @@ -66,7 +67,7 @@ _v_: split vertically __: Move up ^^ _p_: Previous buffer ^^ _n_: Next buffer " - ("q" nil "cancel" :color pink) + ("q" nil "cancel" :color blue) ("k" kill-buffer-and-window) ("h" split-window-below) diff --git a/06company-yasnippet.el b/06company-yasnippet.el index 3e7b3cb..824037b 100644 --- a/06company-yasnippet.el +++ b/06company-yasnippet.el @@ -69,11 +69,18 @@ (define-key company-active-map (kbd "C-p") 'company-select-previous-or-abort) (define-key company-active-map (kbd "C-n") 'company-select-next-or-abort) +(defun insert-space-and-complete () + "Insert space before trying to complete a section." + (interactive) + (save-excursion + (insert " ")) + (company-indent-or-complete-common)) + ;;; Yasnippet configuration (define-key prog-mode-map (kbd "C-c y") 'company-yasnippet) -(define-key prog-mode-map (kbd "") 'company-indent-or-complete-common) +(define-key prog-mode-map (kbd "") 'insert-space-and-complete) (define-key prog-mode-map (kbd "TAB") 'company-indent-or-complete-common) (define-key text-mode-map (kbd "C-c y") 'company-yasnippet) -(define-key text-mode-map (kbd "") 'company-indent-or-complete-common) +(define-key text-mode-map (kbd "") 'insert-space-and-complete) (define-key text-mode-map (kbd "TAB") 'company-indent-or-complete-common) diff --git a/10deft.el b/10deft.el new file mode 100644 index 0000000..19cf535 --- /dev/null +++ b/10deft.el @@ -0,0 +1,8 @@ +;; Notational velocity things +(use-package deft + :ensure t + :defer t + :config (setq deft-directory + (substitute-in-file-name "$HOME/OneDrive/deft"))) + +(global-set-key (kbd "C-c d d") 'deft) diff --git a/init.el b/init.el index 44c34dc..9d662d6 100644 --- a/init.el +++ b/init.el @@ -61,6 +61,7 @@ (load "$HOME/.emacs.d/07projectile.el" 'f 't) (load "$HOME/.emacs.d/08ctags.el" 'f 't) (load "$HOME/.emacs.d/09ispell.el" 'f 't) +(load "$HOME/.emacs.d/10deft.el" 'f 't) ;; Themes (load "$HOME/.emacs.d/themes/themes.el" 'f 't) @@ -77,6 +78,7 @@ (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) (custom-set-variables ;; custom-set-variables was added by Custom. @@ -88,7 +90,7 @@ ("60e09d2e58343186a59d9ed52a9b13d822a174b33f20bdc1d4abb86e6b17f45b" "85e6bb2425cbfeed2f2b367246ad11a62fb0f6d525c157038a0d0eaaabc1bfee" "3380a2766cf0590d50d6366c5a91e976bdc3c413df963a0ab9952314b4577299" "cea3ec09c821b7eaf235882e6555c3ffa2fd23de92459751e18f26ad035d2142" "8ffdc8c66ceeaf7921f4510a70d808f01b303e6b4d177c947b442e80d4228678" "b0c5c6cc59d530d3f6fbcfa67801993669ce062dda1435014f74cafac7d86246" "ad16a1bf1fd86bfbedae4b32c269b19f8d20d416bd52a87cd50e355bf13c2f23" "d9dab332207600e49400d798ed05f38372ec32132b3f7d2ba697e59088021555" "bc4c89a7b91cfbd3e28b2a8e9e6750079a985237b960384f158515d32c7f0490" "99c86852decaeb0c6f51ce8bd46e4906a4f28ab4c5b201bdc3fdf85b24f88518" "a85e40c7d2df4a5e993742929dfd903899b66a667547f740872797198778d7b5" default))) '(package-selected-packages (quote - (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)))) + (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)))) (custom-set-faces ;; custom-set-faces was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. diff --git a/languages/ocaml.el b/languages/ocaml.el new file mode 100644 index 0000000..6dad6ab --- /dev/null +++ b/languages/ocaml.el @@ -0,0 +1,130 @@ +;; ## added by OPAM user-setup for emacs / base ## cfd3c9b7837c85cffd0c59de521990f0 ## you can edit, but keep this line +(provide 'opam-user-setup) + +(use-package tuareg + :defer t + :ensure t) + +(use-package reason-mode + :defer t + :ensure t) + +;; Base configuration for OPAM + +(defun opam-shell-command-to-string (command) + "Similar to shell-command-to-string, but returns nil unless the process + returned 0, and ignores stderr (shell-command-to-string ignores return value)" + (let* ((return-value 0) + (return-string + (with-output-to-string + (setq return-value + (with-current-buffer standard-output + (process-file shell-file-name nil '(t nil) nil + shell-command-switch command)))))) + (if (= return-value 0) return-string nil))) + +(defun opam-update-env (switch) + "Update the environment to follow current OPAM switch configuration" + (interactive + (list + (let ((default + (car (split-string (opam-shell-command-to-string "opam switch show --safe"))))) + (completing-read + (concat "opam switch (" default "): ") + (split-string (opam-shell-command-to-string "opam switch list -s --safe") "\n") + nil t nil nil default)))) + (let* ((switch-arg (if (= 0 (length switch)) "" (concat "--switch " switch))) + (command (concat "opam config env --safe --sexp " switch-arg)) + (env (opam-shell-command-to-string command))) + (when (and env (not (string= env ""))) + (dolist (var (car (read-from-string env))) + (setenv (car var) (cadr var)) + (when (string= (car var) "PATH") + (setq exec-path (split-string (cadr var) path-separator))))))) + +(opam-update-env nil) + +(defvar opam-share + (let ((reply (opam-shell-command-to-string "opam config var share --safe"))) + (when reply (substring reply 0 -1)))) + +(add-to-list 'load-path (concat opam-share "/emacs/site-lisp")) +;; OPAM-installed tools automated detection and initialisation + +(defun opam-setup-tuareg () + (add-to-list 'load-path (concat opam-share "/tuareg") t) + (load "tuareg-site-file")) + +(defun opam-setup-add-ocaml-hook (h) + (add-hook 'tuareg-mode-hook h t) + (add-hook 'caml-mode-hook h t)) + +(defun opam-setup-complete () + (if (require 'company nil t) + (opam-setup-add-ocaml-hook + (lambda () + (company-mode) + (defalias 'auto-complete 'company-complete))) + (require 'auto-complete nil t))) + +(defun opam-setup-ocp-indent () + (opam-setup-complete) + (autoload 'ocp-setup-indent "ocp-indent" "Improved indentation for Tuareg mode") + (autoload 'ocp-indent-caml-mode-setup "ocp-indent" "Improved indentation for Caml mode") + (add-hook 'tuareg-mode-hook 'ocp-setup-indent t) + (add-hook 'caml-mode-hook 'ocp-indent-caml-mode-setup t)) + +(defun opam-setup-ocp-index () + (autoload 'ocp-index-mode "ocp-index" "OCaml code browsing, documentation and completion based on build artefacts") + (opam-setup-add-ocaml-hook 'ocp-index-mode)) + +(defun opam-setup-merlin () + (opam-setup-complete) + (require 'merlin) + (opam-setup-add-ocaml-hook 'merlin-mode) + + (defcustom ocp-index-use-auto-complete nil + "Use auto-complete with ocp-index (disabled by default by opam-user-setup because merlin is in use)" + :group 'ocp_index) + (defcustom merlin-ac-setup 'easy + "Use auto-complete with merlin (enabled by default by opam-user-setup)" + :group 'merlin-ac) + + ;; So you can do it on a mac, where `C-` and `C-` are used + ;; by spaces. + (define-key merlin-mode-map + (kbd "C-c ") 'merlin-type-enclosing-go-up) + (define-key merlin-mode-map + (kbd "C-c ") 'merlin-type-enclosing-go-down) + (set-face-background 'merlin-type-face "skyblue")) + +(defun opam-setup-utop () + (autoload 'utop "utop" "Toplevel for OCaml" t) + (autoload 'utop-minor-mode "utop" "Minor mode for utop" t) + (add-hook 'tuareg-mode-hook 'utop-minor-mode)) + +(defvar opam-tools + '(("tuareg" . opam-setup-tuareg) + ("ocp-indent" . opam-setup-ocp-indent) + ("ocp-index" . opam-setup-ocp-index) + ("merlin" . opam-setup-merlin) + ("utop" . opam-setup-utop))) + +(defun opam-detect-installed-tools () + (let* + ((command "opam list --installed --short --safe --color=never") + (names (mapcar 'car opam-tools)) + (command-string (mapconcat 'identity (cons command names) " ")) + (reply (opam-shell-command-to-string command-string))) + (when reply (split-string reply)))) + +(defvar opam-tools-installed (opam-detect-installed-tools)) + +(defun opam-auto-tools-setup () + (interactive) + (dolist (tool opam-tools) + (when (member (car tool) opam-tools-installed) + (funcall (symbol-function (cdr tool)))))) + +(opam-auto-tools-setup) +;; ## end of OPAM user-setup addition for emacs / base ## keep this line diff --git a/themes/themes-base16-zenburn-modified.el b/themes/themes-base16-zenburn-modified.el new file mode 100644 index 0000000..a9774f9 --- /dev/null +++ b/themes/themes-base16-zenburn-modified.el @@ -0,0 +1,49 @@ +;; base16-zenburn-modified-theme.el -- A base16 colorscheme + +;;; Commentary: +;; Base16: (https://github.com/chriskempson/base16) + +;;; Original Authors: +;; Scheme: elnawe +;; Template: Kaleb Elwert +;; Modification: Maciej Szlosarczyk + +;;; Code: + +;; Modifications +;; 03 made lighter by 10% #6f6f6f => #898989 +;; 0B made lighter by 10% #5f7f5f => #799979 + +(require 'base16-theme) + +(defvar base16-zenburn-modified-colors + '(:base00 "#383838" + :base01 "#404040" + :base02 "#606060" + :base03 "#898989" + :base04 "#808080" + :base05 "#dcdccc" + :base06 "#c0c0c0" + :base07 "#ffffff" + :base08 "#dca3a3" + :base09 "#dfaf8f" + :base0A "#e0cf9f" + :base0B "#799979" + :base0C "#93e0e3" + :base0D "#7cb8bb" + :base0E "#dc8cc3" + :base0F "#000000") + "All colors for Base16 Zenburn-Modified are defined here.") + +;; Define the theme +(deftheme base16-zenburn-modified) + +;; Add all the faces to the theme +(base16-theme-define 'base16-zenburn-modified base16-zenburn-modified-colors) + +;; Mark the theme as provided +(provide-theme 'base16-zenburn-modified) + +(provide 'base16-zenburn-modified-theme) + +;;; base16-zenburn-modified-theme.el ends here diff --git a/themes/themes.el b/themes/themes.el index d08b2e3..51cd59b 100644 --- a/themes/themes.el +++ b/themes/themes.el @@ -10,6 +10,7 @@ (blink-cursor-mode 0) (load "$HOME/.emacs.d/themes/themes-base16-not-harmonic.el" 'f 't) +(load "$HOME/.emacs.d/themes/themes-base16-zenburn-modified.el" 'f 't) (load-theme 'base16-mexico-light t t) (load-theme 'base16-ia-dark t t) (load-theme 'manoj-dark t t) @@ -27,7 +28,7 @@ (if (display-graphic-p) (progn (sml/apply-theme 'respectful) - (enable-theme 'base16-one-light)) + (enable-theme 'base16-material-palenight)) (progn (enable-theme 'base16-mexico-light) (setq base16-theme-256-color-source "base16-shell")))