小编gfx*_*onk的帖子

如何获取当前正在执行的vimscript的路径

在我的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"和朋友).

vim

53
推荐指数
3
解决办法
1万
查看次数

标记远程git存储库而不克隆它

有没有办法标记远程git存储库而不在本地克隆它

为了将代码存储库与配置存储库相关联,我希望(作为CI构建步骤)使用build-n标记配置存储库的当前头部(其中N是jenkins提供的当前内部版本号).

配置存储库不用作构建的一部分,我只是想要一个简单的方法来获取配置修订,就像在构建版本1234时那样,并将其标记为"build-1234"似乎是最简单的方法实现这一点.

tags git

31
推荐指数
3
解决办法
9809
查看次数

如何在android中处理浏览器的"共享页面"意图?

我在这里阅读(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)

谁能告诉我我做错了什么?我的主要(启动器)活动工作正常,所以我假设在模拟器上安装没有问题.

android android-intent

28
推荐指数
1
解决办法
8646
查看次数

setup.py:限制python解释器的允许版本

我有一个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阻塞).

python pip easy-install setup.py

28
推荐指数
2
解决办法
5796
查看次数

如何在vim中覆盖〜/ .vim和〜/ .vimrc路径(但没有其他路径)?

假设我有一个所有vim配置的tarball - 一切都在〜/ .vim(插件,自动加载,颜色,所有东西)和vimrc文件中.我将其解压缩到某个目录.所以在我所在的目录($ PWD)中,有一个"vim"文件夹和一个"vimrc"文件.(注意:这个目录是只读的,所以vim不应该尝试写入它).

我可以向vim提供哪些命令行参数或环境变量,以确保加载所有插件,语法等以及vimrc,其顺序与它们位于〜/ .vim和〜时的顺序相同/.vimrc

作为奖励,如果可能的话,我想忽略主机的〜/ .vimrc和〜/ .vim(但这不是强制性的).

如果你想知道为什么我不只是把文件放在〜/ .vimrc和〜/,vim中,我正在尝试打包我自己的vim配置并随身携带它.我不想破坏我正在使用的计算机的vim配置,我只想用我的配置启动vim会话.

vim configuration

23
推荐指数
2
解决办法
2万
查看次数

Android SyncAdapter使用谷歌帐户

我编写了一个SyncAdapter,它接受"com.google"帐户并与appengine Web服务进行同步.使用开发工具同步测试器(在模拟器上)对此进行测试,此同步似乎正常工作.

问题是,它默认不同步.在"帐户和同步"中转到帐户会显示我的Google帐户为空白 - 就好像没有可用的同步服务一样.

我怀疑为了让我的同步显示在"帐户和同步"菜单中,我需要实现我自己的AccountAuthenticator,这与我认为谷歌的AccountAuthenticator必须已经做的完全相同.这不是一项令人兴奋的工作,而且似乎非常不必要.所以:

  • 有没有办法在使用我的SyncAdapter的"帐户和同步"菜单中添加条目但依赖于Google帐户?或者为谷歌帐户添加一个子菜单,以便同步我的appengine服务?

如果不,

  • 有没有办法可以在我写的AccountAuthenticator中重新使用谷歌的AccountAuthenticator?

authentication android

20
推荐指数
1
解决办法
7124
查看次数

为什么我从谷歌appengine登录而不是ACSID获取SACSID cookie?

我有一个Android应用程序,可以通过appengine应用程序进行身份验证.我已经让它工作了一段时间,直到我提供给我的authToken(通过android的AccountManager)过期,当我试图用它来获取会话cookie时导致500错误.

我现在已经使authToken无效,但之后我仍然无法进行身份验证.但是,它不是抛出500(就像无效的身份验证令牌一样),而是像成功的情况一样响应 - 但不是像我期望的那样设置"ACSID"cookie,而是设置"SACSID".它看起来很像一个身份验证cookie(因为它具有随机性和长度),但尝试使用此cookie访问经过身份验证的资源会将我重定向到登录页面.

知道发生了什么事吗?

authentication google-app-engine android

20
推荐指数
1
解决办法
4853
查看次数

zsh:当我输入命令Y时,对命令X使用完成

在zsh中,我有一个函数调用g,其行为如下:

  • 没有参数,请致电 git status
  • 使用一个或多个参数,使用所有给定的参数委托给git - 即call git $@

我希望选项卡完成g与完全相同git.我可以实现这一点alias g=git,但这不允许我status默认调用(上面的第一点).

我该如何委托完成git

在bash中,我只是complete -F _git g重复使用git的完成功能.使用zsh,git的完成看起来要复杂得多,我无法找到类似的解决方案.

我猜在zsh中有一些函数说"假装我输入命令[x],你会把它完成什么?".如果我知道那是什么,那么使用函数委托给它应该很简单.但是我在手册中找不到这样的功能.

zsh tab-completion programmable-completion

18
推荐指数
1
解决办法
1964
查看次数

Haskell有像Python和Ruby这样的splat运算符吗?

在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)

haskell tuples splat

15
推荐指数
1
解决办法
1436
查看次数

scala splat可用于任何不是varargs的东西吗?

给出例如:

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)

这不起作用,但有没有办法实现从单个对象提供多个参数的相同效果,无论是元组还是其他东西?是否有任何理由不能为元组实现,因为它们的长度和类型在编译时都是已知的?

scala splat unroll

14
推荐指数
2
解决办法
6001
查看次数