Kireç izini daha sonra kullanmak üzere kaydetme


12

Emacs Hesap Makinesi Yolunu (dosya olarak) kaydetme ve daha sonra geri yükleme olasılığı var mı? Değilse, özellik olmalı mı?

Örneğin, eksik bir hesaplama yaptığım halde Emacs'ımı kapatmam gerektiğinde, daha sonra devam edersem harika olur.

İkinci durum: Bazı hesaplamalar yapıyorum ve nasıl yaptığımı saklamak istiyorum, daha sonra doğru yaptım mı yoksa değiştirmem gerek mi diye kontrol etmek istiyorum.

İkinci neden, küçük hesaplamalar için MATLAB'ı (çok fazla biliyorum) kullanmamın nedeni, onları geri yükleyebilmem. Ama sadece Emacs Calc kullanmak istiyorum!

Cevaplar için teşekkürler


1
Belki Gömülü Mod istediğiniz şeydir?
npostavs

Calc'ın klavye makrolarıyla iyi entegre olduğunu ve hatta genişlettiğini biliyorum. Onları neden normal kmacros olarak kaydedemeyeceğinizi anlamıyorum. Ayrıca GNU Octave'u denediniz mi? Matlab ile çoğunlukla uyumlu olması gerekiyor ve bir emacs modu ile geliyor.
Kevin Holmes

1
Calg için Org'ın src bloklarının (gömülü modun yanı sıra) özellikle ikinci durumunuz için gidilecek yol olacağını düşünüyorum. Ne yazık ki src blok kodu (henüz) temel şeylerden daha fazlası için yeterince sofistike değildir. Lütfen şuraya
Dieter.Wilhelm

@estownya - Lütfen calc tarafından verilen cevapla birlikte bazı örnek calc kodunu gönderin.
Melioratus

Calc Trail, diğerleri gibi bir tampon. Buna geçebilir ve C-x C-wyazabilirsiniz. Yeniden yüklemek istediğinizde tüm Calc durumunu yeniden yapılandırmanın kolay bir yolu olduğunu düşünmüyorum.
HARİTA

Yanıtlar:


0

Kireç izinin işlenmesi metin tabanlı olduğundan esas olarak write-regionve kullanılabilir insert-file-contents.

Yine de bazı ayrıntılar göz önünde bulundurulmalıdır. Aşağıdaki Elisp kodu, geçerli calc-trail buffer'ı diske yazmanıza olanak tanır C-x C-sve bu imleci geçerli imleç konumunda geri okuyabilirsiniz C-x i.

Ardından calc-trail-mode, okuma calc komutlarının bölümlerini değerlendirmek için bağları kullanabilirsiniz .

(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

tüm değişkeni veya konumuna kaydetmek için s phangi anlamı kullanabilirsiniz .(calc-permanent-variable &optional VAR)~/.emacs.d/calc.elcalc-settings-file


2
Ancak bu, hesaplamaların tarihi yerine mevcut değeri kaydeder.
Andrew Swann
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.