我正在尝试使用flymake运行pyflakes,如此处所示
这适用于本地文件,并且几乎可以通过稍微调整来处理远程文件,但是我遇到了一个问题,即flymake/pyflakes'在运行时修改了缓冲区(尽管实际上似乎没有任何变化),这会呈现它在实践中有点无用(例如,保存文件运行flymake,它会立即再次修改缓冲区).
这就是我几乎让它工作的方法:
tramp-remote-process-environment变量,以便可以在其PATH中找到pyflakes(when (load "flymake" t) ...)构造似乎没有像我预期的那样工作,但我并不太担心.flymake-start-syntax-check-process函数,以便它使用start-file-process(与tramp一起使用)而不是start-process(没有).处理本地文件时#4中的更改似乎不会导致任何问题,但现在这使得flymake能够为远程文件运行远程pyflakes(错误会按预期突出显示),在这种情况下缓冲区被"修改"每当flymake运行时.
我猜测start-file-process,对于远程进程,会导致本地进程不会发生一些额外的返回值/数据.
有没有人有任何见解/建议?
在Emacs中,当我编写数学教科书的理论摘要时,我经常使用数学符号.我使用org-mode来构造信息,我知道至少两种输入特殊符号的方法:
\land然后按C-c C-x \(org-toggle-pretty-entities)按字面意思查看;insert-char).但我希望它按以下方式运行:我输入LaTeX表示,它会自动转换为物理Unicode格式(缩写?).是否有一个包,如果没有,我应该写什么elisp来实现这种行为?
我的Emacs在OS X系统上.有没有办法在我使用时将新帧默认为空缓冲区⌘N(就像TextEdit的工作方式一样)?我更喜欢先写内容,然后再决定一个合适的文件名.但是,Emacs要我先决定文件名,然后再写内容.我认为没有任何优势.有谁知道为什么Emacs这样工作?
基本上,如果我使用C-x 5 2,Emacs总是弹出一个框架,包含我目前正在处理的任何文件.这很不方便.我也不希望我的Emacs弹出一个默认的新框架*scratch*(许多谷歌搜索结果以某种方式建议这种方法).我更喜欢在新帧中暂时使用一个名为"Untitled"的缓冲区,如果⌘N再次使用,Emacs会弹出另一个临时"无标题2"缓冲区,依此类推.这样,我可以稍后决定缓冲区文件名.
我有以下代码,它增加了向量中每对的第一个元素:
(vec (map (fn [[key value]] [(inc key) value]) [[0 :a] [1 :b]]))
Run Code Online (Sandbox Code Playgroud)
但是我担心这个代码不够优雅,因为它首先使用map创建一个序列,然后将其转换回矢量.
考虑这个类比:
(into [] (map (fn [[key value]] [(inc key) value]) [[0 :a] [1 :b]]))
Run Code Online (Sandbox Code Playgroud)
在#clojure@irc.freenode.net上有人告诉我,使用上面的代码是不好的,因为into扩展到了(reduce conj [] (map-indexed ...)),在这个过程中产生了许多中间对象.然后我被告知实际上into并没有扩展到(reduce conj ...)可能的时候使用瞬态.同时测量经过的时间显示into实际上比...更快vec.
所以我的问题是:
map矢量的正确方法是什么?vec和into向量时,下面会发生什么?相关但不重复的问题:
在Python中有函数all,any如果列表的全部或部分元素分别为true,则它们返回true.Common Lisp中是否有相同的功能?如果没有,那么最简洁和惯用的方式是什么?
目前我有这个:
(defun all (xs)
(reduce (lambda (x y) (and x y)) xs :initial-value t))
(defun any (xs)
(reduce (lambda (x y) (or x y)) xs :initial-value nil))
Run Code Online (Sandbox Code Playgroud) 我希望某些键和键组合在Emacs中表现为其他键或键组合.例如,我希望F5能够代替C-c涉及它的每个可能的组合,或者C-S-作为C-.如果不手动重新绑定所有这些组合键,是否可以这样做?
我使用Emacs 24.2.我已安装js-comint并js-mode从MELPA执行run-js,现在在REPL而不是>签名我有这个胡言乱语:
^[[1G> ^[[0K^[[3G
Run Code Online (Sandbox Code Playgroud)
在Inferior Javascript模式下的REPL本身工作正常,只是>标志被更改.如果输入未完成的表达式,它甚至会打印出来^[[1G... ^[[0K^[[5G.该^[是在系统的字符,不与复制-粘贴复制的,我加他们为你有一个想法.
在我的init文件中:
(require 'js-comint)
(setq inferior-js-program-command "nodejs")
Run Code Online (Sandbox Code Playgroud)
在终端呼叫中nodejs产生工作REPL.
为什么提示这样做?我该怎么做才能纠正这个问题?
如何查看从网站生成的发票的打印预览.如果我用脚本打印
<a href="javascript:window.print()">print this page</a>
Run Code Online (Sandbox Code Playgroud)
在打印"打印此页"也打印.我怎么能隐藏它?
我有一些价值,知道一些Emacs变量拥有它.如何找到哪个变量具有此值?值可以是符号,整数或字符串,变量可以保存值本身,但是包含值的列表.
例.变量default-directory包含字符串"/var/www/".我有那个字符串,但我突然忘记了变量的名字.如何搜索变量并找到default-directory包含该字符串的变量?
是否有一些内置功能,或唯一的解决方案是自定义elisp片段?
如何使Python的enumerate函数从较大的数字枚举到较小的数字(降序,递减,倒计时)?或者一般来说,如何使用不同的步进增量/减量enumerate?
例如,应用于list的此函数['a', 'b', 'c']具有起始值10和步骤-2,将生成迭代器[(10, 'a'), (8, 'b'), (6, 'c')].