2009-04-16 38 views
11

Tôi đang cố gắng có lời nhắc động từ hàm elisp của mình. Tôi muốn một cái gì đó như thay thế regexp, nơi nó sẽ cho bạn thấy regexp cuối cùng nhập vào. Tôi đã thử (tương tác (concat "sab" "bab"))) không hoạt động! nhắnEmacs Lời nhắc tương tác động Elisp

Tôi cũng đã cố gắng như định dạng (tương tác "s% s" cuối cùng được sử dụng-regexp)

và điều đó không làm việc! Bất cứ ai cũng biết cách làm điều này?

Cảm ơn bạn!

Trả lời

15

M-x find-function là bạn của bạn. Nó sẽ cho bạn biết làm thế nào bất cứ điều gì trong emacs hoạt động bằng cách hiển thị cho bạn mã nguồn. Sử dụng nó, tôi thấy rằng query-regexp-replace gọi query-replace-read-args gọi query-replace-read-from gọi read-from-minibuffer bằng lời nhắc được tạo từ regexp được sử dụng lần cuối, được lưu trong cặp chấm chấm query-replace-defaults.

Vì vậy:

(defun my-func() 
    "Do stuff..." 
    (interactive) 
    (read-from-minibuffer "Regexp? " (first query-replace-defaults))) 

là một lệnh mà ném ra một dấu nhắc với regexp bước cuối cùng như là mặc định.

9

Sử dụng một biến cho lịch sử đầu vào, và tương tác với một danh sách:

(defvar my-func-history nil) 

(defun my-func (str) 
    (interactive (list (read-from-minibuffer "Input string: " (car my-func-history) nil nil 'my-func-history))) 
    (insert str)) 

Nếu bạn không muốn giá trị cuối cùng bước vào trong đó ban đầu, thay đổi (car my-func-history)-nil. Bạn có thể tất nhiên lên/xuống mũi tên để đi qua lịch sử tại dấu nhắc.

+1

Xin cảm ơn, bây giờ tất cả những gì tôi cần là hoàn thành ... – To1ne

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