snippet-mode: A mode for editing yasnippets
显示没必要用这个。snippet-mode 用于编辑。
snippet-mode: A mode for editing yasnippets
显示没必要用这个。snippet-mode 用于编辑。
重新提了一个。渲染还是没出来 。才玩不就emacs不熟悉。。
试了下简单的测试, 渲染不出来。。。不知道哪儿出毛病了。。
(with-temp-buffer
(insert "func main(){}")
(delay-mode-hooks
(let ((inhibit-message t))
(markdown-view-mode))
(setq-local markdown-fontify-code-blocks-natively t)
(setq-local markdown-hide-markup-in-view-modes t)
(ignore-errors
(font-lock-ensure)))
(buffer-string)))
你这里设置了mode为 markdown-view-mode
,它是不会高亮 func main() {}
这个格式的。试试这个:
(with-current-buffer "test"
(insert "(setq c-basic-offset 2)")
(delay-mode-hooks
(let ((inhibit-message t))
;; (markdown-view-mode)
(emacs-lisp-mode))
(setq-local markdown-fontify-code-blocks-natively t)
(setq-local markdown-hide-markup-in-view-modes t)
(ignore-errors (font-lock-ensure))))
这样是可以。但是就要传个mode进来了。
要传入当前buffer的major-mode也不难,注入一个全局变量来存储好了。Emacs里全局变量很常见的。
这样设 mode 就跟不需要markdown了。。。
你用的是 company-box
来显示的 doc 吧?看看 company-show-doc-buffer
,应该是正常渲染的。
我没明白为啥要用markdown?难道各种不同mode的snippet都是不同syntax highlighting的么?
如果切换buffer 换到不同的major 那也要重新获取一次吧,会不会有影响?
对。我看了下lsp 和lsp-ui 好像也是这么用的。。
传一个 mode 进去就好啊,实在不行直接用 snippet-mode
(defun company-yasnippet--doc (arg mode)
lsp-ui 渲染用 markdown,是因为 LSP 返回的很多文档本身就是 markdown 格式的。
传个mode 就很好实现了。不需要markdown了 效果就出来了
对,这样就可以了。我觉得挺好了。 能包含snippet的 name 和 key么?因为name 和key不同,两者都显示会比较好一点。 BTW, 我在想,是否需要保留snippet的 placeholder. 方便识别插入的位置。
直接操作 buffer 肯定可以办到,就看有没有必要了
我现在考虑的是来回切换buffer有可能切换major mode 每次都要重读。。。
每次切换buffer到不同的major-mode,yasnippet给出的snippet也是和major-mode对应的。所以不存在你担心的那个问题。
name 和key还没看。我先把高亮研究好在看看
我在想直接从yasnippet来抓。这样讲就好了。只需要yasnippet变化就行了。
company-yasnippet 难道不是直接从yasnippet抓的么?让我看看company-yasnippet的源代码。。。。