自創小插件讓emacs支持工程項目

在emacs下一直沒有找到合適的工程項目類插件,因而本身寫了一個。主要的痛點以下: css

  1. 配置clang補全的時候須要指定搜索頭文件的路徑,沒辦法在.emacs文件裏把全部的路徑都加上,而且每次新建立一個工程項目的時候就要修改一次emacs配置文件實在是太痛苦了
  2. 因爲開發機器不是linux,因此不能在本地編譯,須要本地編輯完成後上傳到開發機上編譯(不想用tramp,由於不知到怎麼在遠程編輯的時候配置補全,估計就算折騰成功後也會很慢;無法mount遠端目錄到本地,由於網速太慢;不想在遠程shell裏面使用emacs,那個神奇的平臺沒有編譯好的emacs包)

插件的主要功能: linux

  1. C-x p 打開一個項目,項目的定義文件存放在一個特定目錄下,用lisp來描述加載這個項目的時候須要執行的初始化操做。
  2. 提供函數 proj-save-rsync 用來保存當前全部的 buffer 並調用一個腳本講本地的源碼上傳的遠程開發機器。

插件安裝方法: shell

  1. 複製下面的代碼到 .emacs 中:
    (defun proj-save-rsync ( ) 
      "Save buffers and do a command."
      (save-some-buffers)
      (shell-command proj-rsync-script )
      (interactive) 
      )
    
    (defun proj-load (arg)
      (interactive
       (list
        (completing-read "Choose one project: " (directory-files "~/.emacs.d/projects" nil "\\.el$") )))
      (load (concat "~/.emacs.d/projects/" arg))
      ;(insert arg)
      )
    
    (global-set-key (kbd "C-x p") 'proj-load)
    (global-set-key [f8] 'proj-save-rsync)
  2. 建立目錄
    mkdir ~/.emacs.d/projects
  3. 建立一個工程
    建立一個工程其實就是在 ~/.emacs.d/projects 裏面建立一個 projectname.el 文件,裏面的內容愛寫啥就寫啥,使用C-x p打開這個項目的時候會執行這個projectname.el。下面是個人一個項目文件:
    (setq proj-root "/path/to/the/source/root")    ;配置項目root path 
    (setq proj-rsync-script "/rsync/script.exp")   ;設置上傳代碼的腳本 
    (proj-ac-config proj-root)                     ;自定義的一個函數,設置clang搜索頭文件時候的路徑 
    (find-file proj-root)                          ;打開project的root path (cscope-set-initial-directory proj-root)       ;初始化cscope 
    (cscope-index-files proj-root)
相關文章
相關標籤/搜索