gần đây tôi bắt đầu sử dụng Emacs như một IDE Python, và nó không trực quan ... Vấn đề tôi đang gặp phải bây giờ là làm thế nào để vượt qua các đối số dòng lệnh python shell khi bộ đệm được đánh giá với Cc Cc. Cảm ơn vì sự giúp đỡ.Emacs: chuyển đối số tới vỏ Python kém trong khi đánh giá bộ đệm
Trả lời
Điều này dường như không dễ dàng thực hiện được; quá trình kém hơn được quản lý bởi mô-đun python.el
được thiết kế để tồn tại trên nhiều lời gọi của python-send-buffer
(và bạn bè). Một giải pháp tôi đã tìm thấy là viết chức năng của riêng bạn mà bộ sys.argv
lập trình từ bên trong quá trình kém:
(defun python-send-buffer-with-my-args (args)
(interactive "sPython arguments: ")
(let ((source-buffer (current-buffer)))
(with-temp-buffer
(insert "import sys; sys.argv = '''" args "'''.split()\n")
(insert-buffer-substring source-buffer)
(python-send-buffer))))
Execute chức năng này trong bộ đệm *scratch*
của bạn và/hoặc lưu nó trong tập tin .emacs
của bạn, sau đó, nếu bạn muốn, liên kết nó với một chuỗi khóa thuận tiện. C-c C-a
dường như không được sử dụng bởi python-mode
, vì vậy có lẽ:
(global-set-key "\C-c\C-a" 'python-send-buffer-with-my-args)
Lệnh sẽ nhắc bạn cho các đối số để sử dụng, sau đó sao chép đệm nguồn của bạn vào một bộ đệm tạm thời, thêm vào trước nó với một đoạn mã mà bộ sys.argv
vào danh sách các đối số bạn đã cung cấp và cuối cùng sẽ gọi python-send-buffer
.
Đoạn mã trên sẽ chỉ chia nhỏ chuỗi bạn nhập vào khoảng trắng, vì vậy nếu bạn cần cung cấp các đối số có khoảng trống trong chúng, bạn sẽ cần một thuật toán phức tạp hơn.
- 1. IPython trong Emacs. Đánh giá mã nhanh
- 2. Có thể đánh giá toàn bộ bộ đệm trong Emacs không?
- 3. Cách tải tệp vào bộ đệm và chuyển sang bộ đệm khi khởi động trong Emacs
- 4. Emacs: python-shell chế độ kém xuất hiện "lagged"
- 5. Quản lý bộ nhớ/bộ nhớ đệm cho các đối tượng tốn kém trong C#
- 6. vài cửa sổ/bộ đệm cùng nhau trong emacs?
- 7. Vỏ kiểu ido Emacs
- 8. Cách nhận hỗ trợ cho '✖' và các mục tương tự trong bộ đệm vỏ Emacs?
- 9. Điều khiển bộ đệm khi sử dụng gdb dưới emacs
- 10. Render Markdown trong bộ đệm Emacs
- 11. Chuyển danh sách các phao vào bộ đệm trong Python?
- 12. Emacs tự động lưu trên bộ đệm chuyển đổi
- 13. Tôi có thể chuyển hướng stdout trong python vào một số loại bộ đệm chuỗi không?
- 14. hiệu suất kém với bộ nhớ đệm azure
- 15. mở một tập tin trong một bộ đệm emacs trong khi trong emacs terminal
- 16. Emacs: bộ đệm cuộn không trỏ
- 17. Chức năng để đánh giá haskell trong ghci trong khi chỉnh sửa tệp nguồn bằng Emacs
- 18. Emacs reindenting toàn bộ bộ đệm C++
- 19. Sử dụng nhiều vỏ Python trong chế độ python của Emacs bằng Python hoặc IPython
- 20. Vỏ từ xa Emacs
- 21. ssh qua vỏ emacs?
- 22. Làm thế nào để chuyển đổi giữa các bộ đệm hiển thị trong các emacs?
- 23. Đánh giá chậm trong python
- 24. Con trỏ Vim nhảy tới đầu dòng sau khi chuyển đổi bộ đệm
- 25. Phân bổ bộ nhớ kém trong Python LinkedList
- 26. Làm cách nào để đặt số lượng mục trong menu bộ đệm chuột trong Emacs?
- 27. Emacs defadvice trên chức năng python-mode
- 28. Gửi đối số từ tệp Batch tới tập lệnh Python
- 29. Nhóm/tab đệm Emacs
- 30. Làm thế nào để tìm kiếm ngược trong vỏ emacs?
Cảm ơn Sean, tôi đã có ý tưởng. Nó làm các trick. Trong trường hợp này, tôi cũng có thể truyền các đối số bằng cách trực tiếp thiết lập biến sys.argv trước khi gọi hàm main. – Sammy
+1 cho ý tưởng tuyệt vời. –
nếu bạn gặp lỗi này 'progn: Định nghĩa hàm của Symbol bị vô hiệu: python-send-buffer' thử thay đổi 'python-send-buffer' thành' python-shell-send-buffer'. – boclodoa