Ngủ trong macro kbd


7

Tôi đã hoàn thành công việc python trong emacs và tôi đang sử dụng macro kdb để kiểm tra các thay đổi của tôi trong bộ đệm shell và quay lại mã python. Tôi muốn lấy số dòng của lỗi tiếp theo từ bộ đệm shell để tôi có thể nhảy trực tiếp đến nó, nhưng vì việc thực thi mất một lúc, thay vào đó, nó đã giết chết đầu ra trước đó.

Làm cách nào tôi có thể chèn tạm dừng vào một macro trong khi tôi đang ghi lại nó?

Câu trả lời:


5

Bạn có thể thử đánh giá (sleep-for n)trong khi thực hiện macro của mình, sử dụng M-:. Điều này làm cho luồng chính của Emacs ngủ, do đó, nó sẽ trì hoãn phần còn lại của các hành động macro của bạn, nhưng nó sẽ không ảnh hưởng đến việc nhận đầu ra từ các tiến trình khác như Python.

Lưu ý rằng điều này có thể gây ra hành vi kỳ lạ với con trỏ của bạn nếu bạn nhận được kết quả đầu ra (như kết quả của quá trình Python). Bạn vẫn sẽ nhận được tất cả đầu ra của mình, nhưng con trỏ có thể ngừng theo dõi kết thúc. Ít nhất, đôi khi tôi đã xảy ra điều đó khi thử nghiệm nó.


1

Tôi đoán từ mô tả, bạn đang chạy python trong bộ đệm shell? Có thể có ý nghĩa hơn khi chạy python như một lệnh đồng bộ hoặc ít nhất là sử dụng compileđể chạy python.

Nếu bạn sử dụng compile, tôi nghĩ sẽ dễ dàng hơn khi liên kết một khóa với điều đó, và sau đó sử dụng C-x `( command-next-error) hoặc M-g n, M-g p( next-error, previous-error) để vượt qua các lỗi với phân tích lỗi được tích hợp.

Tôi vừa thử nghiệm bằng cách sử dụng nội dung python-mode, và C-c C-cchạy python-shell-send-buffernó khởi động python và gửi bộ đệm đến nó. Shell python dường như nhận biết lỗi nên việc gọi liên tục C-x `sẽ nhảy đến từng dòng có lỗi.

Tôi không hoàn toàn làm theo ý của bạn bởi nó "giết chết đầu ra trước đó"? Bạn đang cố gắng vượt qua các lỗi trong khi đồng thời chạy lại chương trình?


Cảm ơn bạn vì câu trả lời. Vì câu trả lời khác giải quyết câu hỏi chung trong tiêu đề, tôi bắt buộc phải chấp nhận nó. Tuy nhiên, bạn giải quyết chính xác hơn vấn đề cá nhân của tôi và tôi rất biết ơn về điều đó.
Matthew Piziak
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.