Guardar rastro de Calc para uso posterior


12

¿Existe la posibilidad de guardar Emacs Calculator Trail (como un archivo) y restaurarlo más tarde? Si no, ¿debería ser característica?

Por ejemplo, cuando tengo un cálculo incompleto pero tengo que apagar mi Emacs, sería genial si puedo continuar después.

Segundo caso: hago algunos cálculos y quiero almacenar cómo lo hice, para luego verificar si lo hice correctamente o si necesito modificarlo.

La segunda razón es por qué uso MATLAB (lo sé, demasiado) para pequeños cálculos, solo para poder restaurarlos. ¡Pero me gustaría usar solo Emacs Calc!

Gracias por las respuestas


1
¿Quizás el modo incrustado es lo que quieres?
npostavs

Sé que Calc está bien integrado con las macros de teclado e incluso las amplía. No veo por qué no puedes guardarlos como kmacros normales. ¿También has probado GNU Octave? Se supone que es principalmente compatible con Matlab y viene con un modo emacs.
Kevin Holmes

1
Creo que los bloques src de Org (además del modo incrustado) para calc serán el camino a seguir, especialmente para su segundo caso. Desafortunadamente, el código de bloqueo src no es (todavía) lo suficientemente sofisticado para algo más que cosas básicas. Eche un vistazo a: home.fnal.gov/~neilsen/notebook/orgExamples/…
Dieter.Wilhelm

@estownya: publique algún código de ejemplo de calc con la respuesta devuelta por calc.
Melioratus

Bueno, el Calc Trail es un amortiguador como cualquier otro. Puedes cambiarlo y C-x C-wescribirlo. No creo que haya una manera fácil de reconstruir todo el estado de Calc cuando quieras recargar.
MAPA

Respuestas:


0

Dado que el procesamiento de la pista de cálculo se basa en texto, uno puede esencialmente usar write-regiony insert-file-contents.

Sin embargo, algunos detalles deben ser considerados. El siguiente código de Elisp le permite escribir el búfer de calc-trail actual en el disco C-x C-sy puede volver a leer esto en la posición actual del cursor con C-x i.

Después puede usar los calc-trail-modeenlaces para evaluar partes de los comandos de lectura de cálculo.

(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

puede usar s pqué significa (calc-permanent-variable &optional VAR)guardar todas las variables en ~/.emacs.d/calc.elo calc-settings-file.


2
Pero esto solo guarda el valor actual, en lugar del historial de los cálculos.
Andrew Swann
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.