[心得] 用 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