[心得] 用 Emacs 讓寫 Perl 更快樂 :-)

作者: Neisseria (Neisseria)   2015-05-17 11:58:53
雖然現在比較少寫 Perl 了
不過拋磚引玉一下,分享我之前的 Emacs 設定
另外一個目的是推坑,希望大家來用 Emacs
這些 tips 也是網路或書本上收集來的
1.) 一開始最簡單的設定,就是用 cperl-mode 取代 perl-mode
(defalias 'perl-mode 'cperl-mode)
然後,遵照 Perl style 的建議,用 4 格空白來 indent
(add-hook 'cperl-mode-hook
(lambda ()
(setq-default indent-tabs-mode nil)
(setq c-basic-indent 4)
(setq tab-width 4)))
2.) 不用離開 Emacs 就可以執行 Perl 程式。
選好區塊後,用 C-M-p 呼叫 perl 直譯器
(defun perl-eval (beg end)
"Run selected region as Perl code"
(interactive "r")
(shell-command-on-region beg end "perl"))
(add-hook 'cperl-mode-hook
(lambda () (local-set-key (kbd "M-C-p") 'perl-eval)))
3.) 從 Emacs 開啟 local 的 POD 文件。用 M-p 呼叫 podwebserver
首先,安裝 Pod::Webserver 模組
然後,寫一個 local 的 shell script,存成 podweb 後,放在執行路徑
#!/bin/sh
check_process() {
[ "$1" = "" ] && return 0
[ `pgrep -n $1` ] && return 1 || return 0
}
check_process "podwebserver"
[ $? -eq 0 ] && `podwebserver`
sleep 3
之後,從 Emacs 去呼叫
(defun pod ()
"call podwebserver"
(interactive)
(call-process-shell-command "podweb" nil 0)
(message "running podwebserver...")
(sleep-for 5)
(browse-url "http://localhost:8020"))
(add-hook 'cperl-mode-hook
(lambda () (local-set-key (kbd "M-p") 'pod)))
4.) 從 Emacs 直接開啟 CPAN 頁面上的 API 文件。用 C-c C-f 呼叫。
例如,我現在游標在 Text::CSV_XS 這個模組的關鍵字內,用快捷鍵就可以開啟
相關的 metacpan 頁面
(defun perl-module-bounds-of-perl-module-at-point ()
"Return the start and end point of a Perl module"
(save-excursion
(skip-chars-backward
":0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")
(if (looking-at "[A-Za-z0-9:]+")
(cons (point) (match-end 0))
nil)))
(put 'perl-module 'bounds-of-thing-at-point
'perl-module-bounds-of-perl-module-at-point)
(defcustom perl-search-url "http://p3rl.org/"
"URL at which to search for documentation on a word"
:type 'string
:group 'perl)
(defun perl-search-documentation ()
"Search Perl documentation for the word at the point."
(interactive)
(browse-url (concat perl-search-url (thing-at-point 'perl-module))))
(add-hook 'cperl-mode-hook
(lambda () (local-set-key (kbd "\C-c\C-f")
'perl-search-documentation)))
5.) 用專用的 pod-mode 編輯 POD 檔
(autoload 'pod-mode "pod-mode"
"Mode for editing POD files" t)
(add-to-list 'auto-mode-alist '("\\.pod$" . pod-mode))
(add-hook 'pod-mode-hook
'(lambda () (progn
(font-lock-mode) ;; =syntax highlighting
(auto-fill-mode 1) ;; =wordwrap
(flyspell-mode 1) ;; =spellchecking
)))
大概就是這些,希望對各位有幫助
作者: abliou (愚者)   2015-05-17 16:57:00
頭推
作者: Godkin (山裡的人)   2015-05-18 01:16:00
作者: herculus6502 (金麟豈是池中物)   2015-05-18 03:53:00
作者: lglglg2828 (novo)   2015-07-13 13:34:00
之前有用過一個auto-complete套plsense,不過沒有很強。不知道還有沒有其他的套件
作者: Neisseria (Neisseria)   2015-07-15 01:05:00
我只用原來的 auto-complete 而已,對 plsence 不熟

Links booklink

Contact Us: admin [ a t ] ucptt.com