2013年1月30日 星期三

三種安裝org mode的方法及emacs小技巧

 

三種在ubuntu 12.04+emacs 23上安裝org mode的方法(emacs 24己預裝)


依據每個人對ubuntu及emacs的了解程度,安裝方法如下

方法1:從主站下載原始碼並編譯 。此法當然最update,但要會make。 參 http://orgmode.org/manual/Installation.html

方法2:(ubuntu專屬)使用apt-get安裝。此法最保險,不需要會make,但可能版本沒那麼新

方法3:使用 elpa 在emacs裏直接安裝。此法可能要了解emacs到一個程度之後才會用。記得參考這裏加上設定,安裝 org org-plus-contrib 其中一個package。
 (org-plus-contrib 在三大elpa主站均沒有提供)
ps. 根據了解,此安裝方式目前看來有點問題…

emacs小技巧

 

安裝starter-kit(需確定org mode己安裝完畢, emacs 24己預裝)


http://eschulte.me/emacs24-starter-kit/
https://github.com/technomancy/emacs-starter-kit

有點神奇的雙胞事件,google的排名和elpa的實際安裝檔來源不同,我暫且相信elpa。目前猜測,有人branch了原作,加入literate programming/org mode的元素後,原作不讓merge,且雙方各自自行開發,branch者立馬冏了,顧不得血統的問題,狂寫文件,結果在pagerank上硬是幹掉原作者。根據branch者的語氣,我猜他沒有去檢查org mode的安裝情況,並且逕自斷了backward compatibility...

贊曰︰還是用elpa比較省事。

Misc


http://lifegoo.pluskid.org/wiki/EmacsTip.html

一些小技巧,主要是C-h的說明、auto complete的快捷鍵、hippie-expand的介紹

http://slashusr.wordpress.com/2010/09/29/three-nifty-alternatives-to-the-m-tab-key-in-emacs-and-a-replacement/

M-通常己經被系統佔用了,此文介紹其它按鍵以達到相同功能

http://www.masteringemacs.org/articles/2011/02/08/mastering-key-bindings-emacs/

推廣來說,key bindings的管理也是一門學問啊…

2013年1月29日 星期二

Literate Programming 文學編程(LP)

第一次看到這個字眼是因為org mode中有一個org-babel,號稱是LP的實作

一般寫程式時,會有放注解的地方,或是產生一堆文件;

LP的思路完全相反,但也更符合人性︰寫文件,然後程式只是附帶的產物

當然也可能有些盲點,例如,會失去IDE中的許多便利,如auto complete等,這己經夠令人頭大了

而且程式中的語意,LP未必有對應的工具去表達,例如#include的含入檔

當直接對tangle的產出程式修改時,要把修改反映回LP文件中也是一件麻煩事

http://josephj.com/event/2012/frontend-beijing/%E6%96%87%E5%AD%B8%E7%B7%A8%E7%A8%8B.html

這個網頁介紹得相當的不錯,作者是從iOS的Leo來作介紹

http://angelonotes.blogspot.tw/2012/07/literate-programming-cweb.html

原汁原味的LP介紹,Knuth當年的cweb,可讀性有點…難怪org mode會取代它

http://kanru.info/blog/archives/2011/07/07/literate-programming/

這是另一個使用notangle的例子,比較有一點實用性

http://www.cnblogs.com/bamanzi/archive/2012/05/12/org-mode-so-powerful.html

這裏面有一段關於LP的介紹,及org babel在實作.emacs的LP時需要的設定

http://www.perlmonks.org/?node_id=735862

LP的爭議一直存在,主要是說,這麼詳盡的注解是否反而降低了生產力?

但是如果是用org mode來取代原版LP使用的文件系統TEX/LaTEX的話,能突顯當前關注的焦點所在,我認為很有用

不過更麻煩的一件事是,編譯時錯誤訊息回報的行號,在LP的原始文件對應到哪裏呢?debug時也會遇到相同的問題。這可能才是使LP發展停滯不前的主因…

http://www.jstatsoft.org/v46/i03/paper


以org mode中LP的應用為題發表的論文,我覺得沒有把org mode的優點發揮出來

http://www.sdragons.org/Software/Perl/LitPerl.html

這是比較實際的例子,用perl作為實作語言。附帶一提,該作者的網頁滿有可看性,例如perl的cheatsheet

WEB/CWEB/NOWEB/NUWEB


 http://www.cs.tufts.edu/~nr/noweb/nuweb.html

這篇文章中解釋了LP的起源和流變,而它本身也就是nuweb的原始檔,brilliant!!

2013年1月28日 星期一

Emacs套件試用︰ Starter Kit、minimap、 準IDE化設置

Starter Kit


用elpa一裝完,想用C-x C-f開檔時,赫然發現,提示檔名的功能整合進minibuffer裏面了
很好  很強大  怎麼不早說呢真是~~

不過這沒有包括在emacs 24的預裝套件中,或許這個風格的轉變有點太大了?

Starter Kit G-Client


這也滿不得了的,可以直接抓google上的文件…這樣很多自動化的工作都可以整合了

minimap

 http://www.emacswiki.org/emacs/MiniMap

原來是實作在sublime中的功能,視覺效果很不錯啊…

準IDE化設置


大致上流程是這樣的
  1. gdb系列
    1. 作者安裝:multi-gud(gud的改良版), multi-gdb-ui(gdb-ui的改良版)。可能已經沒有人在維護了,參 http://www.inet.net.nz/~nickrob/ 。套件作者也承認,emacs設計的理念是成為文字編輯器,對內嵌控制開發等小型c許言專案或許ok,但對大型專案的開發仍然應以eclipse CDT來進行。他也認為gdb-mi受到商業利益的考量影響,未來可能會停止開發
    2. emacs 24 (win7)預裝:gdb-mi, gud
    3. linux:gdb
  2. cedet + ecb(可能已經沒有人在維護了,因此也沒有預裝在emacs 24當中)
  3. auto complete + yasnippet
  4. refactoring工具,如ropexxxx系列
http://cn-popeye.iteye.com/blog/1163548

附圖中有一個是elisp的畫面,令我滿想試試的

http://www.cnblogs.com/karotte/archive/2012/06/06/2537670.html

附圖非常詳盡,感覺不照著試試看對不起作者啊…我猜 https://code.google.com/p/nextide/ 這個 NextIdE 套件就是他在維護的

http://stackoverflow.com/questions/5238245/elisp-programming-whats-the-best-setup

為什麼好像都沒有專為emacs lisp開發的ide呢?這篇文章分析得很好,大意是說,elisp適合開發小型專案,需要用到的東西都在emacs裏面了

emacs elpa--程式庫管理套件

安裝


之前在win7上裝的是emacs 24,所以elpa己經自帶了。如果沒有,像我另外一個安裝ubuntu 12.04的作業系統,自帶的是emacs 23,那就要安裝並在.emacs中加入適當的宣告來初始化,參 http://emacswiki.org/emacs/ELPA#toc5 。具體作法如下︰

方法1


http://tromey.com/elpa/install.html

http://ergoemacs.org/emacs/emacs23_install_elpa.html
在剛安裝完emacs就執行這步比較好,在下完package.el到~/.emacs.d/裏面以後,它會在.emacs後加上類似方法2中提到的那幾行以載入之
p.s. replace package.el according to http://stackoverflow.com/questions/7287947/adding-marmalade-as-package-source

方法2==> 推薦

  1. 下載package.el到emacs認得的目錄
  2. 改寫.emacs,加入以下幾行,然後重啟emacs
(require 'package)
(setq package-archives
            '(("gnu" . "http://elpa.gnu.org/packages/")
             ("marmalade" . "http://marmalade-repo.org/packages/")
             ("melpa" . "http://melpa.milkbox.net/packages/")))
(package-initialize)

使用


M-x list-packages 或 M-x package-list-packages

這有點向perl的 cpan看齊的意思,雖然來得有點晚,但是總比不來的好XD

使用方法參 http://ergoemacs.org/emacs/emacs_package_system.html

按C-h m可以得到說明,

基本上按i標記,按x安裝

實例︰starter-kit的安裝


用elpa來安裝之前提到過的  starter-kit 真是再便利也不過的了

為何要用emacs?


http://dywang.csie.cyut.edu.tw/moodle23/dywang/linux-wangyin/node13.html

我覺得這篇說得挺好。用我的話來說,IDE是讓你不知道細節也能做出個樣子出來,但是你要知道細節才能完成工作時,IDE會讓你不知道那個細節在哪裏。當你愈深入你的工作,你才會發現要處理更多的細節。不使用IDE會讓你一開始就必需處理很多細節,所以通常你不會直接這樣做。一般的作法都是用IDE(或抓個template)產生了骨架之後,從這個骨架開始修改。

2013年1月26日 星期六

org-mode中agenda view及export的使用

agenda


http://orgmode.org/manual/Agenda-files.html#Agenda-files

首先要將檔案加入agenda files列表,不然就不會顯示

agenda 可視為對數個檔案的匯整及查詢/呈現的方式,建議其它功能先了解後再使用,才知道自己在幹什麼

export

按下C-c C-e後即可選擇多種格式,不過文件的部分我傾向用odt,也就是按下大寫的O

其它格式其實都要環境設定有配合到位,一般人實在沒那個美國時間

而且ubuntu中預裝的LibreOffice可以馬上打開文件以檢查排版,以及匯出為其它格式,包括pdf

文件中有latex的話,要參考一下這個連結在文件開頭作個宣告

生產力工具︰workflowy、 番茄工作法、Zotero

workflowy--繼Mindmanager、evernote、remembermilk、TaskPaper後又一清單管理程式


(我還沒提到org mode呢XD)

官網在 https://workflowy.com/

從它提供的影片看來,它為使用觸控裝置的使用者提供了許多便利操作

說真的短時間內要追上org mode的功能是不太可能

但是在行動裝置上,我相信它會得到不錯的市佔,就它利用觸控的便利性而言

番茄工作法

 喔不會吧,gtd都還沒摸熟,又來一個…

雲端番茄工作法及我的實踐經驗
這位twhsi在gtd上也很有見地,發表了不少文章

http://baike.baidu.com/view/5259318.htm
http://wiki.mbalib.com/zh-tw/%E7%95%AA%E8%8C%84%E5%B7%A5%E4%BD%9C%E6%B3%95

非常嚴謹的敘述…

Zotero

書目管理軟體 - Zotero
Zotero書目管理軟體簡介

輕鬆記錄、有效管理、輕鬆應用你的研究書目資料

免費的文獻管理工具-zotero

2013年1月25日 星期五

emacs lisp/w3m/ediff的學習資源


  • elisp
    • http://www.gnu.org/software/emacs/manual/elisp.html
      • 官方手冊
    • http://www.gnu.org/software/emacs/emacs-lisp-intro/html_node/index.html
      • 我比較習慣看的格式,不過它應該是要表現為一樹狀結構才對…
      • 這本書 emacs 里有,按“C-h i”,輸入m,“Emacs Lisp Intro”就能看到
      • C-h i會進入info mode,使用textinfo格式的文件,有點像win平台的help
      • http://ergoemacs.org/emacs/emacs_adding_browser_keys.html
    • http://ergoemacs.org/emacs/elisp.html
      • 一位華人(?)寫的教程,排版不錯,但先後順序沒有很講究
    • ps.輸出重導,例如把stderr重導到stdout的作法︰
      • w3m -h 2>&1 |more
  • 文字形式的www瀏覽器, w3m
    • http://www.howtogeek.com/103574/how-to-browse-from-the-linux-terminal-with-w3m/
    • 可以整合到emacs裏
      • http://www.emacswiki.org/emacs/emacs-w3m#toc19
    • ubuntu 12的安裝
      • http://www.emacswiki.org/emacs/emacs-w3m#toc22
      • sudo apt-get install w3m-el-snapshot
    • 啟動︰執行w3m,例如M-x w3m
    • 說明文件
      • http://emacs-w3m.namazu.org/info/emacs-w3m.html
    • 簡單指令
      • g 到minibuffer輸入網址
      • G 同上,但開新頁籤
      • T 切換圖片顯示
      • B 回上頁
      • N 回下頁
      • R 重載頁面
      • c 顯示/複制本頁url到剪貼簿
      • u 顯示/複制所高亮連結之url到剪貼簿
    • 專有指令
      • ^ 往上一層
      • (spc) 後一頁,當游標位於視窗末
      • (del) 前一頁,當游標位於視窗首
    • 速查表,不過要注意,w3m在emacs裏面有些快速鍵或功能被拿掉了
      • http://wiki.titan2x.com/index.php?title=W3m_cheat_sheet
  • ediff
    • http://caobeixingqiu.is-programmer.com/posts/6783.html