在Emacs中,如何使用键盘模拟鼠标按键等?例如,使用CEDET的Semantic(包含在GNU Emacs 23.2.1中),可以右键单击包含以提供菜单; 如何使用键盘将该菜单和其他菜单显示为工具提示,或者在迷你缓冲区中显示一个允许用户访问菜单栏的M-`?
我正在使用带有CEDET的Emacs并自动完成代码完成.最初我设置了CEDET,因此它每次都会在Emacs上启动.
然而,这花了相当长的时间,所以我认为如果需要加载它会很聪明,即 - 在我的情况下 - 进入C++时 - 模式.
所以我将原始函数移动到lambda进入C++模式时调用的函数:
; cscope for c(++) programming (finding symbols, etc.)
(require 'xcscope)
; C++ stuff
(add-hook 'c++-mode-hook
(lambda ()
(load-file "/usr/share/emacs/site-lisp/cedet-common/cedet.el")
(global-ede-mode 1) ; enable project management system
(semantic-load-enable-code-helpers) ; enable prototype help and smart completion
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "~/elisp/ac-dict")
(add-to-list 'ac-sources 'ac-source-semantic)
(local-set-key (kbd "C-:") 'semantic-ia-complete-symbol-menu) ; set shortcut for auto completion.
(local-set-key (kbd "C-.") 'ac-complete-semantic)
(ac-config-default)
)
)
Run Code Online (Sandbox Code Playgroud)
没有错误,但我有以下问题:当Emacs第一次进入C++模式时,代码完成无法正常工作.但如果Emacs第二次进入C++模式,一切正常.
有人知道我做错了什么吗?
我刚刚开始设置cedet跟随各种指南,包括Alex Ott的.
这是我目前在我的init文件中所拥有的内容.
(require 'cedet)
(semantic-load-enable-code-helpers)
;; imenu breaks if I don't enable this
(global-semantic-highlight-func-mode 1)
(global-semantic-tag-folding-mode)
Run Code Online (Sandbox Code Playgroud)
我非常喜欢代码折叠,因为语义比hideshow等软件包更多地了解代码.
我想为红宝石做同样的折叠.我知道cedet还有其他的东西,但我现在只是蘸着脚趾.
所以我在contrib /文件夹中看到有明智的ruby.el.看起来语义肯定知道如何解析Ruby.INSTALL表示它应该"自动"安装.我打开一个Ruby文件,代码折叠魔术三角形不存在.现在怎么办?
我使用最新的CEDET和emacs 23.2.我发现CEDET出了问题,这就是我当前的编辑缓冲区在没有任何错误消息的情况下使用semantic-load-enable-guady-code-helpers模式被杀死.
这种症状很奇怪.有人有同样的麻烦吗?或者有什么方法可以知道发生了什么?
我在我的emacs c/c ++开发设置中一直在尝试使用cedet和semantic,除了一个小细节之外我对它非常满意.
我ede-cpp-root-project用来创建一个项目,并给出我的项目的根目录以及包含文件所在的目录,如下所示:
(ede-cpp-root-project "My Project"
:name "My Project"
:file "/path/to/rootdir/AFILE"
:include-path '(
"/include2"
"/include1"
)
)
Run Code Online (Sandbox Code Playgroud)
这使我可以轻松跳转到函数的声明,semantic-ia-fast-jump但它不会让我接受这些函数的定义.因此它似乎只处理头文件并完全忽略源文件.即使我继续声明该函数并触发semantic-analyze-proto-impl-toggle它,它也会告诉我没有找到合适的实现.
如果我手动打开函数实现所在的源文件,那么它只能通过语义进行解析,并且所有上述函数都能正常工作.
所以我的问题是,如果没有手动打开项目根目录下包含的所有源文件,或者ede-cpp-root-project通过:spp-files参数手动包含它们,还有其他方法可以强制解析目录下的所有源文件吗?
谢谢!
我已经为我的c ++项目设置了cedet /语义代码完成(使用本教程:http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html )但是不想要它或所有帮助器(在我看来,在lisp模式下提供自动化.
所以,我的问题是如何在lisp模式下禁用它们或仅在c ++模式下启用它们.
谢谢,雷内.
我一直在努力让我的Emacs配置用于Java开发工作.这是非常好的 - 我已经使用了malabar模式并让GNU Global用于标签浏览.我无法工作的一件事是让semanticdb正确使用gnu global.我的所有进口都没有找到.
首先,这是一个Maven多模块项目,从顶级根项目文件夹中检出所有源.目录树中的所有其他项目都低于此项目.此根文件夹中有一个GTAGS数据库,涵盖所有内容.
有用的东西:
M-x gtags-find-tag RET symbol RET 工作得很好,所以数据库很好,全局都可以找到它.M-x cedet-gnu-global-version-check 工作和报告我的版本是好的.M-x cedet-gnu-global-expand-filename 作品M-x semanticdb-find-test-translate-path 在Java缓冲区中显示"GNU全局搜索表"我的java配置如下(cedet初始化在文件中较早):
(add-local-load-path "malabar/lisp")
(require 'malabar-mode)
(setq malabar-groovy-lib-dir (concat emacs-local-site-lisp "malabar/lib"))
(add-to-list 'auto-mode-alist '("\\.java\\'" . malabar-mode))
;; enable semanticdb support for gnu global
(when (cedet-gnu-global-version-check t)
(semanticdb-enable-gnu-global-databases 'java-mode))
(add-hook 'java-mode-hook
(lambda ()
(gtags-mode 1)))
(add-hook 'java-mode-hook 'flymake-mode-on)
(defun my-java-flymake-init ()
(list "javac" (list (flymake-init-create-temp-buffer-copy
'flymake-create-temp-with-folder-structure))))
(add-to-list 'flymake-allowed-file-name-masks
'("\\.java$" my-java-flymake-init flymake-simple-cleanup))
(add-hook 'java-mode-hook
'(lambda ()
(semantic-add-system-include (getenv "JAVA_HOME") 'java-mode)))
Run Code Online (Sandbox Code Playgroud) 我正在寻找一个插件来为emacs中的c ++开发做自动完成弹出窗口.我所尝试的是Cedet Semantics和Autocompletion模式,只要我已经有几个单词,它们在完成变量和函数名称方面非常简洁.例如,我有一个名为foo的类和一个返回整数1的函数
class foo{
int getInt(){return 1};
};
Run Code Online (Sandbox Code Playgroud)
在main方法中,只要我开始输入这个
int main(){
foo bar;
bar.get...
}
Run Code Online (Sandbox Code Playgroud)
插件没有问题弹出bar.getInt()等建议.但是,我真正想要的就是在Eclipse中,只要按下"点",就可以为我生成可能的选择.在Emacs中可以吗?谢谢
在CEDET语义中查看完成的不同方法(来自Bazaar存储库的新版本),我看到我有以下选项(Alex Ott在他的配置文件中建议的键盘绑定)
semantic-ia-complete-symbol)semantic-ia-complete-symbol-menu)semantic-analyze-possible-completions)但是,它们似乎都没有让我可以方便地使用键盘在可能的完成之间进行选择.
例如,(semantic-ia-complete-symbol-menu)打开一个菜单,我可以在其中选择不同的选项,但据我所知,它需要我使用鼠标(我试图C-n, C-p, M-n, M-p导航菜单没有成功).
另一方面(semantic-ia-complete-symbol)打开另一个带有选项的缓冲区.我也可以用鼠标选择所需的自动完成功能,但我想用键盘代替.
此外,在以前版本的CEDET中,有一个变量(semantic-complete-inline-analyzer-displayor-class)允许我在几个自动完成选项(例如(semantic-displayor-ghost),或更优雅的叠加作为工具提示)之间进行选择,但这个变量似乎不再存在.
如果它很重要,我主要使用C++文件.
似乎允许我循环执行自动完成的唯一方法是C-c , space(semantic-complete-analyze-inline),我可以使用它TAB来自动完成,但它没有显示我可以选择的可能自动完成的菜单.
使用Emacs 24.3.1附带的CEDET和Melpa中的ECB,我得到以下尝试ecb-activate:
All requirements for ECB 2.40 fulfilled - Enjoy it! [2 times]
The ECB is now deactivated.
ecb-clean-up-after-activation-failure: ECB 2.40: Errors during the layout setup of ECB.
(error-type: void-variable, error-data: (ecb-examples-bufferinfo-buffer-name))
Run Code Online (Sandbox Code Playgroud)
以下是emacs pacakage经理的信息:
ecb is an installed package.
Status: Installed in `/home/Smith/.emacs.d/elpa/ecb-20131116.1319/'.
Version: 20131116.1319
Summary: a code browser for Emacs
cedet is a built-in package.
Status: Built-in.
Version: 2.0
Summary: Setup CEDET environment
Run Code Online (Sandbox Code Playgroud)
我的问题,如何让这个工作.亚力克斯奥特的欧洲央行分支似乎表明应该这样做.