在调试时,我通常会在执行过程中编写很多跟踪以在屏幕上打印变量。如果 Emacs 可以为我编写模板就好了。我不知道如何在 Emacs 上编程,所以我请求你的帮助 :)
我的想法如下。像 Mx trace-template 这样的东西,会询问变量的名称。然后,类似这样的内容将被添加到活动缓冲区中:
// trace20130604
cout << "test.cpp variable: " << variable << endl;
注释中添加的日期允许对当天的痕迹进行快速搜索,以便在不需要时将其删除。“test.cpp”是活动缓冲区,自动插入。“变量”是 Emacs 命令在执行时询问您的变量名称。
你认为这会有用吗?易于实施?也许已经实施?:)
理想情况下,它应该是特定于模式的,因此可以根据您使用的语言插入正确的模板。
非常感谢你的帮助!
问候。
几种主要模式的解决方案
我已经扩展了 Francesco 的解决方案以涵盖两种主要模式。这是我第一次尝试在 Elisp 中做某事,我认为代码很难看,但它似乎可以工作。
(defun trace-template (variable-name)
(interactive "sVariable Name: ")
(if (string-equal (format "%s" major-mode) "c++-mode")
(progn
(insert (format-time-string "// trace%Y%m%d\n"))
(insert (format "cout << \"%s %s:\" << %s << endl;\n\n"
(file-name-nondirectory buffer-file-name)
variable-name variable-name)))
)
(if (string-equal (format "%s" major-mode) "fortran-mode")
(progn
(insert (format-time-string "! trace%Y%m%d\n"))
(insert (format "WRITE(*,*) \"%s %s:\", %s\n\n"
(file-name-nondirectory buffer-file-name)
variable-name variable-name)))
)
)