Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为clojure、evil、hinting和paren突出显示设置emacs?_Emacs_Clojure_Leiningen_Code Hinting_Evil Mode - Fatal编程技术网

如何为clojure、evil、hinting和paren突出显示设置emacs?

如何为clojure、evil、hinting和paren突出显示设置emacs?,emacs,clojure,leiningen,code-hinting,evil-mode,Emacs,Clojure,Leiningen,Code Hinting,Evil Mode,我对Emacs和Clojure都是全新的,我希望设置与视频类似的提示和语法突出显示。我已安装: Emacs 24.x 莱宁根2.x 果酱 …然后在Emacs内并通过Marmalade安装以下软件包: 邪恶的 clojure模式 nrepl 我的大问题是这些主要/次要模式是如何相互作用的,是否有一种“正确”的方式来设置这些东西? 我的小问题是如何获得漂亮的语法突出显示和代码暗示? 谢谢 我列出了我的设置。有些东西是多余的,因为我没有 用Clojure写了一段时间,但我检查了一下,它仍然有效

我对Emacs和Clojure都是全新的,我希望设置与视频类似的提示和语法突出显示。我已安装:

  • Emacs 24.x
  • 莱宁根2.x
  • 果酱
…然后在Emacs内并通过Marmalade安装以下软件包:

  • 邪恶的
  • clojure模式
  • nrepl
我的大问题是这些主要/次要模式是如何相互作用的,是否有一种“正确”的方式来设置这些东西?
我的小问题是如何获得漂亮的语法突出显示和代码暗示?
谢谢

我列出了我的设置。有些东西是多余的,因为我没有 用Clojure写了一段时间,但我检查了一下,它仍然有效

  • 使用
    clojure
    启动nrepl。 如果
    project.clj
    位于适当的目录中,您可能会遇到一些问题, 但你应该弄清楚这一点
  • 打开一个源文件,例如
    foo.clj
  • 使用C-C-l调用
    nrepl加载文件
    顺便说一下,这是将文件加载到进程中的规范快捷方式。 它将适用于通用Lisp、Python等
  • 使用C-C-z切换到repl。 这也是适用于许多语言的规范快捷方式
  • 以下是设置代码:

    (require 'clojure-mode)
    (defun set-syntax-parens ()
      "highlight []{} etc."
      (interactive)
      (modify-syntax-entry ?[ "(]")
      (modify-syntax-entry ?] ")[")
      (modify-syntax-entry ?{ "(}")
      (modify-syntax-entry ?} "){"))
    (defvar clojure.jars '("clojure-1.3.0.jar" 
                           "swank-clojure-1.4.2.jar" 
                           "clojure-contrib-1.2.0.jar"))
    (defvar clojure.jars.d (concat dropbox.d "source/clojure/lib/"))
    (defvar clojure.classpath 
      (apply #'concat 
             (mapcar (lambda (jar) (concat clojure.jars.d jar path-separator)) 
                     clojure.jars)))
    (setq clojure.classpath 
          (concat clojure.classpath 
                  dropbox.d "source/clojure/include/" 
                  path-separator))
    ;;;###autoload
    (defun clojure ()
      (interactive)
      (nrepl-jack-in))
    (defvar clojure-server-cmd 
      (concat "java -Xss4096k -cp " clojure.classpath " clojure.main &"))
    (add-hook 'clojure-mode-hook
          (lambda()
            (set-syntax-parens)))
    (require 'nrepl)
    (add-hook 'nrepl-mode-hook
          (lambda()
            (define-key nrepl-mode-map (kbd "C-l") 'nrepl-clear-buffer)))
    

    以下是执行部分:


    这在任何地方都可以使用,这需要一点习惯,尽管这完全值得,因为paredit和Clojure的使用更加有趣。至少一旦你掌握了关于咕噜咕噜和呕吐的知识

    请查看Emacs Live,它是由Sam Aaron创建的完整Emacs配置。他对Clojure的分配进行编码,因此这种“包含电池”的设置非常适合Clojure编码

    一旦您克隆了它,请按照您启动并运行的说明进行操作
    Clojure、nrepl、git等等

    你想学Emacs吗?我只想指出,如果你是一个Vim用户(从邪恶中猜测),那么vimclojure static和fireplace分别是一个非常好的语法高亮显示和REPL交互。我认为自己是一个新手VIM用户,但我发现安装邪恶比用Emacs的快捷方式在Emacs教程中导航更为快捷。我同意Emacs学习曲线的其他方面,因为它似乎与Clojure更好地集成。仅供参考:视频中显示的设置可在此处获得:。您只需安装它,
    lein repl
    和M-x nrepl,然后就可以开始了。像这样手动添加clojure类路径做了什么?我必须这样做才能在当天添加contrib-1.2。您仍然可以使用此技术加载不是由
    lein
    管理的内容。这是您的.emacs文件的内容吗?不是。它位于
    source/site lisp/modes/clojure.el
    中。当调用
    clojure
    时,它将自动加载。但是你可以把它放在
    ~/.emacs
    中,但不能放在邪恶中。我认为这是最难的部分。
    (when (not package-archive-contents)                                                                                                                                      
      (package-refresh-contents))                                                                                                                                             
    
    ;; Add in your own as you wish:                                                                                                                                           
    (defvar my-packages '(starter-kit starter-kit-lisp starter-kit-bindings clojure-mode                                                                                      
                           nrepl auto-complete ac-nrepl org rainbow-delimiters)                                                                                                
      "A list of packages to ensure are installed at launch.")                                                                                                                
    
    (dolist (p my-packages)                                                                                                                                                   
      (when (not (package-installed-p p))                                                                                                                                     
        (package-install p)))                                                                                                                                                 
    
    (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))                                                                                                                                
    (defun set-auto-complete-as-completion-at-point-function ()                                                                                                               
      (setq completion-at-point-functions '(auto-complete)))                                                                                                                  
    
    (add-hook 'auto-complete-mode-hook 'set-auto-complete-as-completion-at-point-function)                                                                                    
    
    (add-hook 'nrepl-mode-hook 'set-auto-complete-as-completion-at-point-function)                                                                                            
    (add-hook 'nrepl-interaction-mode-hook 'set-auto-complete-as-completion-at-point-function)                                                                                
    (define-key nrepl-interaction-mode-map (kbd "C-c C-d") 'ac-nrepl-popup-doc)                                                                                               
    (add-hook 'prog-mode-hook 'auto-complete-mode)                                                                                                                            
    
    (add-hook 'nrepl-interaction-mode-hook                                                                                                                                    
              'nrepl-turn-on-eldoc-mode)                                                                                                                                    
    
    (add-hook 'nrepl-mode-hook 'paredit-mode)