Vagrant / Clojure / Emacs

前端 未结 2 2141
醉话见心
醉话见心 2021-02-10 10:44

I want to put together a standard environment for exploring Clojure with Emacs. Has anyone got a recipe that would suit this? I\'m thinking of a Vagrant system running a flavour

相关标签:
2条回答
  • 2021-02-10 10:58
    vagrant box add preciseMinimal http://goo.gl/wxdwM
    

    Change to Clojure vagrant base folder

    vagrant init preciseMinimal
    vagrant up
    
    vagrant ssh
    

    or ssh to 127.0.0.1 port 2222 (or other port mentioned in "vagrant up" output)

    sudo apt-get update
    sudo apt-get install software-properties-common
    sudo add-apt-repository ppa:cassou/emacs
    sudo apt-get update
    sudo apt-get install emacs24 emacs24-el emacs24-common-non-dfsg
    sudo apt-get install clojure
    
    cd ~/
    mkdir bin
    
    sed '$ a\
    export PATH=~/bin:$PATH' ~/.bashrc
    

    exit and reconnect to ssh

    cd ~/bin
    wget https://raw.github.com/technomancy/leiningen/preview/bin/lein
    chmod +x lein
    ./lein
    
    
    cd ~
    cat >.emacs
    ; Package.el customization
    (package-initialize)
    (add-to-list 'package-archives
                 '("melpa" . "http://melpa.milkbox.net/packages/") t)
    
    ;; install packages
    (defvar my-packages '(
      auto-complete
      clojure-mode
      clojure-test-mode
      nrepl
      ac-nrepl
      paredit
      rainbow-delimiters
    ))
    
    (dolist (p my-packages)
      (when (not (package-installed-p p))
      (package-refresh-contents)
        (package-install p)))
    ;; The following line can be removed after first install to speed up startup
    (byte-recompile-directory (expand-file-name "~/.emacs.d") 0)
    
    (custom-set-variables
     ;; custom-set-variables 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.
     '(auto-save-default nil)
     '(backup-inhibited t t)
     '(cursor-type 'bar t)
     '(column-number-mode t)
     '(delete-selection-mode t)
     '(inhibit-startup-screen t)
     '(initial-scratch-message nil)
     '(tool-bar-mode nil)
     '(xterm-mouse-mode 1))
    
    ;; rainbow delimiters
    (require 'rainbow-delimiters)
    (global-rainbow-delimiters-mode)
    
    ;; paredit
    (add-hook 'clojure-mode-hook 'paredit-mode)
    (add-hook 'nrepl-mode-hook 'paredit-mode)
    (global-set-key [f7] 'paredit-mode)
    
    ;; clojure-mode
    (global-set-key [f9] 'nrepl-jack-in)
    
    ;; nrepl
    (add-hook 'nrepl-interaction-mode-hook 'nrepl-turn-on-eldoc-mode)
    (setq nrepl-popup-stacktraces nil)
    (add-to-list 'same-window-buffer-names "*nrepl*")
    (add-hook 'nrepl-mode-hook 'paredit-mode)
    
    ;; Auto complete
    (require 'auto-complete-config)
    (ac-config-default)
    (define-key ac-completing-map "\M-/" 'ac-stop)
    
    ;; ac-nrepl
    (require 'ac-nrepl)
    (add-hook 'nrepl-mode-hook 'ac-nrepl-setup)
    (add-hook 'nrepl-interaction-mode-hook 'ac-nrepl-setup)
    (eval-after-load "auto-complete" '(add-to-list 'ac-modes 'nrepl-mode))
    #CTRL-D to finish
    

    Grateful attributions: http://blog.worldcognition.com/2012/07/setting-up-emacs-for-clojure-programming.html

    0 讨论(0)
  • 2021-02-10 11:01

    A Github hosted, shell provisioned vagrant setup is located here:

    https://github.com/pattinsont/Ukelele

    All that should be required is a checkout and vagrant up.

    Once the VM is up, ssh onto box. Run emacs to complete install. Then M-x cider-jack-in

    0 讨论(0)
提交回复
热议问题