我正在翻译手册页,并且在使用 Emacs 时遇到了一些问题。
你如何指定语言? (对于 man,
man -Lsv shutdown
瑞典语“sv”子目录(如果有)看起来像这样。)在Emacs man模式下,你可以使用氮或者磷根据标题向前或向后跳转(在 roff 中,它们看起来像这样:)
.SH
。但是,如果标头包含三个特殊瑞典字符中的一个(或多个):Å、ä 和 Ö,则此方法不起作用。即使我逃脱它们也没关系(就像这样\(:A
)。 (但它们正确显示。)要查看项目中的作品,我使用例如
M-x man RET ./ls.1
(即绝对路径)。这很棒,因为它与查看“真实”手册页(/usr/share/man 中的手册页)相同的 man 模式。只是,当我对文档进行一些更改时,如何刷新联机帮助页?revert-buffer
说缓冲区不与文件关联(不是真的,但好吧,我明白了);M-x load-file RET
似乎丢失了该文件的踪迹; ... 想法?
顺便说一句,翻译很有趣!
编辑:(见第一条评论)
答案1
如何在编辑 roff 源代码时以手册页模式更新手册页:
;;;; MAN / man
(defvar *curr-man* "~/mansv/ls.1")
(defun edman ()
"edit the current work-in-progress man page"
(interactive)
(find-file *curr-man*) )
(defun upman () ; edit: better version of this function below
"update the current work-in-progress man page"
(interactive)
(buffer-menu)
(revert-buffer)
(with-temp-buffer
(progn
(insert-buffer-substring "*Buffer List*")
(beginning-of-buffer)
(let ((man-buffer (format "*Man %s*" *curr-man*)))
(if (word-search-forward man-buffer (point-max) t) ; t = nil on fail
(kill-buffer man-buffer) ))
(man *curr-man*)
(edman)
(kill-buffer "*Buffer List*") )))
编辑
upman
希望这个版本更加稳定。请注意新全局的引入。
(defun upman ()
"update the current work-in-progress man page"
(interactive)
(if (get-buffer *curr-man-file*) (save-buffer))
(let ((man-buffer (format "*Man %s*" *curr-man*)))
(if (get-buffer man-buffer) (kill-buffer man-buffer))
(man *curr-man*)
(edman) ))