Calc trail für spätere Verwendung speichern


12

Gibt es eine Möglichkeit, den Emacs Calculator Trail (als Datei) zu speichern und später wiederherzustellen? Wenn nicht, sollte es eine Funktion sein?

Wenn ich zum Beispiel eine unvollständige Berechnung habe, aber meinen Emacs herunterfahren muss, wäre es großartig, wenn ich danach weitermachen könnte.

Zweiter Fall: Ich mache einige Berechnungen und möchte speichern, wie ich es gemacht habe, um später zu überprüfen, ob ich es richtig gemacht habe oder ändern muss.

Der zweite Grund ist, warum ich MATLAB (ich weiß zu viel) für kleine Berechnungen benutze, nur damit ich sie wiederherstellen kann. Ich möchte aber nur Emacs Calc verwenden!

Danke für die Antworten


1
Vielleicht ist Embedded Mode das, was Sie wollen?
Npostavs

Ich weiß, dass Calc gut in Tastaturmakros integriert ist und diese sogar erweitert. Ich verstehe nicht, warum Sie sie nicht als normale kmacros speichern können. Haben Sie auch GNU Octave ausprobiert? Es soll größtenteils mit Matlab kompatibel sein und kommt mit einem Emacs-Modus.
Kevin Holmes

1
Ich glaube, dass die src-Blöcke von Org (neben dem eingebetteten Modus) für calc der richtige Weg sind, insbesondere für Ihren zweiten Fall. Leider ist der src-Blockcode (noch) nicht ausgereift genug für mehr als grundlegende Dinge. Bitte schauen Sie unter: home.fnal.gov/~neilsen/notebook/orgExamples/…
Dieter.Wilhelm

@estownya - Bitte senden Sie ein Beispiel für einen Berechnungscode mit der von calc zurückgegebenen Antwort.
Melioratus

Nun, der Calc Trail ist ein Puffer wie jeder andere. Sie können dorthin wechseln und C-x C-wes ausschreiben. Ich glaube, es gibt keine einfache Möglichkeit, den gesamten Calc-Status zu rekonstruieren, wenn Sie neu laden möchten.
KARTE

Antworten:


0

Da die Verarbeitung des Calc-Trails textbasiert ist, kann man im Wesentlichen write-regionund verwenden insert-file-contents.

Trotzdem müssen einige Details beachtet werden. Mit dem folgenden Elisp-Code können Sie den aktuellen Calc-Trail-Puffer auf die Festplatte schreiben C-x C-sund diesen Inhalt an der aktuellen Cursorposition mit zurücklesen C-x i.

Anschließend können Sie die calc-trail-modeBindungen verwenden, um Teile der eingelesenen calc-Befehle auszuwerten.

(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

Mit s pwhich mean können Sie (calc-permanent-variable &optional VAR)alle Variablen in ~/.emacs.d/calc.eloder speichern calc-settings-file.


2
Dies speichert jedoch nur den aktuellen Wert und nicht den Verlauf der Berechnungen.
Andrew Swann
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.