Salvataggio di Calc trail per un uso successivo


12

Esiste la possibilità di salvare l'Emacs Calculator Trail (come file) e ripristinarlo in un secondo momento? In caso contrario, dovrebbe essere caratteristica?

Ad esempio, quando ho un calcolo incompleto ma devo spegnere Emacs, sarebbe bello poter continuare in seguito.

Secondo caso: faccio alcuni calcoli e voglio memorizzare come l'ho fatto, per verificare in seguito se l'ho fatto correttamente o se devo modificarlo.

Il secondo motivo è il motivo per cui utilizzo MATLAB (lo so, troppo) per piccoli calcoli, solo per poterli ripristinare. Ma vorrei usare solo Emacs Calc!

Grazie per le risposte


1
Forse la modalità integrata è ciò che desideri?
npostavs,

So che Calc è ben integrato con le macro della tastiera e le estende persino. Non vedo perché non puoi salvarli come normali kmacros. Hai anche provato GNU Octave? Dovrebbe essere per lo più compatibile con Matlab e viene fornito con una modalità emacs.
Kevin Holmes,

1
Credo che i blocchi src di Org (oltre alla modalità incorporata) per calc saranno la strada da percorrere, specialmente per il tuo secondo caso. Sfortunatamente il codice a blocchi src non è (ancora) abbastanza sofisticato per qualcosa di più che semplice. Si prega di dare un'occhiata a: home.fnal.gov/~neilsen/notebook/orgExamples/…
Dieter.Wilhelm

@estownya - Si prega di inviare alcuni esempi di codice calc con la risposta restituita da calc.
Melioratus,

Bene, il Calc Trail è un buffer come un altro. Puoi passare ad esso e C-x C-wscriverlo. Non credo che ci sia un modo semplice per ricostruire tutto lo stato di Calc quando si desidera ricaricare.
MAPPA

Risposte:


0

Poiché l'elaborazione della traccia calcica è basata sul testo, si può essenzialmente utilizzare write-regione insert-file-contents.

Tuttavia, alcuni dettagli devono essere considerati. Il seguente codice Elisp ti consente di scrivere il buffer di calc-trail corrente su disco con C-x C-se puoi leggere questi elementi nella posizione corrente del cursore con C-x i.

Successivamente è possibile utilizzare i calc-trail-modecollegamenti per valutare parti dei comandi calc di lettura.

(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

puoi usare s pquale mezzo (calc-permanent-variable &optional VAR)per salvare tutte le variabili in ~/.emacs.d/calc.elo calc-settings-file.


2
Ma questo salva solo il valore corrente, piuttosto che la cronologia dei calcoli.
Andrew Swann,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.