在我的vim插件中,我有两个文件:
myplugin/plugin.vim
myplugin/plugin_helpers.py
Run Code Online (Sandbox Code Playgroud)
我想从plugin.vim导入plugin_helpers(使用vim python支持),所以我相信我首先需要将我的插件目录放在python的sys.path上.
我如何(在vimscript中)获取当前正在执行的脚本的路径?在python中,这是__file__.在红宝石中,它是__FILE__.我通过谷歌搜索找不到任何类似的vim,可以这样做吗?
注意:我不是在寻找当前编辑的文件("%:p"和朋友).
有没有办法标记远程git存储库而不在本地克隆它?
为了将代码存储库与配置存储库相关联,我希望(作为CI构建步骤)使用build-n标记配置存储库的当前头部(其中N是jenkins提供的当前内部版本号).
配置存储库不用作构建的一部分,我只是想要一个简单的方法来获取配置修订,就像在构建版本1234时那样,并将其标记为"build-1234"似乎是最简单的方法实现这一点.
我在这里阅读(http://androidlittle.blogspot.com/2009/08/intent-filter-for-share-link.html)需要什么intent-filter来处理android web浏览器发送的"共享链接"意图.我把它放在我的AndroidManifest.xml中的一个块里面,如下所示:
<activity android:name=".ShareLink">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
<meta-data/>
</activity>
Run Code Online (Sandbox Code Playgroud)
我不能为我的生活让这个被触发.当我在android浏览器中共享一个链接时,模拟器日志显示它正在创建一个选择器意图,但是没有给出选择器正在作用的意图的详细信息.弹出没有选择器窗口,意图由SMS应用程序处理.
我也尝试手动启动意图:
adb shell am start -D -a android.intent.action.SEND -c android.intent.category.DEFAULT -t text/plain -d http://google.com/
Run Code Online (Sandbox Code Playgroud)
但我得到的回应是:
Starting: Intent { act=android.intent.action.SEND cat=[android.intent.category.DEFAULT] dat=http://google.com/ typ=text/plain }
Error: Activity not started, unable to resolve Intent { act=android.intent.action.SEND cat=[android.intent.category.DEFAULT] dat=http://google.com/ typ=text/plain flg=0x10000000 }
Run Code Online (Sandbox Code Playgroud)
谁能告诉我我做错了什么?我的主要(启动器)活动工作正常,所以我假设在模拟器上安装没有问题.
我有一个python库.不幸的是我还没有更新它以使用python 3.
在我的setup.py中,我补充道
install_requires=['python<3'],
Run Code Online (Sandbox Code Playgroud)
我的意图是不允许在python 3下安装/使用这个包,因为我知道它还没有(还)工作.我不认为这是正确的方法,因为pip然后尝试下载并安装python 2.7.3(已经是已安装的版本!).
我应该如何在特定范围的python解释器版本上指定我的库依赖?我应该添加Programming Language :: Python :: 2 :: Only标签吗?这实际上会阻止在python 3下安装吗?如果我还想将最低版本限制为python 2.6怎么办?
我更喜欢一种可以在任何地方使用的解决方案,但是只能使用一种解决方案pip(并且希望不会导致easy_install阻塞).
假设我有一个所有vim配置的tarball - 一切都在〜/ .vim(插件,自动加载,颜色,所有东西)和vimrc文件中.我将其解压缩到某个目录.所以在我所在的目录($ PWD)中,有一个"vim"文件夹和一个"vimrc"文件.(注意:这个目录是只读的,所以vim不应该尝试写入它).
我可以向vim提供哪些命令行参数或环境变量,以确保加载所有插件,语法等以及vimrc,其顺序与它们位于〜/ .vim和〜时的顺序相同/.vimrc
作为奖励,如果可能的话,我想忽略主机的〜/ .vimrc和〜/ .vim(但这不是强制性的).
如果你想知道为什么我不只是把文件放在〜/ .vimrc和〜/,vim中,我正在尝试打包我自己的vim配置并随身携带它.我不想破坏我正在使用的计算机的vim配置,我只想用我的配置启动vim会话.
我编写了一个SyncAdapter,它接受"com.google"帐户并与appengine Web服务进行同步.使用开发工具同步测试器(在模拟器上)对此进行测试,此同步似乎正常工作.
问题是,它默认不同步.在"帐户和同步"中转到帐户会显示我的Google帐户为空白 - 就好像没有可用的同步服务一样.
我怀疑为了让我的同步显示在"帐户和同步"菜单中,我需要实现我自己的AccountAuthenticator,这与我认为谷歌的AccountAuthenticator必须已经做的完全相同.这不是一项令人兴奋的工作,而且似乎非常不必要.所以:
如果不,
我有一个Android应用程序,可以通过appengine应用程序进行身份验证.我已经让它工作了一段时间,直到我提供给我的authToken(通过android的AccountManager)过期,当我试图用它来获取会话cookie时导致500错误.
我现在已经使authToken无效,但之后我仍然无法进行身份验证.但是,它不是抛出500(就像无效的身份验证令牌一样),而是像成功的情况一样响应 - 但不是像我期望的那样设置"ACSID"cookie,而是设置"SACSID".它看起来很像一个身份验证cookie(因为它具有随机性和长度),但尝试使用此cookie访问经过身份验证的资源会将我重定向到登录页面.
知道发生了什么事吗?
在zsh中,我有一个函数调用g,其行为如下:
git statusgit $@我希望选项卡完成g与完全相同git.我可以实现这一点alias g=git,但这不允许我status默认调用(上面的第一点).
我该如何委托完成git?
在bash中,我只是complete -F _git g重复使用git的完成功能.使用zsh,git的完成看起来要复杂得多,我无法找到类似的解决方案.
我猜在zsh中有一些函数说"假装我输入命令[x],你会把它完成什么?".如果我知道那是什么,那么使用函数委托给它应该很简单.但是我在手册中找不到这样的功能.
在Python和Ruby(以及其他人,我敢肯定).你可以在枚举前加上*("splat")来将它用作参数列表.例如,在Python中:
>>> def foo(a,b): return a + b
>>> foo(1,2)
3
>>> tup = (1,2)
>>> foo(*tup)
3
Run Code Online (Sandbox Code Playgroud)
Haskell中有类似的东西吗?我认为由于它们的任意长度它不适用于列表,但我觉得有了元组它应该工作.这是我想要的一个例子:
ghci> let f a b = a + b
ghci> :t f
f :: Num a => a -> a -> a
ghci> f 1 2
3
ghci> let tuple = (1,2)
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个允许我这样做的操作符(或函数):
ghci> f `op` tuple
3
Run Code Online (Sandbox Code Playgroud)
我看到(<*>)被称为"splat",但它似乎并不是指与其他语言中的splat相同的东西.无论如何我试过了:
ghci> import Control.Applicative
ghci> f <*> tuple
<interactive>:1:7:
Couldn't match expected type `b0 -> b0'
with actual type …Run Code Online (Sandbox Code Playgroud) 给出例如:
scala> def pipes(strings:String*) = strings.toList.mkString("|")
Run Code Online (Sandbox Code Playgroud)
我可以正常打电话:
scala> pipes("foo", "bar")
res1: String = foo|bar
Run Code Online (Sandbox Code Playgroud)
或者用splat:
scala> val args = List("a","b","c")
scala> pipes(args:_*)
res2: String = a|b|c
Run Code Online (Sandbox Code Playgroud)
但是我可以使用splat为除了varargs参数之外的任何东西提供参数吗?例如,我想做类似的事情:
scala> def pipeItAfterIncrementing(i:Int, s:String) = (i + 1) + "|" + s
scala> val args:Tuple2[Int, String] = (1, "two")
scala> pipeItAfterIncrementing(args:_*)
Run Code Online (Sandbox Code Playgroud)
这不起作用,但有没有办法实现从单个对象提供多个参数的相同效果,无论是元组还是其他东西?是否有任何理由不能为元组实现,因为它们的长度和类型在编译时都是已知的?