我使用的是Emacs 23和php-mode.el 1.5.0.当我在我的这个.emacs:
(require 'php-mode)
Run Code Online (Sandbox Code Playgroud)
我在Emacs启动时收到此错误消息:
警告(初始化):加载`/Users/kdj/.emacs'时出错:
错误:必须在文件中使用`c-lang-defconst'
为确保正常运行,您应该调查并删除初始化文件中的错误原因.使用`--debug-init'选项启动Emacs以查看完整的错误回溯.
如果我(require 'php-mode)在Emacs启动后评估,我不会收到任何错误消息.
我找到了一个博客条目,表明此问题是Emacs 23特有的(也就是说,Emacs 22.x没有错误),但它没有提供任何解决方案.
我不知道这是否重要,但我使用的是Mac OS X,并且我使用当前的CVS源构建了Emacs ./configure --with-ns.
这里发生了什么,和/或我如何解决它?
我在GNU/Linux Debian机器上使用GNU/Emacs HEAD和附带的cc-mode(c-version 5.32.2).
我正在尝试定义一个自定义样式来管理Java编程语言的代码约定,Android的贡献者代码样式指南和一些自定义规则.
作为一个lisp初学者,从头开始似乎并不明智.因此,我使用google-c-style作为起点,我设法获得最缩进规则的预期行为,嵌套条件有例外(请参阅下面的代码片段).
从那篇文章中,我已经定义(arglist-cont-nonempty . ++)了我的自定义样式(完整代码:custom-java-style.el).不幸的是,虽然大多数情况按预期缩进:
if ((condition1 && condition2)
|| (condition3 && condition4)
||!(condition5 && condition6)) {
doSomethingAboutIt();
someMethod(longExpression1, longExpression2, longExpression3,
longExpression4, longExpression5);
}
Run Code Online (Sandbox Code Playgroud)
嵌套条件错误地缩进:
if (!(deviceRegistred.getAddress().equalsIgnoreCase(deviceAdress)
&& deviceRegistred.getName().equalsIgnoreCase(deviceName))) {
doSomethingAboutIt();
}
Run Code Online (Sandbox Code Playgroud)
Ctrl-c Ctrl+s报告Syntactic analysis: ((arglist-cont-nonempty 2447 2450) (arglist-cont-nonempty 2447 2452))第二行,我显然有16个空格(2次++)缩进而不是8(++).
我想得到以下缩进:
if (!(deviceRegistred.getAddress().equalsIgnoreCase(deviceAdress)
&& deviceRegistred.getName().equalsIgnoreCase(deviceName))) {
doSomethingAboutIt();
}
Run Code Online (Sandbox Code Playgroud)
我试图定义一个(,(when (fboundp …)))像用于 …
我刚刚开始使用emacs,并且有一个我非常喜欢的功能,并且搜索一下也没用.我希望其他人这样做是因为我还不想学习elisp.
void foo()<cursor>
Run Code Online (Sandbox Code Playgroud)
我想输入一个"{"来导致这种情况发生
void foo(){
<cursor>
}
Run Code Online (Sandbox Code Playgroud)
我希望这只发生在cc模式中,并且只在不在字符串/ comment/etc中的行尾
我想到的第一件事是重新绑定"{"来做到这一点(我可以弄清楚如何自己做),但很难让它只在恰当的时间发生.
任何提示将不胜感激.
我已经查看了一些其他问题和el文件,寻找我可以修改以满足我的需求但我遇到麻烦所以我来找专家.
无论如何,根据光标在行中的位置,键的行为会有所不同吗?
更具体地说,如果我在行的中间,我想将tab键映射到行的末尾,但如果我的光标位于行的开头,通常会作为制表符工作.
到目前为止,我有大括号和引号自动配对并将光标重新定位在C++/Java等中.我想使用tab键来结束行,例如函数没有任何参数.
假设我有这个代码:
{
"type" : "home",
"number":"212 555-1234"
}
Run Code Online (Sandbox Code Playgroud)
我希望我的emacs在某些模式下自动在冒号后插入空格.特别是我正在使用基于cc模式的javascript模式.它有帮助吗?
预先感谢.
每当我输入某些内容时,Emacs就会重新使用当前行,例如";" 要么 "//".这非常令人讨厌,因为有很多地方不够智能缩进.
如何禁用此功能?我仍然希望能够使用TAB缩进该行,但我不希望我输入的任何源代码使其重新启动.
(我正在使用Dylan Moonfire的C#模式,但这可能适用于任何cc模式.)
多次按Tab键不会将文本向右移动.有没有办法使它的行为像Visual Studio的智能缩进?第一个选项卡缩进,后续选项卡将文本移动到下一个制表位.谢谢.
我cc-mode在Emacs 工作,我发现缩进非常烦人.
作为一个VIM用户,我几乎习惯了更长的缩进,以及尽可能多地按Tab键选项卡.
在Emacs中,我的TAB映射到goto-line.首先,哪个函数设计用于缩进当前行(或者点之后的内容)?indent-region很烦人,因为你需要突出显示该区域.
第二,修复缩进的最佳方法是什么?
谢谢,
我使用由一个安装一个C++程序员cc-mode和CEDET,当然还有我们敬爱的emacs(v24.2).
我缺少的一个功能是一个通过参数列表快速移动点的函数.考虑这个例子:
void takesManyArgs( int a1, int a2, int a3, std::pair<int,int> a4, int a5 ){
// does something nifty!
}
// [...]
takesManyArgs( b1, b2, b3, make_pair( b4, b5 ), b6 );
Run Code Online (Sandbox Code Playgroud)
点在第一个之前int.现在我想以一种简单的方法快速浏览参数列表,即在第一个非空格字符超过逗号(参数分隔符)之前移动的forward-argument(和backward-argumentaswell)函数.
我已经编写了一个小功能,但它不是我喜欢它的工作方式:
(defun arg-forward ()
"Move point forward in the file until we hit an argument separator, i.e. comma, colon or semicolon."
(interactive)
(progn
(re-search-forward "[,]")))
Run Code Online (Sandbox Code Playgroud)
原则上这个函数只是跳转到下一个逗号.那不是我想要的行为.
我想要一个功能:
,| int它看起来像, |int这里 …在Emacs 24.4中,默认缩进行为已更改 - 现在新行自动缩进.从发行说明:
*** `electric-indent-mode' is now enabled by default.
Typing RET reindents the current line and indents the new line.
`C-j' inserts a newline but does not indent. In some programming modes,
additional characters are electric (eg `{').
Run Code Online (Sandbox Code Playgroud)
我更喜欢旧的行为,所以我补充道
(electric-indent-mode 0)
Run Code Online (Sandbox Code Playgroud)
到我的.emacs档案.但是,这会禁用所有电子角色,这不是我想要的.
是否有任何方法可以禁用新行为,同时仍然有像'{'或':'这样的字符触发缩进?
cc-mode ×10
emacs ×10
elisp ×4
indentation ×3
auto-indent ×1
c ×1
colon ×1
curly-braces ×1
dot-emacs ×1
emacs24 ×1
java ×1
php-mode ×1