Có cách nào để tìm ra loại dấu ngoặc đơn xung quanh (nghĩa là '(', '[' hoặc '{') quanh điểm không? Ví dụ (sử dụng |
để biểu thị điểm)
{ abc, | df }
nên trả về '{' và
{ abc[ | ], 123 }
nên trả lại '['. Lý tưởng nhất là tôi muốn nó để xử lý dấu ngoặc kép là tốt.
Trong trường hợp bất kỳ ai cũng tò mò hoặc cần thêm chi tiết: mục đích của tôi là thiết lập khoảng cách tự động thông minh xung quanh :
trong python bằng cách sử dụng khoảng cách điện (còn được gọi là toán tử thông minh ). Vấn đề là thông thường (trong python) :
là toán tử lát hoặc bắt đầu câu lệnh for / if / ..., không nên được bao quanh bởi khoảng trắng. Tuy nhiên, trong từ điển, nó giống như một toán tử gán, và do đó, nó phải được bao quanh bởi các khoảng trắng. Vì vậy, tôi có một cách cần kiểm tra xem điểm có nằm trong một dict (tức là bên trong {}
) không, nhưng không phải bên trong một hoạt động lát hoặc chuỗi trong dict đó (tức là không bên trong []
hoặc ""
).
Biên tập:
Đây là chức năng trợ giúp tôi đã viết, dựa trên câu trả lời của abo-abo:
(defun enclosing-paren ()
"Return the closing parenthesis of the enclosing parens, or nil if not inside any parens."
(ignore-errors
(save-excursion
(up-list)
(char-before))))
Sau đó, vị ngữ cuối cùng là:
(and (not (in-string-p))
(eq (enclosing-paren) ?\}))
Chỉnh sửa 2:
Các chức năng trên hóa ra quá chậm (nó thường gây ra độ trễ đáng chú ý khi :
gõ). Bây giờ tôi đang sử dụng câu trả lời của Stefan, dường như nhanh hơn nhiều.
""
, bạn có thể sử dụng tích hợp sẵnin-string-p
.