动态YASnippet,插入方法名称和参数

时间:2016-10-04 19:31:05

标签: javascript java emacs yasnippet

在Java(或JavaScript)代码块中插入YASnippet时,如何访问方法名称(及其参数)?

目标是能够扩展

logm

进入(例如):

log("notify() called with: " + "context = [" + context + "]");

如果插入功能体:

public void notify(final EventHandlerContext context) {
....
}

(这样的实时模板存在于IntelliJ IDEA中。)

1 个答案:

答案 0 :(得分:1)

您可以在代码段中评估任意lisp代码。因此,如果您有一个函数来获取方法名称/参数,则可以从代码段代码中调用它。例如,以下是获取方法名称的快速尝试 - 您可以在cc-cmdseclim库中找到更好的函数。

(defun java-method-name ()
  (save-excursion
    (c-beginning-of-defun)
    (when (re-search-forward "\\([A-Za-z]+\\)(")
      (match-string 1))))

# -*- mode: snippet -*-
# name: logm
# key: logm
# --
log("`(java-method-name)`() called with: " + ${1:etc:..})