2012-10-24 24 views
5

Điều này đã trở thành một câu hỏi đơn giản ngu ngốc, nhưng tôi đã không thể tìm thấy câu trả lời mặc dù tìm kiếm Google nhiều lần theo nhiều cách và tìm hiểu thông qua tài liệu Calc.Làm thế nào để xóa hoàn toàn trạng thái của Emacs Calc?

TRỌNG một thể hiện của Emacs, với Calc chạy, và đã thực hiện nhiều phép tính bao gồm lưu trữ các biến và phương trình, một số trong đó có thể đã đến từ "~/.emacs.d/calc.el" tập tin,

CÁCH làm bạn trở Calc sang trạng thái nguyên sơ mà không cần khởi động lại Emacs?

Pristine: Không có gì trên ngăn xếp. Không có gì trong đường mòn. Không có biến hoặc phương trình được lưu trữ. Vv

Trả lời

8

M-x calc-reset, cũng bị ràng buộc với C-x * 0, là những gì bạn cần. Từ info manual:

Các C-x * 0' command ('calc-reset'; that's 'C-x *' followed by a zero) resets the Calculator to its initial state. This clears the stack, resets all the modes to their initial values (the values that were saved with mm'(calc-save-modes')), clears the caches (*note Caches::), and so on. (It does _not_ erase the values of any variables.) With an argument of 0, Calc will be reset to its default state; namely, the modes will be given their default values. With a positive prefix argument, Cx * 0' bảo các nội dung của ngăn xếp nhưng reset mọi thứ khác để trạng thái ban đầu của nó, với một tiền tố luận tiêu cực, `Cx * 0' giữ gìn nội dung của ngăn xếp nhưng đặt lại mọi thứ khác về trạng thái mặc định của nó

EDIT: Rất tiếc, không có cách nào đơn giản nguyên sơ: (

EDIT 2: Dường như Calc lưu trữ tất cả các biến, bao gồm cả 'built-in' như pi và e, dưới dạng biến toàn cầu với tiền tố 'var-'. Theo như tôi có thể nói, nó không theo dõi các biến được thiết lập bởi chế độ (như pi), và được thiết lập bởi người dùng. Hơn nữa, các biến người dùng mặc định được lưu trữ dưới dạng var-q0, var-q1 vv Vì vậy, để xóa tất cả các biến, bạn cần biên dịch danh sách các biến và trạng thái hiện tại khi khởi động, xóa mọi thứ không có trong danh sách đó , và sau đó khôi phục các giá trị ban đầu của các biến trong danh sách đó. Điều đó chắc chắn có thể, nhưng hơi tẻ nhạt.

Chỉnh sửa 3: Đây là nỗ lực của tôi. Tôi đã xem xét một chế độ calc, và lúc bắt đầu nó xác định các biến tôi đã thêm vào của tôi-calc-xây dựng-vars dưới đây. Dòng thứ hai sẽ xóa tất cả các biến trong các Emac bắt đầu bằng tiền tố 'var-' và là không phải là trong danh sách này. Điều này sẽ bao gồm bất kỳ biến nào do bạn xác định hoặc trong một gói khác. Vì vậy, chúng ta hãy hy vọng không ai khác sử dụng tiền tố 'var-'. Và nó sẽ không thiết lập lại các giá trị của biến tích hợp, vì vậy nếu bạn đã định nghĩa lại pi đến 3, nó sẽ vẫn 3.

(setq my-calc-builtin-vars 
     '("var-nan" "var-uinf" "var-sym" "var-lines" "var-Modes" 
     "var-EvalRules" "var-inf" "var-phi" "var-pi" "var-gamma" "var-π" 
     "var-φ" "var-γ" "var-spec" "var-e" "var-i")) 

(defun really-reset-calc() 
    (interactive) 
    (calc-reset nil) 
    (mapC#'(lambda (el) (unintern el)) 
     (remove nil (mapcar 
        #'(lambda (el) (unless (member el my-calc-builtin-vars) el)) 
        (all-completions "var-" obarray))))) 

UPDATE: 06 Tháng 8 2016

hiện tại được xây dựng trong vars danh sách:

(setq my-calc-builtin-vars 
     '("var-CommuteRules" "var-Decls" "var-DistribRules" "var-EvalRules" 
     "var-FactorRules" "var-FitRules" "var-Holidays" "var-IntegAfterRules" 
     "var-IntegLimit" "var-InvertRules" "var-JumpRules" "var-MergeRules" 
     "var-Modes" "var-NegateRules" "var-e" "var-gamma" "var-i" "var-phi" 
     "var-pi" "var-γ" "var-π" "var-φ")) 
+0

An E cho Nỗ lực, nhưng nó thực sự cần phải xóa các biến và phương trình được lưu trữ.Nếu tôi không có câu trả lời tốt hơn trong tương lai không xa, tôi sẽ tiếp tục và đánh dấu bạn đã chấp nhận. – EdwinW

+0

@EdwinW xem có hiệu quả với bạn hay không. Tôi không sử dụng calc đủ để làm thử nghiệm rất kỹ lưỡng về điều này. – Tyler

+0

Chỉ cần thử nó ra, hoạt động tuyệt vời! Cảm ơn! – EdwinW

0

M- # 0

Đó là tất cả những gì bạn cần làm.

+0

M- # không xuất hiện khi bắt đầu lệnh trong sách hướng dẫn hoặc trợ giúp chế độ. Xem câu trả lời của Tyler ở trên để có câu trả lời tốt hơn, nhưng vẫn chưa hoàn chỉnh. – EdwinW

Các vấn đề liên quan