<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    Emacs + Clojure配置的幾個Tip

    Posted on 2012-05-19 00:57 dennis 閱讀(15314) 評論(11)  編輯  收藏 所屬分類: Clojure工具和命令

        很久沒更新博客了,在北京工作,忙碌并且充實。目前來說,Clojure最好的開發編輯器應該是Emacs + Slime的組合,利用swank-clojure這個項目,加上clojure-mode,可以完美地運行slime。編譯、運行、跳轉、文檔和引用查看甚至debug都可以搞定。具體配置恕不重復,看swank-clojure的文檔即可自己安裝起來,或者這篇中文博客windows上配置

        分享幾個Tip,也期待大家分享你們的使用心得。

        首先是自動在打開clj后綴文件的時候啟動執行clojure-jack-in與slime連接,可以在emacs配置里加上個callback:

    (eval-after-load "clojure-mode"
      '(progn
         (require 'slime)
         (require 'clojure-mode)
         (unless (slime-connected-p)
           (save-excursion (clojure-jack-in)))))
        這樣在打開clj為后綴的文件的時候,將自動啟動clojure-mode執行clojure-jack-in函數并且連接slime。

        將clj后綴的文件自動關聯到clojure-mode:
    (setq auto-mode-alist (cons '("\\.clj$" . clojure-mode) auto-mode-alist))
        通常來說如果你是利用marmalade安裝的,會自動關聯的。

        另外,啟動自動匹配括號、字符串引號等的paredit模式一定要啟動:
    (defun paredit-mode-enable () (paredit-mode 1))
    (add-hook 'clojure-mode-hook 'paredit-mode-enable)
    (add-hook 'clojure-test-mode-hook 'paredit-mode-enable)

       在使用clojure-mode或者clojure-test-mode的時候自動啟用paredit模式,括號再也不是問題。括號匹配提示一般是開啟的,如果沒有,強制開啟:

    ;;    顯示括號匹配
    (show-paren-mode t)
    (setq show-paren-style 'parentheses)

        slime更多配置,啟用IO重定向(多線程IO輸出都定向到SLIME repl)以及設置通訊字符編碼等:

    (eval-after-load "slime"
      '(progn
         (slime-setup '(slime-repl slime-fuzzy))
         ;;(setq slime-truncate-lines t)
         (setq  swank:*globally-redirect-io*  t)
         ;; (setq slime-complete-symbol-function ' slime-fuzzy-complete-symbol)
         (setq slime-net-coding-system 'utf-8-unix)))

        細心的朋友可能注意到我注釋了slime-fuzzy-complete的配置,這是一個支持更好的自動補全功能的SLIME插件(可以用縮寫來自動補全),可惜在我機器上沒有嘗試配置成功,有興趣你可以嘗試下。

        在REPL里支持語法高亮,一定要配置上:

    (add-hook 'slime-repl-mode-hook
              (defun clojure-mode-slime-font-lock ()
                (require 'clojure-mode)
                (let (font-lock-mode)
                  (clojure-mode-font-lock-setup))))

        單獨在clojure-mode(在其他mode里這些快捷鍵不會起作用)里配置快捷鍵可以這樣:
    (eval-after-load "clojure-mode"
      '(progn
         (require 'slime)
         (require 'clojure-mode)
         (define-key clojure-mode-map (kbd "M-/")  (quote slime-complete-symbol))
         (define-key clojure-mode-map (kbd "C-c s")  (quote slime-selector)))

       例如我這里將M-/作為自動補全的快捷鍵,因為meta鍵在我的Mac機器上設置為command鍵,因此自動補全的操作習慣就跟Eclipse類似。而slime-selector是一個非常有用的函數,用來跳轉到slime的一系列buffer,因此我綁定了C-c s快捷鍵。

        額外一提,在Mac osx下,將command作為meta鍵:
    ;;; I prefer cmd key for meta
    (setq mac-option-key-is-meta nil
          mac-command-key-is-meta t
          mac-command-modifier 'meta
          mac-option-modifier 'none)

        最后,期待大家不吝分享你的心得。
        

    評論

    # re: Emacs + Clojure配置的幾個Tip  回復  更多評論   

    2012-05-19 20:59 by 獨辮子
    收藏了,挺有用的

    # re: Emacs + Clojure配置的幾個Tip  回復  更多評論   

    2012-05-21 08:16 by tony.li.fly@gmail.com
    請問在linux上開發最好的編輯器是什么,如果是vim的話要裝哪些插件?

    # re: Emacs + Clojure配置的幾個Tip[未登錄]  回復  更多評論   

    2012-05-21 15:15 by xhh
    @tony.li.fly@gmail.com

    https://github.com/vim-scripts/VimClojure

    # re: Emacs + Clojure配置的幾個Tip  回復  更多評論   

    2012-05-21 23:19 by Unmi
    vim 自然是比不過 Emacs,但是 Emacs 的學習曲線太陡了些,曾經想好好學下 Emacs,每次都退卻了。最近在 Mac 下發現 TextMate 是個很好的東西,有很強大的 Bundle 支持,并且在 Windows 下也有對應品,即 e-editor,它和 TextMate 的 Bundle 是可以通用的。

    # re: Emacs + Clojure配置的幾個Tip  回復  更多評論   

    2012-05-22 23:16 by dennis
    @Unmi

    TextMate不錯,但是挺貴的,用盜版不合適。

    # re: Emacs + Clojure配置的幾個Tip  回復  更多評論   

    2012-05-22 23:17 by dennis
    @tony.li.fly@gmail.com
    Emacs不是Mac os專利啊。

    # Clojure新的開發工具Lightable  回復  更多評論   

    2013-04-10 22:59 by John Wang
    我在用Eclipse 的 Countclockwise 。感覺也不錯。

    另外 Clojure社區最近引起關注的是一款正在開發的IDE LightTable 。 我的關于clojure的新博客:
    http://wangjinquan.me/show/Clojure%20%E7%9A%84%E7%BC%96%E8%AF%91%E5%92%8C%E6%89%A7%E8%A1%8C

    # vitalcleansecomplete65113  回復  更多評論   

    2015-02-16 01:33 by Write more, thats all I have to say. Literally, it
    Write more, thats all I have to say. Literally, it seems as though you relied on the video to make your point. You definitely know what youre talking about, why waste your intelligence on just posting videos to your blog when you could be giving us something enlightening to read?

    # mp3gain38105  回復  更多評論   

    2016-02-08 14:55 by Good post. I learn something new and challenging o
    Good post. I learn something new and challenging on blogs I stumbleupon on a daily basis. It's always exciting to read through articles from other authors and practice a little something from other websites.
    主站蜘蛛池模板: caoporn国产精品免费| 色se01短视频永久免费| 亚洲黄页网在线观看| 亚洲国产精品无码久久青草| 99热免费在线观看| 老司机亚洲精品影院在线观看| 亚洲va在线va天堂va不卡下载| 国产精品无码一二区免费| 成人网站免费看黄A站视频| 亚洲AV日韩AV无码污污网站| 亚洲av激情无码专区在线播放 | 成年女人毛片免费播放视频m| 成在线人免费无码高潮喷水| 亚洲中文字幕无码久久| 亚洲爆乳无码一区二区三区| 国产高清视频在线免费观看| 91av免费观看| 国内精品免费久久影院| 黄页网址在线免费观看| 亚洲精品成人网站在线观看| 四虎影院在线免费播放| 亚洲免费视频在线观看| 日韩免费码中文在线观看| 亚洲国产精品人久久电影| 亚洲自偷自偷图片| 91免费国产在线观看| 成在人线av无码免费高潮水| 国产91在线|亚洲| 国产精品亚洲一区二区三区在线| 日本高清免费中文字幕不卡| 亚洲成人免费电影| 免费A级毛片无码A∨| 国产在线观看免费视频软件 | 免费黄网在线观看| 成人福利免费视频| 欧洲精品99毛片免费高清观看| 精品无码一级毛片免费视频观看| 亚洲国产日韩精品| 亚洲AV综合色区无码二区爱AV| 亚洲 日韩 色 图网站| 欧美激情综合亚洲一二区|