Today
-
Yesterday
-
Total
-
  • Lisp 비교 : Emacs의 개발 환경
    Programmer/Emacs 2017. 7. 11. 03:36

    Emacs의 Programming 관련 공통 설정

    Lisp 공통 설정

    (use-package paredit
      :ensure t
      :diminish paredit-mode
      :init
      (use-package paredit-everywhere
        :ensure t))


    Common Lisp

    Common Lisp의 major-mode는 'lisp-mode'이다.
    보통 확장자 '*.lisp'나 '*.l'와 연결되어 있다.[각주:1]
    SLIME이라는 강력한 REPL 도구가 있다.

    Common Lisp 설정 예[각주:2]:

    (add-hook 'lisp-mode-hook (lambda ()
                                (setq indent-tabs-mode nil)
                                (paredit-mode t)
                                (helm-gtags-mode 1)))
    
    (use-package slime
      :ensure t
      :commands slime
      :init
      (setq inferior-lisp-program (or (executable-find "sbcl")
                                      (executable-find "/usr/bin/sbcl")
                                      (executable-find "/usr/local/bin/sbcl")
                                      "sbcl"))
      :config
      (require 'slime-autoloads)
      (slime-setup '(slime-fancy))
      (add-hook 'slime-repl-mode-hook (lambda () (paredit-mode t))))


    Scheme

    Scheme의 major-mode는 'scheme-mode'이다.
    확장자 '*.scm'을 사용하면 이 모드와 자동으로 연결된다.
    Common Lisp의 SLIME에 비슷한 것으로는 geiser가 있다.

    Scheme 설정 예:

    (add-hook 'scheme-mode-hook (lambda ()
                                  (setq indent-tabs-mode nil)
                                  (paredit-mode t)
                                  (helm-gtags-mode 1)))
    
    (use-package geiser
      :ensure t
      :init
      (setq geiser-active-implementations '(guile))
      (setq geiser-guile-binary (or (executable-find "guile")
                                    (executable-find "/usr/bin/guile")
                                    (executable-find "/usr/local/bin/guile")
                                    "guile")))


    Clojure

    최근 주목받고 있는 Lisp 변종인 Clojure의 major-mode는 'clojure-mode'이다.
    '*.clj' 파일을 열거나 만들면 이 모드에서 작업할 수 있다.
    Clojure 역시 CIDER라는 강력한 REPL 도구를 제공한다.

    Clojure 설정 예:

    (use-package clojure-mode
      :ensure t
      :init
      (use-package flycheck-clojure
        :ensure t
        :config (flycheck-clojure-setup))
      :config
      (add-hook 'clojure-mode-hook (lambda ()
                                     (setq indent-tabs-mode nil)
                                     (paredit-mode t)
                                     (subword-mode t))))
    
    (use-package cider
      :ensure t
      :commands (cider cider-connect cider-jack-in)
      :config
      (add-hook 'cider-mode-hook 'eldoc-mode)
      (add-hook 'cider-repl-mode-hook (lambda ()
                                        (paredit-mode t)
                                        (subword-mode t))))
    


    Emacs Lisp

    emacs는 emacs lisp로 만들어졌음으로 당연히 훌륭한 major 모드를 제공한다.
    '*.el', '.elisp' 또는 '.emacs' 파일을 열면 자동으로 'emacs-lisp-mode'에 들어간다.
    'ielm'은 Emacs Lisp를 위한 훌륭한 REPL 도구이다.

    Emacs Lisp 설정 예:

    (add-hook 'emacs-lisp-mode-hook (lambda ()
                                      (setq indent-tabs-mode nil)
                                      (turn-on-eldoc-mode)
                                      (eldoc-add-command
                                       'paredit-backward-delete
                                       'paredit-close-round)
                                      (paredit-mode t)))
    (add-hook 'lisp-interaction-mode-hook (lambda () (paredit-mode t)))
    (add-hook 'ielm-mode-hook (lambda () (paredit-mode t)))


    1. 명시적인 지정이 없으면 파일의 확장자(auto-mode-alist 변수에 명시된 확장자)나 내용(shebangs, magic-mode-alist 명시된 파일의 내용 패턴)을 보고 자동으로 major-mode를 결정한다. [본문으로]
    2. 나의 Emacs 설정 파일 Github: http://github.com/unipro/.emacs.d [본문으로]

    'Programmer > Emacs' 카테고리의 다른 글

    Emacs의 Programming 관련 공통 설정  (0) 2017.12.14
    Emacs의 Scala 개발 환경  (1) 2017.12.14
    CentOS 7 emacs-25.1 64bits RPM  (0) 2017.01.13
    CentOS 5 emacs-24.5 64bits RPM  (0) 2015.06.01
    CentOS 6 emacs-24.5 64bits RPM  (0) 2015.05.28

    댓글

Designed by Tistory.