Có thư viện nào cho các trường đầu vào trong Emacs không?


10

Khá nhiều chế độ Emacs sử dụng các hình thức (giống như): giao diện tùy chỉnh là một trong số đó, chế độ Tin nhắn (đọc: phần tiêu đề của nó) là một dạng khác; Có nhiều hơn trong số họ, tiếc là không phải lúc nào cũng rất giống nhau. Theo "mẫu", ý tôi là ở đây một bộ đệm với các phần chỉ đọc và các vị trí được chỉ định để nhập văn bản; nó có thể có hoặc không chứa các nút (có lẽ nên chấp nhận C-c C-clàm khóa xác nhận / cam kết, bất kể sự hiện diện của nút OK ).

Tôi đặc biệt quan tâm đến việc tự động hoàn thành trong các trường (và đặc biệt, cho phép các trường có danh sách các giá trị từ một số bộ được chỉ định, giả sử, được phân tách bằng dấu phẩy). Câu hỏi của tôi là: có thư viện Emacs nào cho phép dễ dàng (bằng cách "dễ dàng", ý tôi là không phát minh lại bánh xe) tạo ra các hình thức như vậy, hay tôi nên tự viết mã mọi thứ?

(Tôi tưởng tượng rằng những gì tôi nên làm trong trường hợp sau sẽ là (1) thiết lập một số phần của bộ đệm chỉ đọc, (2) chuẩn bị một chế độ chính đặc biệt, ví dụ như TABS-TABchuyển đổi giữa "các trường" và (3) có thể sử dụng một cái gì đó như Icicles hoặc Helm để tự động hoàn thành.)


1
Thay đổi tiêu đề của bạn để nói các trường đầu vào. Các hình thức có một ý nghĩa rất đặc biệt trong elisp, có thể dẫn đến nhầm lẫn.
Malabarba

2
Và vâng, Có một thư viện widget tích hợp. Nhưng tôi không biết gì về nó.
Malabarba

@Malabarba: cảm ơn, đó có lẽ là một từ ngữ tốt hơn.
mbork

(Mặc dù chính Emacs sử dụng từ "mẫu" theo nghĩa này - xem hướng dẫn sử dụng vật dụng được đề cập trong câu trả lời của Drew!)
mbork

Câu trả lời:


8

Xem thư viện cus-edit.elwid-edit.el(và các thư viện cấp cao nhất của họ custom.elwidget.el, và các thư viện thành phần liên kết), được bao gồm với GNU Emacs. Cái trước sử dụng cái sau. Cái sau định nghĩa các điều cơ bản của biểu mẫu cơ bản (và không cơ bản), được gọi là " widget ", trong một hệ thống phân cấp. Bạn có thể sử dụng các widget và chức năng được xác định trước này trong thư viện để tạo các widget và loại widget của riêng bạn.

Tuy nhiên, được cảnh báo rằng mã của các thư viện này, đặc biệt là của wid-edit.el, không phảirất dễ theo dõi. Đặt cược tốt nhất của bạn là bắt đầu bằng cách sử dụng lại các widget hiện có hoặc sử dụng mã định nghĩa widget hiện có làm hướng dẫn.

(Hai thư viện mở rộng nhỏ cho điều này là cus-edit+.elwid-edit+.el. Chúng cũng trình bày một số ví dụ sử dụng.)

Có một hướng dẫn thông tin cho các widget, được phân phối với GNU Emacs, có tên " Thư viện widget Emacs ".

Ngoài ra còn có thư viện forms.el, bao gồm GNU Emacs, nhưng tôi không quen với nó. Có lẽ ai đó có một cái gì đó hữu ích để nói về nó. Có một hướng dẫn cho các biểu mẫu, được phân phối với GNU Emacs, có tên " Chế độ biểu mẫu ".


2
Thêm một chút nữa về Forms.el: stackoverflow.com/questions/10166600/ từ
phils

1
@Drew: cảm ơn câu trả lời của bạn! Bạn có thể làm rõ mối quan hệ giữa \(custom\|widget\).el\(cus\|wid\)-edit.elmột chút? Tôi thấy đặc biệt phần này từ hướng dẫn sử dụng Widgets không thể hiểu được : (require 'widget) (eval-when-compile (require 'wid-edit)).
mbork

1
Đầu tiên, tôi không có chuyên gia về điều này. Những lúc tôi cần thay đổi một cái gì đó tùy chỉnh, tôi đã nhúng vào cus-edit.elwid-edit.el. Các tệp khác mà bạn đề cập là các tệp cấp cao nhất; các *-edit.eltập tin có mã mà tôi quan tâm. Dunno nhiều hơn thế; lấy làm tiếc. Khó khăn thực sự là bản thân mã, sử dụng một kiểu bán OOP cụ thể không cho vay chính nó vào tài liệu tự Emacs (để đặt nhẹ) hoặc cho trình gỡ lỗi Emacs. Bạn có thể tự mình điều tra, hoặc có thể cố gắng liên hệ với tác giả (chúc may mắn với điều đó!). Có lẽ những người khác ở đây sẽ được giúp đỡ.
vẽ
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.