Có cách nào để sử dụng python thay vì elisp để mở rộng emacs không?


11

Tôi quan tâm đến việc sử dụng các ngôn ngữ khác ngoài elisp để viết các tiện ích mở rộng emacs, điều này có khả thi không? Nếu python không được hỗ trợ, ngôn ngữ là gì?

Câu trả lời:


10

Như Tephra đã nói, Pymacs là một gói được thiết kế cho việc này.

Đó là giao diện giữa Python và Emacs Lisp. Dự án không hoạt động nhiều nhưng theo những gì tôi hiểu thì nó có đầy đủ chức năng với phiên bản mới nhất của Emacs. Một vài gói Python sử dụng nó (ví dụ: Ropemacs ) vì vậy mọi thay đổi đối với Emacs phá vỡ nó đều có khả năng được sửa.

Liên kết GitHub đến tài liệu trực tuyến dường như đã chết, nhưng bạn vẫn có thể tìm thấy nó trên Wayback Machine . Tài liệu Wayback chỉ có sẵn cho phiên bản 0.23 - phiên bản hiện tại là 0.25. Những thay đổi là khá nhỏ mặc dù. Mã nguồn Ropemacs là một nơi tốt để tìm kiếm các ví dụ, cũng như các dự án khác được triển khai với Pymacs.

Vấn đề với Pymac là nó lấy đi rất nhiều thứ khiến Elisp trở nên hữu ích như một ngôn ngữ cho một trình soạn thảo văn bản mở rộng. Bạn phải chỉnh sửa mã nguồn trực tiếp nếu bạn muốn thay đổi hành vi. Bạn không thể dễ dàng tư vấn các chức năng và bạn không thể duyệt Elisp trong bộ nhớ. Vì việc triển khai Python của bạn được trừu tượng hóa từ Elisp bình thường, điều này loại bỏ rất nhiều hành vi tự ghi lại làm cho Emacs trở nên tuyệt vời và các lỗi trở nên ít thông tin hơn. Các ngôn ngữ mở rộng như thế này chủ yếu hữu ích cho việc giao tiếp với các gói bên ngoài được viết bằng ngôn ngữ khác.


Hiện tại đã có một ngã ba cập nhật (hóa ra tác giả gốc đã qua đời): github.com/dgentry/Pymacs
braham-snyder 8/2/19

7

Bạn có thể mở rộng Emacs bằng các ngôn ngữ khác, như HaskellOCaml .

Có một cuộc thảo luận trên Reddit về những lợi thế và bất lợi của việc đó. Nói tóm lại, tôi không nghĩ nên sử dụng các ngôn ngữ khác (trừ C có thể là hiệu suất) do nhu cầu thêm thời gian chạy và thiếu kiến ​​thức chung của những người khác trong cộng đồng Emacs về các ngôn ngữ mở rộng không phải là Elisp.


4

Có một thứ gọi là Pymacs là giao diện python to emacs-lisp. Mặc dù dự án dường như không hoạt động. Wiki giữ một danh sách các mô-đun khác cho phép bạn mở rộng emacs trong một cái gì đó ngoài elisp.

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.