我在Emacs中有一个异步进程,它创建了一个TAGS文件.
此过程创建一个名为*ctags*的进程缓冲区.如果处理结果是"完成\n",我会杀死缓冲区.
如果进程结果是其他任何我想在运行Mx编译时显示类似于*compilation*status输出的进程缓冲区.
即我想垂直分割屏幕并在底部显示*ctags*缓冲区.按q最好杀死底部缓冲区并显示我的原始缓冲区.
我尝试在我的进程中使用这个Sentinel回调:
(split-window-vertically) (set-window-buffer (selected-window) (get-buffer "*ctags*"))
但除了将*ctags*缓冲区置于顶部之外,缓冲区与*compilation*输出不具有相同的特性,例如按q插入q.
如何创建像*compilation*这样的缓冲区?
编辑:
受到Trey Jackson在下面的回答的启发,这正是我想要的:
(pop-to-buffer (get-buffer "*ctags*")) (compilation-mode)
它选择*ctags*缓冲区,将其置于编译模式,q将退出窗口.
EDIT2: 使用
(compilation-mode)(主要模式而不是次要模式)因为Emacs不知道不喜欢将次要模式重新应用到现有缓冲区.
我得到的错误消息是:
Toggling compilation-minor-mode off; better pass explicit argument.
我在Emacs 23中使用ido模式进行文件和缓冲区切换.
如果目录中有多行文件,则以下选项允许调整迷你缓冲区的大小:
(setq resize-mini-windows t) ; grow and shrink as necessary
(setq max-mini-window-height 3) ; grow up to max of 3 lines
Run Code Online (Sandbox Code Playgroud)
但是,这仅在默认情况下未启用行截断时才起作用(全局):
(setq-default truncate-lines t) ; Truncate, do not wrap lines
Run Code Online (Sandbox Code Playgroud)
我喜欢我的主编辑窗口的这个选项,但这也覆盖了上面的功能,以显示迷你缓冲区中的多行.迷你缓冲区中的线被截断,也没有被包裹.
有没有办法为主编辑窗口启用行截断,只在迷你缓冲区中禁用它?
可以根据使用opendir()函数获得的目录流中的条目顺序进行任何假设吗?例如,是.和..总前两个项目?什么会导致订单改变?
是否可以在OpenGL中增加属性堆栈深度?
glGetIntegerv(GL_MAX_ATTRIB_STACK_DEPTH, &depth);
Run Code Online (Sandbox Code Playgroud)
将深度返回为16.我可以更改GL_MAX_STACK_DEPTH为例如32吗?
我正在使用基于Python的HTML解析器并解析Stackoverflow.解析器突然出现在一条线上
HTMLParser.HTMLParseError: bad end tag: "</'+'scr'+'ipt>", at line 649, column 29
Run Code Online (Sandbox Code Playgroud)
该错误指向网站源代码中的以下javascript行:
<script type="text/javascript">
document.write('<s'+'cript lang' + 'uage="jav' + 'ascript" src=" [...] ">');
document.write('</'+'scr'+'ipt>');
</script>
Run Code Online (Sandbox Code Playgroud)
([...]替换长链接,为简单起见,将其删除)
出于好奇,是否有一个特定的原因让我看起来像代码的人工"混淆",即为什么使用document.write方法连接所有切碎的字符串?