modo Emacs para man pages

6

Estou traduzindo man pages e tive alguns problemas com o Emacs.

  1. Como você especifica o idioma? (Com man, parece que este man -Lsv shutdown para o subdiretório sueco "sv", se disponível.)

  2. No modo homem do Emacs, você pode usar N ou P para avançar ou retroceder de acordo com os cabeçalhos (em roff, eles se parecem com isto:% código%). Mas, isso não funciona se o cabeçalho incluir um (ou mais) dos três caracteres suecos especiais: Å, Ä e Ö. Não importa se eu escapei deles (como este .SH ). (Mas eles são exibidos corretamente.)

  3. Para visualizar um trabalho no projeto, eu uso, por exemplo, \(:A (ou seja, o caminho absoluto). Isso é ótimo, porque é o mesmo modo de homem que para exibir páginas de manual "reais" (aquelas em / usr / share / man). Só quando faço algumas alterações no documento, como atualizo a página manpage? M-x man RET ./ls.1 diz que o buffer não está associado a um arquivo (não é verdade, mas OK, eu entendi); revert-buffer parece ter perdido o controle do arquivo; ... Idéias?

A propósito, traduzir é muito divertido!

EDITAR: (veja o primeiro comentário) Tabela http://user.it.uu.se/~embe8573/emacs_woman_man.png

    
por Emanuel Berg 08.08.2012 / 23:35

1 resposta

2

Como atualizar a página man no modo man page enquanto edita a fonte de 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*") )))

EDITAR

Esperamos que esta versão de upman seja mais estável. Observe a introdução de um novo global.

(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) ))
    
por 10.08.2012 / 14:49

Tags