iT邦幫忙

DAY 1
1

EMACS 新思維系列 第 1

[EMACS新思維 第四天] 關於包管理:el-get [中]

  • 分享至 

  • xImage
  •  

強大更勝 vundle 的 el-get 介紹之中篇。
關於el-get安裝及啟用,請參考前兩天的文章,簡單扼要的講了 Emacs 內建的 elpa-package 體系,以及安裝、使用 el-get 的方法。本文將假設你已經安裝好了el-get,然後準備更進階的動作。

本篇文章將深入探討 el-get 的:

  1. 指令操作
  2. Recipe寫作

一、指令操作:

套件安裝指令(不建議使用):

M-x el-get-install RET 套件名稱
M-x el-get-remove RET 套件名稱
M-x el-get-reinstall RET 套件名稱

關於這三個指令,字面意義很明瞭,但我非常不建議透過這樣的方式安裝套件。因為安裝之後,套件是以資料夾的型態存在於 ~/.emacs.d/el-get/ 內。你必須指定到該資料夾的路徑,好比說:

(add-to-list 'loda-path "~/.emacs.d/el-get/paredit-ver/")

才能透過 (require 'paredit) 載入。沒又被寫在 el-get 自己的載入列表內。

同步指令:

M-x el-get-self-update :自我同步
M-x el-get-update RET 套件名稱 :必須輸入套件名稱,更新此套件。更新完畢之後會編譯為 elc 檔案,且重新載入。
M-x el-get-update-all :同步所有安裝包,會需要花費較多的時間,一一從套件來源更新並編譯。
M-x el-get-reload :重新載入安裝列表,el-get-update-all 的時候也會執行。

這些指令除了更新套件之外,也會把它們編譯成elc檔案,可以更快速的執行。

Recipe操作指令:

M-x el-get-list-packages :列出所有可安裝的包(也就是有recipe的包,不論是el-get官方收錄的,或者是使用者自己新增的)
M-x el-get-describe RET 套件名稱 :開啟某個套件的描述文件
M-x el-get-find-recipe-file RET 套件名稱 :開啟某個套件的recipe

二、Recipe寫作:

以 BBDB 這個有名套件的 recipe 來解說。這也是一個 elisp 檔案。

(:name bbdb
       :type git
       :pkgname "barak/BBDB"
       :load-path ("./lisp" "./bits")
       :build ("./configure" "make autoloads" "make")
       :build/darwin ("./configure --with-emacs=/Applications/Emacs.app/Contents/MacOS/Emacs" "make autoloads" "make")
       :features bbdb
       :after (lambda () (bbdb-initialize))
       :info "texinfo")

recipe 資訊選項:

  1. type: 源碼託管點資訊
  2. pkgname: 包資訊
  3. load-path: 類似 linux 內的環境變數,告訴套件他可以從那邊找到他的資料庫
  4. build: 首次使用在源碼資料夾執行的命令
  5. build/darwin: Mac OSX 下的特殊指令
  6. feature: 提供的包的 emacs 指令前綴
  7. after: 包載入後立刻執行的指令,可以很長,是el-get設定檔案可攜性的來源
  8. info: 包內說明文件的格式

注意上篇在

(setq
 el-get-sources  
 '(el-get ...))

之後的,即 smex 及 magit,也是 recipe。若你的自定義 recipe 沒有覆蓋原有 recipe,相對應的資訊也不會被改動。這兩個自定義 recipe 包主要是寫入 :after,如此設定檔即不需額外設定。這是我們新思維最重要的基礎。有了它,我們可以不需要任何的第三方庫,也可維持套件完整與相依。


下一篇
[EMACS新思維 第五天] 關於包管理:el-get [下]
系列文
EMACS 新思維27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言