小编phi*_*ils的帖子

使用flymake和emacs中的tramp远程运行pyflakes?

我正在尝试使用flymake运行pyflakes,如此处所示

这适用于本地文件,并且几乎可以通过稍微调整来处理远程文件,但是我遇到了一个问题,即flymake/pyflakes'在运行时修改了缓冲区(尽管实际上似乎没有任何变化),这会呈现它在实践中有点无用(例如,保存文件运行flymake,它会立即再次修改缓冲区).

这就是我几乎让它工作的方法:

  1. 远程盒子上安装了pyflakes.
  2. 自定义我的tramp-remote-process-environment变量,以便可以在其PATH中找到pyflakes
  3. 使用了上面wiki链接中代码的变体.显然我排除了为远程缓冲区禁用它的检查.此外,该(when (load "flymake" t) ...)构造似乎没有像我预期的那样工作,但我并不太担心.
  4. 重新定义(出于测试目的 - 建议应该没有问题,如果这可以工作)flymake-start-syntax-check-process函数,以便它使用start-file-process(与tramp一起使用)而不是start-process(没有).

处理本地文件时#4中的更改似乎不会导致任何问题,但现在这使得flymake能够为远程文件运行远程pyflakes(错误会按预期突出显示),在这种情况下缓冲区被"修改"每当flymake运行时.

我猜测start-file-process,对于远程进程,会导致本地进程不会发生一些额外的返回值/数据.

有没有人有任何见解/建议?

  • 关于Ubuntu的Emacs 23.1和23.2
  • Python 2.4.6
  • Pyflakes 0.4.0(通过easy_install)

python emacs tramp flymake pyflakes

17
推荐指数
2
解决办法
1640
查看次数

如何隐藏emacs创建的备份文件?

我在很长一段时间内使用了vi后才开始使用emacs.:)

令我烦恼的一件事是,无论何时我修改文件,保存并退出emacs,我都会看到在同一目录中创建的备份文件filename~(如果我编辑的文件是filename).

有什么方法可以摆脱这个吗?或隐藏这些文件?当我执行目录时,看到大量的备份文件是非常烦人的.

emacs

15
推荐指数
2
解决办法
6437
查看次数

Emacs ruby​​-mode缩进行为

class Foo
  attr_accessor :a,
                :time, # ms since epoch
                :b,
                :c
end

在文本模式中,'a'之后列出的变量将如上所述缩进,但在ruby模式下,它们将与'attr_accessor'齐平.在这种情况下,如何让ruby模式像文本模式一样缩进?请注意,除了所有其他ruby-mode.el缩进规则之外,我还希望能够选择整个文件并点击cm- \以获得上述缩进.

ruby emacs indentation

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

为所有命令制作git输出完整(非缩写)哈希值?

问题更新

(我已经接受了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 blamegit-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和修复 …

git

14
推荐指数
1
解决办法
817
查看次数

如何在Windows + NTEmacs下使用ediff?

我在Windows上有Emacs版本23,似乎ediff缺少可执行文件?

我可以在哪里下载ediffWindows上的Emacs?

windows emacs emacs-ediff

13
推荐指数
2
解决办法
9035
查看次数

Emacs - 如何找到键绑定的命令名称(用于调用Mx <command>)?

在Emacs中,命令的名称是:

  • 缩进缓冲区内的所有内容(根据您使用的语言)(相当于选择所有缓冲区并按Tab键)

  • 移动"段落"(相当于ctrl-up和ctrl-down)

  • 逐字移动(相当于ctrl-right和ctrl-left)

事实上,我转向一个专业存储的macbook,这些功能是不可能的,因为在ctrl +上绑定了操作系统快捷方式...

我已经尝试在谷歌上找到这个但没有结果.我将在.emacs中为这些函数分配新的绑定.

emacs keyboard-shortcuts

13
推荐指数
1
解决办法
4554
查看次数

仅打印文本丢弃文本属性

我有以下函数来打印指向*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 elisp

12
推荐指数
2
解决办法
1936
查看次数

Emacs Lisp:如何避免插入重复的列表项?

如何检查字符串是否已经存在于Emacs Lisp的列表中?我需要检查某个路径字符串是否已经在exec-path中,然后将其添加到该列表中(如果不是).谢谢!

emacs elisp

11
推荐指数
1
解决办法
1357
查看次数

如何在任意点退出函数,在elisp中

这是一个简单的问题,但不知何故,我无法通过谷歌搜索找到答案:

如果不满足某些条件,如何在任意执行点退出函数.例如(我在这里使用"(exit)"代替):

(defun foo ()
  (progn (if (/= a1 a2)
             (exit) ; if a1!=a2, exit the function somehow
           t)
         (blahblah...)))
Run Code Online (Sandbox Code Playgroud)

emacs elisp function exit

10
推荐指数
3
解决办法
2995
查看次数

Emacs在当前窗口中打开另一个shell

一个小问题一直困扰着我与emacs

在缓冲区中打开shell时,我会:

M-x shell

到现在为止还挺好

但是如果我想打开另一个shell,我会切换到另一个缓冲区并:

C-u M-x shell

但这总是在另一个窗口打开 - 而不是我目前所在的窗口

这有点烦人有谁知道如何解决它?

编辑

我应该补充一点,我在多个分割窗口中打开了多个缓冲区,例如我的框架分为3个部分 - 我想要的是在当前具有焦点的同一部分中打开的新shell,即我输入的那个和不是替代的

我想当我这样做时会发生C-u M-x shell新的shell缓冲区在下一个窗口中打开,即如果你点击就会转移到那个窗口C-x o.我希望它在同一个窗口中打开

emacs shell

9
推荐指数
1
解决办法
2155
查看次数