Menyimpan jejak Calc untuk digunakan nanti

12

Apakah ada kemungkinan untuk menyimpan Jejak Kalkulator Emacs (sebagai file) dan mengembalikannya nanti? Jika tidak, haruskah itu fitur?

Sebagai contoh, ketika saya memiliki perhitungan yang tidak lengkap tetapi harus mematikan Emacs saya, akan lebih baik jika saya dapat melanjutkan setelah itu.

Kasus kedua: Saya melakukan beberapa perhitungan dan ingin menyimpan bagaimana saya melakukannya, untuk kemudian memeriksa apakah saya melakukannya dengan benar atau perlu memodifikasinya.

Alasan kedua adalah mengapa saya menggunakan MATLAB (saya tahu, terlalu banyak) untuk perhitungan kecil, supaya saya bisa mengembalikannya. Tapi saya hanya ingin menggunakan Emacs Calc!

Terima kasih atas jawabannya

estownya
sumber
1
Mungkin Embedded Mode adalah yang Anda inginkan?
npostavs
Saya tahu Calc terintegrasi dengan baik dengan keyboard keyboard dan bahkan memperluasnya. Saya tidak mengerti mengapa Anda tidak dapat menyimpannya sebagai kmacros biasa. Anda juga sudah mencoba GNU Octave? Seharusnya sebagian besar kompatibel dengan Matlab dan dilengkapi dengan mode emacs.
Kevin Holmes
1
Saya percaya bahwa blok src Org (selain mode tertanam) untuk calc akan menjadi cara untuk pergi, terutama untuk kasus kedua Anda. Sayangnya kode blok src belum cukup canggih untuk hal-hal dasar. Silakan lihat di: home.fnal.gov/~neilsen/notebook/orgExamples/…
Dieter.Wilhelm
@estownya - Silakan kirim beberapa contoh kode kalk dengan jawaban dikembalikan oleh kalk.
Melioratus
Yah, Jejak Calc adalah penyangga seperti yang lainnya. Anda dapat beralih ke sana dan C-x C-wmenuliskannya. Saya tidak berpikir ada cara mudah untuk merekonstruksi semua kondisi Calc ketika Anda ingin memuat ulang.
PETA

Jawaban:

0

Karena pemrosesan jejak kalk adalah berbasis teks, seseorang pada dasarnya dapat menggunakan write-regiondan insert-file-contents.

Namun demikian beberapa detail harus dipertimbangkan. Kode Elisp berikut memungkinkan Anda menulis buffer calc-trail saat ini ke disk dengan C-x C-sdan Anda dapat membaca kembali hal-hal ini pada posisi kursor saat ini C-x i.

Setelah itu Anda dapat menggunakan calc-trail-modebinding untuk mengevaluasi bagian dari perintah 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)
Tobias
sumber
-1

Anda dapat menggunakan s pyang berarti (calc-permanent-variable &optional VAR)menyimpan semua variabel ke ~/.emacs.d/calc.elatau calc-settings-file.

gholk
sumber
2
Tapi ini hanya menghemat nilai saat ini, daripada sejarah perhitungan.
Andrew Swann