小编Rya*_*son的帖子

如何在elisp中捕获shell命令的标准输出?

我想在Emacs中运行shell命令并将完整输出捕获到变量.有没有办法做到这一点?例如,我想能够设置hello-string"hello"以下方式:

(setq hello-string (capture-stdout-of-shell-command "/bin/echo hello"))
Run Code Online (Sandbox Code Playgroud)

该函数是否capture-stdout-of-shell-command存在,如果存在,它的真实名称是什么?

emacs elisp stdout capture

37
推荐指数
2
解决办法
9734
查看次数

gitignore和hgignore的相互转换?

我刚刚开始使用hg-git将一些mercurial存储库推送到github,我意识到如果人们使用git检查它们,它们将需要存储库中的.gitignore文件.是否有任何自动方式将hgignore转换为gitignore,反之亦然?

git version-control mercurial gitignore hgignore

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

如何将当前函数转换为变量?

如何在Python中获取包含当前正在执行的函数的变量?我不想要这个功能的名字.我知道我可以使用inspect.stack获取当前的函数名称.我想要实际的可调用对象.这可以在不使用inspect.stack检索函数的名称然后eval输入名称来获取可调用对象的情况下完成吗?

编辑:我有理由这样做,但它甚至不是一个好的.我正在使用plac来解析命令行参数.你可以通过do来使用它plac.call(main),它从"main"的函数签名生成一个ArgumentParser对象.在"main"中,如果参数有问题,我想退出一个包含ArgumentParser对象的帮助文本的错误消息,这意味着我需要通过调用直接访问该对象plac.parser_from(main).print_help().能够说出来是很好的:plac.parser_from(get_current_function()).print_help()所以我不依赖于被命名为"main"的函数.现在,我的"get_current_function"实现将是:

import inspect    
def get_current_function():
    return eval(inspect.stack()[1][3])
Run Code Online (Sandbox Code Playgroud)

但是这个实现依赖于具有名称的函数,我认为这不是太繁重.我永远不会这样做plac.call(lambda ...).

从长远来看,要求plac的作者实现print_help方法来打印最近使用plac或类似东西调用的函数的帮助文本可能更有用.

python function introspection

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

在Python中,我可以根据其他参数指定函数参数的默认值吗?

假设我有一个带有两个参数的python函数,但我希望第二个arg是可选的,默认是作为第一个参数传递的任何东西.所以,我想做这样的事情:

def myfunc(arg1, arg2=arg1):
    print (arg1, arg2)
Run Code Online (Sandbox Code Playgroud)

除此之外不起作用.我能想到的唯一解决方法是:

def myfunc(arg1, arg2=None):
    if arg2 is None:
        arg2 = arg1
    print (arg1, arg2)
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

python arguments function default-value

29
推荐指数
2
解决办法
8782
查看次数

以hg身份显示重命名?

我知道Mercurial可以跟踪文件的重命名,但是当我这样做时,如何让它显示重命名而不是添加/删除hg status?例如,而不是:

A bin/extract-csv-column.pl
A bin/find-mirna-binding.pl
A bin/xls2csv-separate-sheets.pl
A lib/Text/CSV/Euclid.pm
R src/extract-csv-column.pl
R src/find-mirna-binding.pl
R src/modules/Text/CSV/Euclid.pm
R src/xls2csv-separate-sheets.pl
Run Code Online (Sandbox Code Playgroud)

我想要一些迹象表明已经移动了四个文件.

我想我读到的地方输出是这样的,以保持与某些东西或其他东西的向后兼容性,但我并不担心.

mercurial dvcs rename

27
推荐指数
2
解决办法
3069
查看次数

升级R版本后,如何轻松地重新安装旧版本中安装的所有软件包?

可能重复:
安装新版R的无痛方式?

在R中,程序包在升级期间不兼容,必须重新安装.有没有办法在新版本中轻松安装与旧版本中安装的相同的软件包?

编辑:我无法轻松访问旧版本的R,因为我通过apt升级.

r upgrade reinstall

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

我推送它后可以强制远程hg repo进行hg更新吗?

我在我的笔记本电脑上的mercurial存储库中编写代码,然后通过服务器将其推送到服务器hg push,然后在服务器上运行hg update,然后在服务器上运行我新编写的代码.有什么办法可以强制服务器上的repo在我从笔记本电脑上推送到服务器后自动更新到最新版本,这样我就可以保存这个步骤了吗?

version-control mercurial synchronization

22
推荐指数
1
解决办法
3994
查看次数

是否有一个Emacs钩子在每个缓冲区创建后运行?

我希望每次Emacs创建一个缓冲区时运行一些代码.有这个挂钩吗?有什么名字的东西after-make-buffer-functions

编辑:如果有人想知道我想要的是什么,你可以在这里阅读我的Emacs配置的相关部分:https://github.com/DarwinAwardWinner/dotemacs/blob/master/site-lisp/settings/tempbuf-settings .el

基本上,我希望在具有某些主要模式的所有缓冲区中启用tempbuf模式.所以Lindydancer的回答实际上比我原来想要的更合适.

我知道我已经可以通过在所有主要模式钩子中添加tempbuf模式钩子来在特定模式下启用tempbuf模式,但我想让它可以编辑M-x customize,这是最简单的方法.

emacs elisp

19
推荐指数
2
解决办法
4299
查看次数

如何检查git存储库中是否有任何提交?

我正在编写一个自定义git命令,该命令只能在没有提交的全新存储库中运行(请参阅此问题).如何在我的脚本中执行简单检查以查看现有repo是否为零提交?

基本上,下面的空白是什么?

if ___________ ; then
    echo "Git repo already has commits. Aborting.
else
    echo "Git repo has no commits. Doing whatever my script does."
fi
Run Code Online (Sandbox Code Playgroud)

git

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

Emacs 24中变量作用域的新规则是什么?

Emacs 24现在具有词法范围的变量.当然,它还具有动态范围的变量.既然它有两者,我很困惑变量什么时候会有哪种范围.有一个lexical-binding变量控制何时启用词法绑定,我想我defvar现在读到一些关于动态范围变量的声明,但总的来说我很丢失.在Emacs 24的新范围规则中,是否有一个很好的解释?换句话说,当我查看为Emacs 24编写的Emacs Lisp代码中的变量时,如何判断变量使用的范围?

emacs elisp dynamic-scope lexical-scope emacs24

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