kaji331 写了:fanhe 写了:kaji331 写了:fanhe 写了:kaji331 写了:fanhe 写了:kaji331 写了:偶尔发现编译并运行命令执行后只会编译,不会执行,需要自己手动去执行编译好的二进制文件,也没有任何错误提示,很奇怪啊~
是必现的吗?
因为代码里面判断是否构建成功的方法比较搓,下个版本会改的
必现的。
好吧,其实是我的情况比较复杂:
我有两台电脑,历经多个不同发行版的安装和升级,还有配置文件的拷贝,以及权限问题,有时候我自己也搞不清楚怎么了~目前尝试最新版vimlite始终有问题,打开已有的workspace会报错,虽然能够正常打开,但是说什么subprocess.py不存在?实际是我的系统中有这个文件的,创建的时候没有问题。所以,我一直坚持使用526版,它是正常的。之前使用omnicpp实现的代码补全,后来发现clang实现的更好,于是在其中一台机器的vimrc中启动了vimccc,那台机器一切正常,然后拷贝了vimrc文件到另一台机器上,其他插件,账户名什么的都一样,新机器的vimccc也都正常,就是编译运行时只会编译,不会运行,晕了~。
两台机器,正常的一个是amd台式机,64位debian-stable-netinstall最小安装后使用sid源升级,然后最小化安装kde的系统。不正常的是64位linux mint debian edition最新版,删除mate和cinnamon后标准安装kde后删除不需要的组件,然后使用debian sid源升级的。
你把必现的那个编译输出贴一下
现在是通过编译输出来判断是否编译成功的
如图
我已经找到问题所在了
已经修复,下次更新的时候就能看到
楼主可以给我个changelog之类的么,我想自己把现有的526版修复好,目前这个版本用得最顺手
代码: 全选
Index: WorkspaceMgr/wsp.vim
===================================================================
--- WorkspaceMgr/wsp.vim (版本 746)
+++ WorkspaceMgr/wsp.vim (工作副本)
@@ -5984,44 +5984,57 @@
self.DebugProject(actProjName, hasProjFile, firstRun)
def BuildProject(self, projName):
+ '''构建成功返回 True,否则返回 False'''
ds = Globals.DirSaver()
try:
os.chdir(self.VLWIns.dirName)
except OSError:
- return
+ return False
+ result = False
+
cmd = self.builder.GetBuildCommand(projName, '')
if cmd:
if vim.eval("g:VLWorkspaceSaveAllBeforeBuild") != '0':
vim.command("wa")
tempFile = vim.eval('tempname()')
- if True:
- if Globals.IsWindowsOS():
- #vim.command('!"%s >%s 2>&1"' % (cmd, tempFile))
- # 用 subprocess 模块代替
- p = subprocess.Popen('"C:\\WINDOWS\\system32\\cmd.exe" /c '
- '"%s 2>&1 | tee %s && pause || pause"'
- % (cmd, tempFile))
- p.wait()
+ if Globals.IsWindowsOS():
+ #vim.command('!"%s >%s 2>&1"' % (cmd, tempFile))
+ # 用 subprocess 模块代替
+ p = subprocess.Popen('"C:\\WINDOWS\\system32\\cmd.exe" /c '
+ '"%s 2>&1 | tee %s && pause || pause"'
+ % (cmd, tempFile))
+ p.wait()
+ else:
+ # 强制设置成英语 locale 以便 quickfix 处理
+ cmd = "export LANG=en_US; " + cmd
+ # NOTE: 这个命令无法返回 cmd 的执行返回值,蛋疼了...
+ vim.command("!%s 2>&1 | tee %s" % (cmd, tempFile))
+ vim.command('cgetfile %s' % tempFile)
+ qflist = vim.eval('getqflist()')
+ if qflist:
+ lastLine = qflist[-1]['text']
+ if lastLine.startswith('make: ***'): # make 出错标志
+ result = False
else:
- # 强制设置成英语 locale 以便 quickfix 处理
- cmd = "LANG=en_US " + cmd
- vim.command("!%s 2>&1 | tee %s" % (cmd, tempFile))
- vim.command('cgetfile %s' % tempFile)
- else:
- os.system("gnome-terminal -t 'make' -e "\
- "\"sh -c \\\"%s 2>&1 | tee '%s' "\
- "&& echo ========================================"\
- "&& echo -n This will close in 3 seconds... "\
- "&& read -t 3 i && echo Press ENTER to continue... "\
- "&& read i;"\
- "vim --servername '%s' "\
- "--remote-send '<C-\><C-n>:cgetfile %s "\
- "| echo \\\\\\\"Readed the error file.\\\\\\\"<CR>'\\\"\" &"
- % (cmd, tempFile, vim.eval('v:servername'),
- tempFile.replace(' ', '\\ ')))
+ result = True
+# if False:
+# os.system("gnome-terminal -t 'make' -e "\
+# "\"sh -c \\\"%s 2>&1 | tee '%s' "\
+# "&& echo ========================================"\
+# "&& echo -n This will close in 3 seconds... "\
+# "&& read -t 3 i && echo Press ENTER to continue... "\
+# "&& read i;"\
+# "vim --servername '%s' "\
+# "--remote-send '<C-\><C-n>:cgetfile %s "\
+# "| echo \\\\\\\"Readed the error file.\\\\\\\"<CR>'\\\"\" &"
+# % (cmd, tempFile, vim.eval('v:servername'),
+# tempFile.replace(' ', '\\ ')))
+
+ return result
+
def CleanProject(self, projName):
ds = Globals.DirSaver()
try:
@@ -6040,7 +6053,7 @@
p.wait()
else:
# 强制设置成英语 locale 以便 quickfix 处理
- cmd = "LANG=en_US " + cmd
+ cmd = "export LANG=en_US; " + cmd
vim.command("!%s 2>&1 | tee %s" % (cmd, tempFile))
vim.command('cgetfile %s' % tempFile)
@@ -6122,9 +6135,7 @@
self.RunProject(actProjName)
def BuildAndRunProject(self, projName):
- self.BuildProject(projName)
- qflist = vim.eval('getqflist()')
- if qflist and qflist[-1]['text'][:5] != 'make:':
+ if self.BuildProject(projName):
# 构建成功
self.RunProject(projName)
@@ -6150,7 +6161,7 @@
if cmd:
# 强制设置成英语 locale 以便 quickfix 处理
- cmd = "LANG=en_US " + cmd
+ cmd = "export LANG=en_US; " + cmd
if vim.eval("g:VLWorkspaceSaveAllBeforeBuild") != '0':
vim.command("wa")
tempFile = vim.eval('tempname()')
这是修改,我把文件名改了,你注意一下,会打patch的话试试看能不能打上这个patch
因为我正在作比较大的修订,未来基本都会把所有 vim 脚本放到 autoload 里面,以免第一次打开 vim 载入过多的东西