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

estownya
quelle
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)
Tobias
quelle
-1

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

gholk
quelle
2
Dies speichert jedoch nur den aktuellen Wert und nicht den Verlauf der Berechnungen.
Andrew Swann