From 50e821983d9bded251e240cc9acbf4d087937a3b Mon Sep 17 00:00:00 2001 From: Fabio Scotto di Santolo Date: Fri, 3 Jan 2020 16:15:59 +0100 Subject: [PATCH] Aggiunta configurazione per Erlang e Clojure --- .emacs | 66 ++++++++------------- .emacs-custom.el | 2 +- .emacs.rc/clojure-rc.el | 98 +++++++++++++++++++++++++++++++ .emacs.rc/emacs-lisp-rc.el | 16 +++++ .emacs.rc/erlang-rc.el | 42 +++++++++++++ .emacs.rc/misc-rc.el | 12 ++++ .emacs.rc/shell-integration-rc.el | 6 ++ 7 files changed, 201 insertions(+), 41 deletions(-) create mode 100644 .emacs.rc/clojure-rc.el create mode 100644 .emacs.rc/erlang-rc.el create mode 100644 .emacs.rc/shell-integration-rc.el diff --git a/.emacs b/.emacs index d683a9e..428a9a9 100644 --- a/.emacs +++ b/.emacs @@ -4,76 +4,62 @@ ;without this line being ;specificaly here and not ;anywhere else ~_~ -(load "~/.emacs.rc/rc.el") -(load "~/.emacs.rc/misc-rc.el") + +(load "~/.emacs.rc/rc.el") ;It MUST keep here + +(load "~/.emacs.rc/alchemist.el") (load "~/.emacs.rc/appearance-rc.el") -(load "~/.emacs.rc/ido-smex-rc.el") +(load "~/.emacs.rc/autocommit-rc.el") (load "~/.emacs.rc/ccmode-rc.el") -(load "~/.emacs.rc/paredit-rc.el") -(load "~/.emacs.rc/emacs-lisp-rc.el") -(load "~/.emacs.rc/haskell-mode-rc.el") -(load "~/.emacs.rc/magit-rc.el") -(load "~/.emacs.rc/multiple-cursors-rc.el") -(load "~/.emacs.rc/openwith-rc.el") +(load "~/.emacs.rc/clojure-rc.el") +(load "~/.emacs.rc/company-rc.el") (load "~/.emacs.rc/dired-rc.el") -(load "~/.emacs.rc/helm-rc.el") -(load "~/.emacs.rc/yasnippet-rc.el") -(load "~/.emacs.rc/rainbow-rc.el") -(load "~/.emacs.rc/word-wrap-rc.el") +(load "~/.emacs.rc/editorconfig-rc.el") +(load "~/.emacs.rc/emacs-lisp-rc.el") +(load "~/.emacs.rc/eldoc-mode-rc.el") +(load "~/.emacs.rc/erlang-rc.el") +(load "~/.emacs.rc/haskell-mode-rc.el") +(load "~/.emacs.rc/ido-smex-rc.el") (load "~/.emacs.rc/js2-mode-rc.el") +(load "~/.emacs.rc/latex-mode-rc.el") +(load "~/.emacs.rc/magit-rc.el") +(load "~/.emacs.rc/misc-rc.el") +(load "~/.emacs.rc/move-text-rc.el") +(load "~/.emacs.rc/multiple-cursors-rc.el") +(load "~/.emacs.rc/nasm-mode-rc.el") (load "~/.emacs.rc/nxml-mode-rc.el") -(load "~/.emacs.rc/tramp-rc.el") +(load "~/.emacs.rc/openwith-rc.el") (load "~/.emacs.rc/org-mode-rc.el") (load "~/.emacs.rc/org-cliplink-rc.el") (load "~/.emacs.rc/org-babel-rc.el") (load "~/.emacs.rc/org-capture-rc.el") -(load "~/.emacs.rc/autocommit-rc.el") -(load "~/.emacs.rc/eldoc-mode-rc.el") +(load "~/.emacs.rc/paredit-rc.el") +(load "~/.emacs.rc/rainbow-rc.el") (load "~/.emacs.rc/recentf-mode-rc.el") -(load "~/.emacs.rc/company-rc.el") +(load "~/.emacs.rc/shell-integration-rc.el") (load "~/.emacs.rc/tide-rc.el") -(load "~/.emacs.rc/editorconfig-rc.el") -(load "~/.emacs.rc/nasm-mode-rc.el") -(load "~/.emacs.rc/latex-mode-rc.el") -(load "~/.emacs.rc/agda2-mode-rc.el") -(load "~/.emacs.rc/move-text-rc.el") -(load "~/.emacs.rc/alchemist.el") -(load "~/.emacs.rc/metals-rc.el") -(load "~/.emacs.rc/neotree-rc.el") -;;(load "~/.emacs.rc/powershell-rc.el") -;;(load "~/.emacs.rc/whitespace-mode-rc.el") +(load "~/.emacs.rc/tramp-rc.el") +(load "~/.emacs.rc/word-wrap-rc.el") +(load "~/.emacs.rc/yasnippet-rc.el") (add-to-list 'auto-mode-alist '("\\.ebi\\'" . lisp-mode)) ;;; Packages that don't require configuration (rc/require 'elixir-mode - 'scala-mode - 'd-mode 'yaml-mode 'glsl-mode 'tuareg - 'lua-mode 'less-css-mode 'graphviz-dot-mode 'clojure-mode 'cmake-mode - 'rust-mode - 'csharp-mode - 'nim-mode 'jinja2-mode 'markdown-mode - 'purescript-mode 'nix-mode 'dockerfile-mode 'love-minor-mode 'toml-mode - 'nginx-mode - 'kotlin-mode - 'go-mode - 'php-mode - 'racket-mode - 'qml-mode 'ag 'hindent 'elpy diff --git a/.emacs-custom.el b/.emacs-custom.el index 786fe9c..8f227ff 100644 --- a/.emacs-custom.el +++ b/.emacs-custom.el @@ -13,7 +13,7 @@ '(org-refile-use-outline-path (quote file)) '(package-selected-packages (quote - (atom-one-dark-theme alchemist company-c-headers company-cabal company-ctags company-ghc company-ghci company-go company-shell company-web company-erlang wombat-theme darcula-theme darcula-theme-theme zeal-at-point yaml-mode xquery-mode uuidgen tuareg tt-mode toml-mode tide smex slime rtags rainbow-mode racket-mode racer qml-mode purescript-mode powershell picolisp-mode php-mode paredit pacmacs package-lint org-pomodoro org-cliplink openwith nsis-mode nodejs-repl nix-mode nim-mode nginx-mode neotree nasm-mode multiple-cursors morganey-mode markdown-mode magit love-minor-mode less-css-mode kotlin-mode js2-mode jira-markup-mode jinja2-mode jade-mode jabber ido-ubiquitous htmlize helm-ls-git helm-git-grep helm-cmd-t haskell-mode handlebars-mode gruber-darker-theme groovy-mode graphviz-dot-mode gradle-mode google-translate go-mode glsl-mode ggtags fsharp-mode flycheck-rust fixmee evil erlang ensime emojify elpy elm-mode elfeed editorconfig dropdown-list dockerfile-mode d-mode csv-nav csharp-mode crux cmake-mode clojure-mode cil-mode buffer-move bnfc batch-mode ag ack))) + (flycheck-rebar3 clj-refactor clojure-snippets cider cider-decompile cider-eval-sexp-fu cider-hydra atom-one-dark-theme alchemist company-c-headers company-cabal company-ctags company-ghc company-ghci company-go company-shell company-web company-erlang wombat-theme darcula-theme darcula-theme-theme zeal-at-point yaml-mode xquery-mode uuidgen tuareg tt-mode toml-mode tide smex slime rtags rainbow-mode racket-mode racer qml-mode purescript-mode powershell picolisp-mode php-mode paredit pacmacs package-lint org-pomodoro org-cliplink openwith nsis-mode nodejs-repl nix-mode nim-mode nginx-mode neotree nasm-mode multiple-cursors morganey-mode markdown-mode magit love-minor-mode less-css-mode kotlin-mode js2-mode jira-markup-mode jinja2-mode jade-mode jabber ido-ubiquitous htmlize helm-ls-git helm-git-grep helm-cmd-t haskell-mode handlebars-mode gruber-darker-theme groovy-mode graphviz-dot-mode gradle-mode google-translate go-mode glsl-mode ggtags fsharp-mode flycheck-rust fixmee evil erlang ensime emojify elpy elm-mode elfeed editorconfig dropdown-list dockerfile-mode d-mode csv-nav csharp-mode crux cmake-mode clojure-mode cil-mode buffer-move bnfc batch-mode ag ack))) '(safe-local-variable-values (quote ((haskell-process-args-cabal-new-repl "--ghc-option=-ferror-spans" "--ghc-option=-Wno-missing-home-modules" "exe:HyperNerd") diff --git a/.emacs.rc/clojure-rc.el b/.emacs.rc/clojure-rc.el new file mode 100644 index 0000000..c9a6a1d --- /dev/null +++ b/.emacs.rc/clojure-rc.el @@ -0,0 +1,98 @@ +;;;; +;; Clojure +;;;; + +;; Enable paredit for Clojure +(add-hook 'clojure-mode-hook 'enable-paredit-mode) + +;; This is useful for working with camel-case tokens, like names of +;; Java classes (e.g. JavaClassName) +(add-hook 'clojure-mode-hook 'subword-mode) + +;; A little more syntax highlighting +(require 'clojure-mode-extra-font-locking) + +;; syntax hilighting for midje +(add-hook 'clojure-mode-hook + (lambda () + (setq inferior-lisp-program "lein repl") + (font-lock-add-keywords + nil + '(("(\\(facts?\\)" + (1 font-lock-keyword-face)) + ("(\\(background?\\)" + (1 font-lock-keyword-face)))) + (define-clojure-indent (fact 1)) + (define-clojure-indent (facts 1)) + (rainbow-delimiters-mode))) + +;;;; +;; Cider +;;;; + +;; provides minibuffer documentation for the code you're typing into the repl +(add-hook 'cider-mode-hook 'eldoc-mode) + +;; go right to the REPL buffer when it's finished connecting +(setq cider-repl-pop-to-buffer-on-connect t) + +;; When there's a cider error, show its buffer and switch to it +(setq cider-show-error-buffer t) +(setq cider-auto-select-error-buffer t) + +;; Where to store the cider history. +(setq cider-repl-history-file "~/.emacs.d/cider-history") + +;; Wrap when navigating history. +(setq cider-repl-wrap-history t) + +;; enable paredit in your REPL +(add-hook 'cider-repl-mode-hook 'paredit-mode) + +;; Use clojure mode for other extensions +(add-to-list 'auto-mode-alist '("\\.edn$" . clojure-mode)) +(add-to-list 'auto-mode-alist '("\\.boot$" . clojure-mode)) +(add-to-list 'auto-mode-alist '("\\.cljs.*$" . clojure-mode)) +(add-to-list 'auto-mode-alist '("lein-env" . enh-ruby-mode)) + + +;; key bindings +;; these help me out with the way I usually develop web apps +(defun cider-start-http-server () + (interactive) + (cider-load-current-buffer) + (let ((ns (cider-current-ns))) + (cider-repl-set-ns ns) + (cider-interactive-eval (format "(println '(def server (%s/start))) (println 'server)" ns)) + (cider-interactive-eval (format "(def server (%s/start)) (println server)" ns)))) + + +(defun cider-refresh () + (interactive) + (cider-interactive-eval (format "(user/reset)"))) + +(defun cider-user-ns () + (interactive) + (cider-repl-set-ns "user")) + +(eval-after-load 'cider + '(progn + (define-key clojure-mode-map (kbd "C-c C-v") 'cider-start-http-server) + (define-key clojure-mode-map (kbd "C-M-r") 'cider-refresh) + (define-key clojure-mode-map (kbd "C-c u") 'cider-user-ns) + (define-key cider-mode-map (kbd "C-c u") 'cider-user-ns))) + +;; Customizations relating to editing a buffer. + +;; Key binding to use "hippie expand" for text autocompletion +;; http://www.emacswiki.org/emacs/HippieExpand +(global-set-key (kbd "M-/") 'hippie-expand) + +;; Lisp-friendly hippie expand +(setq hippie-expand-try-functions-list + '(try-expand-dabbrev + try-expand-dabbrev-all-buffers + try-expand-dabbrev-from-kill + try-complete-lisp-symbol-partially + try-complete-lisp-symbol)) + diff --git a/.emacs.rc/emacs-lisp-rc.el b/.emacs.rc/emacs-lisp-rc.el index 9a08855..f4e09d3 100644 --- a/.emacs.rc/emacs-lisp-rc.el +++ b/.emacs.rc/emacs-lisp-rc.el @@ -3,3 +3,19 @@ (local-set-key (kbd "C-c C-j") (quote eval-print-last-sexp)))) (add-to-list 'auto-mode-alist '("Cask" . emacs-lisp-mode)) + +;; Automatically load paredit when editing a lisp file +;; More at http://www.emacswiki.org/emacs/ParEdit +(autoload 'enable-paredit-mode "paredit" "Turn on pseudo-structural editing of Lisp code." t) +(add-hook 'emacs-lisp-mode-hook #'enable-paredit-mode) +(add-hook 'eval-expression-minibuffer-setup-hook #'enable-paredit-mode) +(add-hook 'ielm-mode-hook #'enable-paredit-mode) +(add-hook 'lisp-mode-hook #'enable-paredit-mode) +(add-hook 'lisp-interaction-mode-hook #'enable-paredit-mode) +(add-hook 'scheme-mode-hook #'enable-paredit-mode) + +;; eldoc-mode shows documentation in the minibuffer when writing code +;; http://www.emacswiki.org/emacs/ElDoc +(add-hook 'emacs-lisp-mode-hook 'turn-on-eldoc-mode) +(add-hook 'lisp-interaction-mode-hook 'turn-on-eldoc-mode) +(add-hook 'ielm-mode-hook 'turn-on-eldoc-mode) diff --git a/.emacs.rc/erlang-rc.el b/.emacs.rc/erlang-rc.el new file mode 100644 index 0000000..24ed4e8 --- /dev/null +++ b/.emacs.rc/erlang-rc.el @@ -0,0 +1,42 @@ +(use-package ivy-erlang-complete + :ensure t) + +(use-package flycheck + :ensure t + :delight + :config (global-flycheck-mode)) + +(use-package hydra + :defer 2 + :bind ("C-c f" . hydra-flycheck/body)) + +(defhydra hydra-flycheck (:color blue) + " + ^ + ^Errors^ + ^──────^ + _<_ previous + _>_ next + _l_ list + _q_ quit + ^^ + " + ("q" nil) + ("<" flycheck-previous-error :color pink) + (">" flycheck-next-error :color pink) + ("l" flycheck-list-errors)) + +(use-package erlang + :load-path ("/usr/lib/erlang/lib/tools-3.3/emacs/") + :mode (("\\.erl?$" . erlang-mode) + ("rebar\\.config$" . erlang-mode) + ("relx\\.config$" . erlang-mode) + ("sys\\.config\\.src$" . erlang-mode) + ("sys\\.config$" . erlang-mode) + ("\\.config\\.src?$" . erlang-mode) + ("\\.config\\.script?$" . erlang-mode) + ("\\.hrl?$" . erlang-mode) + ("\\.app?$" . erlang-mode) + ("\\.app.src?$" . erlang-mode) + ("\\Emakefile" . erlang-mode))) + diff --git a/.emacs.rc/misc-rc.el b/.emacs.rc/misc-rc.el index 7ef1a2a..0c515c6 100644 --- a/.emacs.rc/misc-rc.el +++ b/.emacs.rc/misc-rc.el @@ -132,7 +132,18 @@ This command does the inverse of `fill-paragraph'." (setq x-alt-keysym 'meta) (setq confirm-kill-emacs 'y-or-n-p) +;; Changes all yes/no questions to y/n type +(fset 'yes-or-no-p 'y-or-n-p) +;; shell scripts +(setq-default sh-basic-offset 2) +(setq-default sh-indentation 2) + +;; No need for ~ files when editing +(setq create-lockfiles nil) + +;; Go straight to scratch buffer on startup +(setq inhibit-startup-message t) (add-hook 'emacs-startup-hook (lambda () @@ -143,3 +154,4 @@ This command does the inverse of `fill-paragraph'." (server-start) + diff --git a/.emacs.rc/shell-integration-rc.el b/.emacs.rc/shell-integration-rc.el new file mode 100644 index 0000000..7460b0c --- /dev/null +++ b/.emacs.rc/shell-integration-rc.el @@ -0,0 +1,6 @@ +;; Sets up exec-path-from shell +;; https://github.com/purcell/exec-path-from-shell +(when (memq window-system '(mac ns)) + (exec-path-from-shell-initialize) + (exec-path-from-shell-copy-envs + '("PATH")))