나중에 사용하기 위해 캘크 트레일 저장


12

Emacs Calculator Trail (파일)을 저장하고 나중에 복원 할 수 있습니까? 그렇지 않은 경우 기능이어야합니까?

예를 들어, 불완전한 계산이 있지만 Emacs를 종료해야 할 때 나중에 계속할 수 있다면 좋을 것입니다.

두 번째 경우 : 계산을하고 어떻게했는지 저장하고 나중에 올바르게 수행했는지 또는 수정 해야하는지 확인하고 싶습니다.

두 번째 이유는 계산을 거의하지 않기 위해 MATLAB을 사용하는 이유입니다. 그러나 Emacs Calc 만 사용하고 싶습니다!

답변 주셔서 감사합니다


1
아마도 당신이 원하는 임베디드 모드 입니까?
npostavs 2016 년

Calc는 키보드 매크로와 잘 통합되어 있으며 확장합니다. 왜 당신이 그들을 일반 kmacros로 저장할 수 없는지 모르겠습니다. GNU Octave도 사용해 보셨습니까? 대부분 Matlab과 호환되며 emacs 모드와 함께 제공됩니다.
Kevin Holmes

1
calc에 대한 Org의 src 블록 (내장 모드 제외)이 특히 두 번째 경우에 갈 길이라고 생각합니다. 불행히도 src 블록 코드는 기본적인 것 이상으로 아직 정교하지 않습니다. 보세요 : home.fnal.gov/~neilsen/notebook/orgExamples/…
Dieter.Wilhelm

@estownya-calc에서 반환 한 답변과 함께 예제 calc 코드를 게시하십시오.
Melioratus

캘크 트레일은 다른 것과 마찬가지로 버퍼입니다. 당신은 그것을 전환하고 C-x C-w쓸 수 있습니다 . 다시로드 할 때 모든 Calc 상태를 재구성하는 쉬운 방법이 없다고 생각합니다.
지도

답변:


0

석회질 흔적의 처리는 텍스트 기반으로되어 있기 때문에 하나의 본질적으로 사용 write-region하고 insert-file-contents.

그럼에도 불구하고 몇 가지 세부 사항을 고려해야합니다. 다음 Elisp 코드를 사용하면 현재 calc-trail 버퍼를 디스크에 C-x C-s쓸 수 있으며를 사용하여 현재 커서 위치에서이 내용을 다시 읽을 수 있습니다 C-x i.

나중에 calc-trail-mode바인딩을 사용하여 read-in calc 명령의 일부를 평가할 수 있습니다 .

(defvar-local calc-trail-buffer-file-name nil
  "Like `buffer-file-name' for calc-trail buffers.")

(defun calc-trail-save (&optional filename)
  "Save current calc trail buffer.
To be used in `write-contents-functions'.
Append with current prefix arg."
  (interactive "FCalc Trail File: ")
  (unless filename
    (setq calc-trail-buffer-file-name
      (expand-file-name (setq filename
                  (read-file-name "Calc Trail File: " nil calc-trail-buffer-file-name)))))
    (when (null (derived-mode-p 'calc-trail-mode))
    (user-error "Saving calc trail buffers requires calc-trail-mode"))
  (save-point
   (save-restriction
     (widen)
     (let* ((b-trail (progn (goto-char 1) (1+ (line-end-position))))
        (b (progn (goto-char (max (or (and (use-region-p) (region-beginning)) (point-min)) b-trail))
              (line-beginning-position)))
        (e (progn (goto-char (max (or (and (use-region-p) (region-end)) (point-max)) b-trail))
              (line-end-position))))
       (write-region b e filename current-prefix-arg)))))

(defun calc-insert-file (filename)
  "Insert calc-trail file FILENAME at point."
  (interactive "FCalc trail file: ")
  (when (= (line-beginning-position) 1)
    (goto-char (1+ (line-end-position))))
  (goto-char (line-beginning-position
          (if (looking-at "[[:space:]]*$")
          2
        1)))
  (let ((inhibit-read-only t))
    (insert-file-contents filename)
    (when (and (null (looking-at "[[:space:]]*$"))
           (null (looking-back "^[[:space:]]*" (line-beginning-position))))
      (insert "\n"))))

(defun calc-trail-install-save ()
  "Install `calc-trail-save' in `write-contents-functions' of `calc-trail-mode' buffers."
  (push #'calc-trail-save write-contents-functions)
  (local-set-key (kbd "C-x i") #'calc-insert-file))

(add-hook 'calc-trail-mode-hook #'calc-trail-install-save)

-1

모든 변수를 또는 에 저장 s p하는 의미 (calc-permanent-variable &optional VAR)를 사용할 수 있습니다 .~/.emacs.d/calc.elcalc-settings-file


2
그러나 이것은 계산 기록이 아닌 현재 값만 저장합니다.
앤드류 스완
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.