gpt4 book ai didi

Emacs:获取 new-frame 和 emacsclient -c 以使用设置的帧大小?

转载 作者:行者123 更新时间:2023-12-04 12:23:36 24 4
gpt4 key购买 nike

我是 StackOverflow 的新手,我有一个问题,这个问题几乎是我在掌握 Emacs 的过程中唯一让我烦恼的事情。

我配置了我的.emacs文件将 Emacs 的默认帧大小设置为 70 行和 80 列,如下所示:

(add-to-list 'default-frame-alist '(left . 0))
(add-to-list 'default-frame-alist '(top . 0))
(add-to-list 'default-frame-alist '(height . 70))
(add-to-list 'default-frame-alist '(width . 80))

这在启动 Emacs 时工作正常,问题是当我使用 new-frame 启动新框架时或 emacsclient -c这些设置不受尊重。有没有办法强制 emacsclientnew-frame读取 .emacs 中的设置执行时的文件?

编辑:

这是我的 .emacs文件:
;;This setting is meant to force emacs to read size settings before make-frame.

(add-hook 'before-make-frame-hook
#'(lambda ()
(add-to-list 'default-frame-alist '(left . 0))
(add-to-list 'default-frame-alist '(top . 0))
(add-to-list 'default-frame-alist '(height . 70))
(add-to-list 'default-frame-alist '(width . 80))))

;;disable annoying welcome screen.
(setq inhibit-splash-screen t)
(setq inferior-lisp-program "/usr/bin/abcl")
(add-to-list 'load-path "/usr/share/emacs/site-lisp/slime/")
(require 'slime)
(slime-setup)

(add-to-list 'auto-mode-alist '("\\.lisp$" . lisp-mode))
(add-to-list 'auto-mode-alist '("\\.cl$" . lisp-mode))
(add-to-list 'auto-mode-alist '("\\.asd$" . lisp-mode))
(require 'slime)
(slime-setup)
(eval-after-load "slime"
'(progn
(setq slime-complete-symbol*-fancy t
slime-complete-symbol-function 'slime-fuzzy-complete-symbol
slime-when-complete-filename-expand t
slime-truncate-lines nil
slime-autodoc-use-multiline-p t)
(slime-setup '(slime-fancy slime-asdf))
(define-key slime-repl-mode-map (kbd "C-c ;")
'slime-insert-balanced-comments)
(define-key slime-repl-mode-map (kbd "C-c M-;")
'slime-remove-balanced-comments)
(define-key slime-mode-map (kbd "C-c ;")
'slime-insert-balanced-comments)
(define-key slime-mode-map (kbd "C-c M-;")
'slime-remove-balanced-comments)
(define-key slime-mode-map (kbd "RET") 'newline-and-indent)
(define-key slime-mode-map (kbd "C-j") 'newline)))

(add-to-list 'default-frame-alist '(left . 0))
(add-to-list 'default-frame-alist '(top . 0))
(add-to-list 'default-frame-alist '(height . 70))
(add-to-list 'default-frame-alist '(width . 80))

(normal-erase-is-backspace-mode 0)
(tool-bar-mode -1) ;;method for disabling changed in 24. can not nil, most negative
(scroll-bar-mode -1)

;;for loading cedet.
(load-file "/usr/share/emacs/site-lisp/cedet/common/cedet.el")

最佳答案

您可以尝试将以下钩子(Hook)添加到您的 Emacs 启动文件(通常为 ~/.emacs ),即:

(add-hook 'before-make-frame-hook
#'(lambda ()
(add-to-list 'default-frame-alist '(left . 0))
(add-to-list 'default-frame-alist '(top . 0))
(add-to-list 'default-frame-alist '(height . 70))
(add-to-list 'default-frame-alist '(width . 80))))

或者,如果您想重新加载整个 .emacs文件:
(add-hook 'before-make-frame-hook #'(lambda () (load-file "~/.emacs")))

前一个钩子(Hook)几乎肯定更可取,因为重新加载整个 .emacs文件可能不仅不必要且浪费资源,而且有可能导致错误或奇怪的行为(取决于文件的内容)。

详细地说,钩子(Hook)是定义在 Emacs session 中发生特定事件时执行的命令列表的变量,例如,加载主要编辑模式,或者在这种情况下,创建新框架。见相关 Emacs manual page on hooks了解更多信息。一般来说,如果您希望每次在 Emacs 中发生特定事件时都执行某个函数,那么将所述函数添加到正确的预先存在的钩子(Hook)中可能是最好的方法。

关于Emacs:获取 new-frame 和 emacsclient -c 以使用设置的帧大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11007337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com