매뉴얼 페이지용 Emacs 모드

매뉴얼 페이지용 Emacs 모드

매뉴얼 페이지를 번역하고 있는데 Emacs를 사용하는 데 몇 가지 문제가 있습니다.

  1. 언어는 어떻게 지정하나요? (사람의 경우 man -Lsv shutdown스웨덴어 "sv" 하위 디렉터리(있는 경우)는 다음과 같습니다.)

  2. Emacs man 모드에서는 다음을 사용할 수 있습니다.질소또는제목에 따라 앞으로 또는 뒤로 이동합니다(roff에서는 다음과 같습니다:) .SH. 그러나 헤더에 세 가지 스웨덴 특수 문자(Å, ä 및 Ö) 중 하나(또는 그 이상)가 포함된 경우에는 이 방법이 작동하지 않습니다. 내가 그들을 탈출해도 상관 없습니다 (이렇게 \(:A). (그러나 올바르게 표시됩니다.)

  3. 프로젝트에서 무엇이 작동하는지 확인하기 위해 예를 M-x man RET ./ls.1들어 절대 경로를 사용합니다. 이는 "실제" 매뉴얼 페이지(/usr/share/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) ))

관련 정보