是否可以在(g)Vim中将光标移动到其先前的位置(在正常模式下)?在先前光标位置列表中来回循环的东西将是理想的.但也只是切换到最后一个位置就足够了(类似于cd -bash与目录).
这是一个小小的示范:
line |1| <- cursor position
line 2
line 3
line 4
Run Code Online (Sandbox Code Playgroud)
假设我做了2j,现在是这样的:
line 1
line 2
line |3| <- cursor position
line 4
Run Code Online (Sandbox Code Playgroud)
现在我想按某些东西(除了2k显而易见的东西)回到第一个位置,也可能回到以前的位置.
我正在使用c ++模式运行emacs 23并且存在一些缩进问题.假设我有这个代码:
void foo()
{
if (cond)
{ <---
int i;
...
} <---
}
Run Code Online (Sandbox Code Playgroud)
这似乎是自动缩进的默认行为.但是我想改变它所以它会是这样的:
void foo()
{
if (cond)
{
int i;
...
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法通过配置c ++模式或我的.emacs文件轻松完成此操作?
我最近切换到Emacs并仍然找到了解决方法.我用C++编写代码,并想知道哪些工具扩展了Emacs以支持代码浏览(查找符号等),重构和代码完成.我听说过:
但我对我的需求感到困惑.有些地方说cedet提供了所有功能,但其他地方说我需要调用etags才能使cedet正常工作.
有人可以为我清除这个吗?我需要所有这些工具吗?
假设我将Sun的JVM嵌入到C++应用程序中.通过JNI,我调用了一个Java方法(我自己的),它又调用了我在共享库中实现的本机方法.
如果此本机方法抛出C++异常会发生什么?
编辑:编译器是gcc 3.4.x,jvm是sun的1.6.20.
你注意到使用Django框架的最大错误是什么?您是否看到过一些真正的误用,可能应该作为对Django文档的警告?
我正在使用Javassist生成一个foo带有方法的类,bar但我似乎无法找到一种方法来向方法添加注释(注释本身不是运行时生成的).我试过的代码看起来像这样:
ClassPool pool = ClassPool.getDefault();
// create the class
CtClass cc = pool.makeClass("foo");
// create the method
CtMethod mthd = CtNewMethod.make("public Integer getInteger() { return null; }", cc);
cc.addMethod(mthd);
ClassFile ccFile = cc.getClassFile();
ConstPool constpool = ccFile.getConstPool();
// create the annotation
AnnotationsAttribute attr = new AnnotationsAttribute(constpool, AnnotationsAttribute.visibleTag);
Annotation annot = new Annotation("MyAnnotation", constpool);
annot.addMemberValue("value", new IntegerMemberValue(ccFile.getConstPool(), 0));
attr.addAnnotation(annot);
ccFile.addAttribute(attr);
// generate the class
clazz = cc.toClass();
// length is zero
java.lang.annotation.Annotation[] annots = clazz.getAnnotations(); …Run Code Online (Sandbox Code Playgroud) 我有以下场景:
* ab82147 (HEAD, topic) changes
* 8993636 changes
* 82f4426 changes
* 18be5a3 (master) first
Run Code Online (Sandbox Code Playgroud)
我想(非快进)合并topic成master.这需要我:
git checkout master git merge --no-ff topic但是检查master,然后将主题合并到它会导致git更改我的工作目录(虽然最终结果与检查master之前的结果相同),而我遇到的问题是由于我们项目的大小,构建它需要大约30分钟(使用IncrediBuild)虽然没有真正改变,但它简直无法忍受.
所以我想得到的是以下内容:
* 9075cf4 (HEAD, master) Merge branch 'topic'
|\
| * ab82147 (topic) changes
| * 8993636 changes
| * 82f4426 changes
|/
* 18be5a3 first
Run Code Online (Sandbox Code Playgroud)
没有真正触及工作目录(或至少以某种方式欺骗git).
我正在开发可供C或C++应用程序使用的C++组件DLL.暴露的dll功能如下
#include <tchar.h>
#ifdef IMPORT
#define DLL __declspec(dllimport)
#else
#define DLL __declspec(dllexport)
#endif
extern "C" {
DLL bool __cdecl Init();
DLL bool __cdecl Foo(const TCHAR*);
DLL bool __cdecl Release();
}
Run Code Online (Sandbox Code Playgroud)
这些函数的内部实现是没有公开的C++类,我假设使用这种风格,dll可以在C或C++应用程序中使用.问题是我没有处理任何类型的c ++异常(即bad_alloc),我将这些东西留给了调用者(更高层).经过与同事的多次辩论,我应该捕获所有异常并返回错误代码或至少是错误的,因为在C应用程序的情况下,它无法处理C++异常?真的吗?我一般应该做些什么?如果您正在开发将由其他系统使用的组件,是否有处理exeptions的经验法则.
我们有一个带有嵌入式JVM(Sun)的C++应用程序.因为我们注册了自己的信号处理程序,所以建议我们在初始化JVM之前这样做,因为它安装了自己的处理程序(参见此处).
根据我的理解,JVM内部知道信号是否源自其自己的代码,如果不是它将链路传递给我们的处理程序.
我们开始看到的是我们正在获得SIGPIPE,其调用堆栈看起来大致相同(顶部条目是我们的信号处理程序):
/.../libos_independent_utilities.so(_ZN2os32smart_synchronous_signal_handlerEiP7siginfoPv+0x9) [0x2b124f7a3989]
/.../jvm/jre/lib/amd64/server/libjvm.so [0x2aaaab05dc6c]
/.../jvm/jre/lib/amd64/server/libjvm.so [0x2aaaab05bffb]
/.../jvm/jre/lib/amd64/server/libjvm.so(JVM_handle_linux_signal+0x718) [0x2aaaab05e878]
/.../jvm/jre/lib/amd64/server/libjvm.so [0x2aaaab05bf0e]
/lib64/libpthread.so.0 [0x3c2140e4c0]
/lib64/libpthread.so.0(send+0x91) [0x3c2140d841]
/.../jvm/jre/lib/amd64/libnet.so [0x2aaabd360269]
/.../jvm/jre/lib/amd64/libnet.so(Java_java_net_SocketOutputStream_socketWrite0+0xee) [0x2aaabd35cf4e]
[0x2aaaaeb3bf7f]
Run Code Online (Sandbox Code Playgroud)
似乎JVM决定将从中提出的SIGPIPE send传递给我们的信号处理程序.这样做是对的吗?
另外,为什么调用堆栈不完整?我的意思是显然它不能告诉我以前的java代码,socketWrite0但为什么我不能在java代码之前看到堆栈?
最近我在Vim中进行重构时犯了一些错误,结果是未定义和未使用的变量.任何体面的IDE(如NetBeans)都会将它们标记为这样,但我还没有遇到过这样做的Vim插件.
谁能帮我吗?我主要是用PHP编程.