比方说bounds-of-thing-at-point
之类会接受一个叫thing的参数,这个thing在不同语言中的定义是什么样实现的?
THING 是一个有 'end-op
和 'beginning-op
property 分別都是个 function 的 symbol。
;; Buffer
(put 'buffer 'end-op (lambda () (goto-char (point-max))))
(put 'buffer 'beginning-op (lambda () (goto-char (point-min))))
这玩意本身不是编程语言敏感的。想要编程语言敏感那就在 'end-op
和 'beginning-op
里写判斷当前 major mode 的好了
m-x info c-s elisp 回车
c-s syntax-table
也就是说这个东西是每个buffer独立的吗?
嗯,就是遇到了在js2-mode里面list的判断不太对,我自己的模式依赖这些东西,所以想针对一些具体的模式调整一下。
否定的。这个东西是全局都是同一个设置的。
原来如此,非常感谢!
还没有完全搞明白,在看为什么js2-mode里面,()
这样的东西不会被当作是一个list。
在官方定案前,你可以先行体验一下这个 tree-sitter 动态模块 https://github.com/ubolonton/emacs-tree-sitter/blob/master/README.md
这个tree-sitter支持的语言好少。
⋊> ls ~/.tree-sitter/bin/
agda.so css.so javascript.so php.so swift.so
bash.so fluent.so jsdoc.so python.so tsx.so
c.so go.so json.so ruby.so typescript.so
c_sharp.so html.so julia.so rust.so
cpp.so java.so ocaml.so scala.so
Lisp系的都没有…
lisp系直接用自带的forward-sexp就行