Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/emacs/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
启动emacs文件夹视图时,右对齐_Emacs_Elisp - Fatal编程技术网

启动emacs文件夹视图时,右对齐

启动emacs文件夹视图时,右对齐,emacs,elisp,Emacs,Elisp,我的.emacs中有以下内容: (set-face-font 'default "-*-Interface User-Medium-R-*-*-13-120-*-*-*-*-*-*") ;; Set default height/width (add-to-list 'default-frame-alist '(width . 180)) (add-to-list 'default-frame-alist '(height . 70)) (if (file-exists-p

我的.emacs中有以下内容:

  (set-face-font 'default "-*-Interface User-Medium-R-*-*-13-120-*-*-*-*-*-*")
  ;; Set default height/width
  (add-to-list 'default-frame-alist '(width . 180))
  (add-to-list 'default-frame-alist '(height . 70))
  (if (file-exists-p "./headers") (find-file "./headers"))
  ;; Split window
  (split-window-horizontally)
  (if (file-exists-p "../source") (find-file "../source"))
使用emacs 23,文件夹可以并排左对齐查看。 但是,在emacs 24上运行时,文件夹是右对齐的,我需要添加:

(beginning-of-line)
每次之后(如果……)


原因是什么?

鉴于您对计时的评论,我的直接怀疑是,基于相关代码恰好位于.emacs中的位置,它在初始化代码的其他部分之前运行,这对于使dired缓冲区按您期望的方式运行至关重要。对于这种情况,Emacs提供after init hook,即初始化完成后立即执行的函数列表。下面是如何利用它来确保在初始化所有内容之前不会创建dired缓冲区:

(add-hook 'after-init-hook
          ;; since this is the only place we'll use this code, there's no point
          ;; cluttering the namespace with a defun, hence wrapping it in a lambda
          #'(lambda ()
              ;; Create dired buffer on ./headers
              (if (file-exists-p "./headers") (find-file "./headers"))
              ;; Split window
              (split-window-horizontally)
              ;; Create dired buffer on ../source
              (if (file-exists-p "../source") (find-file "../source"))))

如果您将其替换为问题中.emacs代码段的最后四行,它可能会解决问题。

FIND-FILE和directory参数会调用目录上的Dired,但我不知道为什么Dired缓冲区会正确对齐。我假设“右对齐”是指线条与右侧窗口边框齐平,而不是与左侧对齐;实际上,我不知道如何使Dired缓冲区看起来像那样,所以我不确定我是否理解这个问题。你能给你的问题添加一个你看到的屏幕截图吗?亚伦,谢谢你的回答。奇怪的是,如果我在打开emacs之后执行这些步骤,那么就不会有问题,也就是说,如果我正常打开emacs,查找文件/标题,然后拆分屏幕,查找文件/源,它们就不会正确。当我在.emacs文件中包含这些步骤时,事情就会变得很糟糕。这是一个截图:哇,真奇怪。考虑到您对计时的评论,我的直接怀疑是,基于相关代码恰好在.emacs中的位置,它在初始化代码的其他部分之前运行,这对于使dired缓冲区按您期望的方式运行至关重要。对于这样的情况,Emacs提供了init hook之后的
,初始化完成后立即执行的函数列表;我将发布一个答案,并举例说明如何将其应用于您的案例中。谢谢您的帮助。不幸的是,这没有帮助。我尝试将代码与after init hook一起放在.emacs文件的末尾。但我还是看到了正确的解释。