<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.
    主站蜘蛛池模板: 久久久久成人片免费观看蜜芽| 亚洲成av人无码亚洲成av人 | 亚洲综合伊人制服丝袜美腿| 91成人免费观看| 午夜亚洲国产理论秋霞| 亚洲免费视频网站| 911精品国产亚洲日本美国韩国 | 亚洲一卡2卡4卡5卡6卡残暴在线| 最近2018中文字幕免费视频| 亚洲经典在线中文字幕| 免费做爰猛烈吃奶摸视频在线观看| 亚洲av永久综合在线观看尤物| 成人午夜视频免费| 老司机免费午夜精品视频| 国产亚洲精品AA片在线观看不加载 | 亚洲最新黄色网址| 成人午夜18免费看| 特级毛片全部免费播放a一级| 曰韩亚洲av人人夜夜澡人人爽 | 免费无码AV片在线观看软件| 亚洲欧美日韩中文字幕在线一区| 国产成人免费永久播放视频平台| 日韩精品视频在线观看免费| 精品亚洲一区二区| 成人AV免费网址在线观看| 亚洲国产av玩弄放荡人妇| 日韩亚洲变态另类中文| 亚洲免费观看网站| 美女黄色免费网站| 亚洲视频2020| 国产精品视_精品国产免费| 在线观看片免费人成视频播放| 亚洲国产综合人成综合网站00| 国产真人无遮挡作爱免费视频| 中文字幕av免费专区| 亚洲一区二区三区亚瑟| 国产91精品一区二区麻豆亚洲| 成人黄色免费网站| xxxxx做受大片在线观看免费| 亚洲另类自拍丝袜第1页| 亚洲国产成人VA在线观看|