我正在尝试使用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,对于远程进程,会导致本地进程不会发生一些额外的返回值/数据.
有没有人有任何见解/建议?
我在很长一段时间内使用了vi后才开始使用emacs.:)
令我烦恼的一件事是,无论何时我修改文件,保存并退出emacs,我都会看到在同一目录中创建的备份文件filename~(如果我编辑的文件是filename).
有什么方法可以摆脱这个吗?或隐藏这些文件?当我执行目录时,看到大量的备份文件是非常烦人的.
class Foo
attr_accessor :a,
:time, # ms since epoch
:b,
:c
end
在文本模式中,'a'之后列出的变量将如上所述缩进,但在ruby模式下,它们将与'attr_accessor'齐平.在这种情况下,如何让ruby模式像文本模式一样缩进?请注意,除了所有其他ruby-mode.el缩进规则之外,我还希望能够选择整个文件并点击cm- \以获得上述缩进.
(我已经接受了Roland的答案,因为它确实是从git 1.7.4.4开始的正确(也是最简单的)解决方案,但请考虑这个问题,关于git的早期版本低至1.7.0.4.)
这个问题有点散漫(主要是由于我后来尝试建立有关情况的更多信息所导致的编辑),但标题中的文字是最重要的一点.
那就是:我正在尝试建立确定所有 git命令将在其输出中显示完整(未缩写)哈希的确定方法.
由于我专注于向后兼容性,因此需要涵盖旧版本的git 1.7.理想情况下,这些解决方案适用于git 1.7.0.4(在仍然支持的Ubuntu 10.04 LTS中使用),但我很满意至少1.7.2.5(对于Debian 6/Squeeze LTS).任何需要1.7.9.5之后的版本(Ubuntu 12.04 LTS)绝对不是理想的,但我仍然喜欢听到它们.
请注意,我不希望失去缩写哈希的能力 - 这个问题背后的目的是确保与git交互的工具总能访问完整且明确的哈希.当我在命令行上手动使用git时,我将在大多数时候想要正常的缩写.
Roland Smith建议使用命令行参数覆盖
core.abbrev看起来很理想,但遗憾的是只有v1.7.4.4才能工作(core.abbrev
之前不存在).我怀疑这意味着我们确实需要确定最全面的一组特定于命令的参数(例如git blame -l)来产生等效的效果.
一些(大多数?)git命令默认输出缩写的哈希值.例如,两者git blame并git-annotate执行此操作,这一事实在冲突发生时绊倒了当前的Emacs支持(因为他们可以在git 1.7.11.1之前执行 - 请参阅下面的编辑1),因为模糊的哈希值在尝试采取行动时会导致错误在他们之上).
开始编辑1
我在Changelog中注意到以下内容,这表明在最新版本的git中不会出现提示此问题的原始问题.
Fixes since v1.7.11.1
---------------------
* "git blame" did not try to make sure that the abbreviated commit
object names in its output are unique.
Run Code Online (Sandbox Code Playgroud)
如果git应该保证任何git命令报告的所有对象名称的唯一性(至少在命令运行时),那么这将大大减轻我的顾虑; 但显然,支持早期版本的git的问题的解决方案仍然会引起人们的兴趣.
结束编辑1
这可以用git blame -l和修复 …
我在Windows上有Emacs版本23,似乎ediff缺少可执行文件?
我可以在哪里下载ediffWindows上的Emacs?
在Emacs中,命令的名称是:
缩进缓冲区内的所有内容(根据您使用的语言)(相当于选择所有缓冲区并按Tab键)
移动"段落"(相当于ctrl-up和ctrl-down)
事实上,我转向一个专业存储的macbook,这些功能是不可能的,因为在ctrl +上绑定了操作系统快捷方式...
我已经尝试在谷歌上找到这个但没有结果.我将在.emacs中为这些函数分配新的绑定.
我有以下函数来打印指向*scratch*缓冲区的行,
(defun print-line ()
(print (thing-at-point 'line) (get-buffer "*scratch*")))
Run Code Online (Sandbox Code Playgroud)
但它甚至打印出像这样的精彩信息
#(" OFFICE
" 0 2 (fontified t org ...
Run Code Online (Sandbox Code Playgroud)
如何丢弃已完成信息的打印.
如何检查字符串是否已经存在于Emacs Lisp的列表中?我需要检查某个路径字符串是否已经在exec-path中,然后将其添加到该列表中(如果不是).谢谢!
这是一个简单的问题,但不知何故,我无法通过谷歌搜索找到答案:
如果不满足某些条件,如何在任意执行点退出函数.例如(我在这里使用"(exit)"代替):
(defun foo ()
(progn (if (/= a1 a2)
(exit) ; if a1!=a2, exit the function somehow
t)
(blahblah...)))
Run Code Online (Sandbox Code Playgroud) 一个小问题一直困扰着我与emacs
在缓冲区中打开shell时,我会:
M-x shell
到现在为止还挺好
但是如果我想打开另一个shell,我会切换到另一个缓冲区并:
C-u M-x shell
但这总是在另一个窗口打开 - 而不是我目前所在的窗口
这有点烦人有谁知道如何解决它?
编辑
我应该补充一点,我在多个分割窗口中打开了多个缓冲区,例如我的框架分为3个部分 - 我想要的是在当前具有焦点的同一部分中打开的新shell,即我输入的那个和不是替代的
我想当我这样做时会发生C-u M-x shell新的shell缓冲区在下一个窗口中打开,即如果你点击就会转移到那个窗口C-x o.我希望它在同一个窗口中打开