我的配置文件一部分生效一部分不生效,感觉很奇怪但找不到原因


#1

我在windows用的emacs,配置文件路为"C:\Users\Administrator\AppData\Roaming.emacs.d\init.el",最近我发现我对字体、字符编码等的修改可以在重新启动时加载配置,但对背景色、前景色的修改必须手动load-file或打开init.el文件后eval-buffer才能生效。之前有过配置文件加载失败的情况,我后来找帖子用debug启动找到问题并解决了,也就是说现在文件加载不报错,但对背景色配置需要手动加载才能生效。 PS:未必要给我直接的答案,告诉我那个地方有关于配置文件的原理也可以,之所以这么问是因为我很难在大量的文档中找到我要的部分。

;;------------------------语言环境字符集设置(utf-8)---------------------
;;这一部分用在Linux环境下,Windows下没什么作用

(set-language-environment 'Chinese-GB)
(set-keyboard-coding-system 'utf-8)
(set-clipboard-coding-system 'euc-cn)
;;根据操作系统中剪贴板的编码格式而定,否则会乱码,以上是根据Windows
(set-terminal-coding-system 'utf-8)
(set-buffer-file-coding-system 'utf-8)
(set-default-coding-systems 'utf-8)
(setq default-buffer-coding-system 'utf-8)
;;(set-selection-coding-system 'utf-8)
(modify-coding-system-alist 'process "*" 'utf-8)
(setq default-process-coding-system '(utf-8 . utf-8))
(setq-default pathname-coding-system 'utf-8)
(set-file-name-coding-system 'utf-8)
(setq ansi-color-for-comint-mode t);;处理shell-mode乱码,好像没作用

;;------------------------语言环境字符集设置结束-------------------------

;;---------------------------窗口界面设置-----------------------------
;;设置色彩
(set-foreground-color "black")
(set-background-color "#afebb0")
(set-cursor-color "silver pink")
(set-mouse-color "seashell")

;;关闭工具栏,tool-bar-mode 即为一个Minor Mode
(tool-bar-mode -1)

;;关闭文件滑动控件
(set-scroll-bar-mode nil)

;;minibuffer显示行列号
(setq column-number-mode t)
(setq line-number-mode t)

;;侧边显示行号
(global-linum-mode t)

;;关闭启动帮助画面
(setq inhibit-splash-screen t)

;;关闭emacs启动时的画面
(setq inhibit-startup-message t)

;;关闭gnus启动时的画面
(setq gnus-inhibit-startup-message t)

;;把fill-column设为60,这样的文字更好读
(setq-default auto-fill-function 'do-auto-fill)
					;Autofill in all modes;;
(setq default-fill-column 120)

;;在标题栏显示buffer的名字,而不是emacs@username这样没用的提示
(setq frame-title-format "emacs@%b")

;;让emacs可以直接打开和显示图片
(setq auto-image-file-mode t)

;;高亮当前行
(global-hl-line-mode t)


;;启动设置
(setq default-frame-alist
      '((vertical-scroll-bars)
	(top . 25)
	(left . 45)
	(width . 120)
	(height . 40)
	(background-color . "black")
	(foreground-color . "grey")
	(cursor-color . "gold1")
	(mouse-color . "gold1")
	(tool-bar-lines . 0)
	(menu-bar-lines . 1)
	(right-fringe)
	(left-fringe)))

;;启动自动最大化(数据自己调整,注意格式,如(top . 0),圆点前后都要留有空格)
(setq initial-frame-alist '((top . 0) (left . 0) (width . 71) (height . 35)))

;;设置另外一些颜色:语法高亮显示的背景和主题,区域选择的背景和主题,二次选择的背景和选择
;;(set-face-foreground 'highlight "balck")
;;(set-face-background 'highlight "white")
;;(Set-face-foreground 'region "black")
;;(set-face-background 'region "white")
;;(set-face-foreground 'secondary-selectio n "skyblue")
;;(set-face-background 'secondary-selection "darkblue")

;;-------------------------窗口界面设置结束-----------------------------

;;---------------------------字体设置---------------------------------

;;使用M-x describe-font查看当前字体
;;设置英文字体
(set-face-attribute
	  'default nil :font "DejaVu Sans Mono 11")
;;设置中文字体
(dolist (charset '(kana han symbol cjk-misc bopomofo))
  (set-fontset-font (frame-parameter nil 'font)
		    charset
		    (font-spec :family "华康瘦金体W3" :size 21)))
;;你可以将思源宋体换成其他字体的名字,如:"Microsoft YaHei"
;;设置特定标点符号的字体,不分操作系统
;;(set-fontset-font "Courier New" ?; "symbol")
;;-------------------------字体设置结束--------------------------------

;;-------------------------显示时间设置--------------------------------

(display-time-mode t);;启用时间显示设置,在minibuffer上面的那个杠上
(setq display-time-24hr-format t);;时间使用24小时制
(setq display-time-day-and-date t);;时间显示日期和具体时间
(setq display-time-use-mail-icon t);;时间栏旁边启用邮件设置
(setq display-time-interval 10);;时间的变化频率,单位多少来着?

;;-------------------------显示时间设置结束-----------------------------

;;----------------------------定制操作习惯-----------------------------

;;设置打开文件的缺省路径
(setq default-directory "~/")

;;光标靠近鼠标指针时,让鼠标指针自动让开,别挡着视线
(mouse-avoidance-mode 'animate)

;;打开括号匹配显示模式
(show-paren-mode t)

;;括号匹配是可以高亮另外一边的括号,但光标不会烦人的跳到另一个括号处
(setq show-paren-style 'parenthesis)

;;关闭烦人的出错时的提示声
(setq visible-bell t)

;;改变emacs固执的要你回答yes的行为。按y或空格键表示yes,n表示no
(fset 'yes-or-no-p 'y-or-n-p)

;;自动补全括号
(electric-pair-mode t);;关闭系统自带的括号自动补全
(defun my-c-mode-auto-pair ()
  (interactive)
  (make-local-variable 'skeleton-pair-alist)
  (setq skeleton-pair-alist '(
			      (?\' _ "'" >)
			      (?\( _ ")" >)
			      (?\[ _ "]" >)
			      (?{ \n > _ \n ?} >)
			      ))
  (setq skeleton-pair t)
  (global-set-key (kbd "(") 'skeleton-pair-insert-maybe)
  (global-set-key (kbd "{") 'skeleton-pair-insert-maybe)
  (global-set-key (kbd "\'") 'skeleton-pair-insert-maybe)
  (global-set-key (kbd "[") 'skeleton-pair-insert-maybe))
(add-hook 'c-mode-hook 'my-c-mode-auto-pair)
(add-hook 'c++-mode-hook 'my-c-mode-auto-pair)
(add-hook 'org-mode-hook 'my-c-mode-auto-pair)
(add-hook 'emacs-lisp-mode-hook 'my-c-mode-auto-pair)
;;输入左边的括号,就会自动补全右边的部分,包括(),"",[],{},等等。

;;禁止emacs自动生成备份文件
(setq make-backup-files nil)

;;替换选中的文字
(delete-selection-mode nil)

(put 'scroll-left' 'disabled nil);;允许屏幕左移
(put 'scroll-right' 'disabled nil);;允许屏幕右移
;;"C-,"设为屏幕左移命令
(global-set-key (kbd "C-,") 'scroll-left)
;;"C-."设为屏幕右移命令
(global-set-key (kbd "C-.") 'scroll-right)

;;将文件模式和文件后缀名关联
(setq auto-mode-alist
      (append '(("\\.js\\'" . js2-mode)
		("\\`/tmp/fol/" . text-mode)
		("\\.textinfo\\'f" . textinfo-mode)
		("\\.texi\\'" . textinfo-mode)
		("\\.el\\'" . emacs-lisp-mode)
		("\\.c\\'" . c-mode)
		("\\.h\\'" . c-mode)
		("\\.py\\'" . python-mode)
		("\\.s?html?\\'" . html-helper-mode)
		("\\.asp\\'" . html-helper-mode)
		("\\.pthml\\'" . html-helper-mode)
		("\\.css\\'" . css-mode)
		)
	      auto-mode-alist))

;;允许emacs和外部其他程序的粘贴
(setq x-select-enable-clipboard t)
;;--------------------加载运行语言开始----------------------
(org-babel-do-load-languages
 'org-babel-load-languages'(
			    (shell . t)
			    (python . t)
			    (R . t)
			    (ruby . t)
			    (ditaa . t)
			    (dot . t)
			    (octave . t)
			    (sqlite . t)
			    (perl . t)
			    (C . t)
			    ))
(put 'downcase-region 'disabled nil)

#2

你不给自己有问题的配置文件的话没有人能知道是什么情况。另:如果用emacsclient并且用emacs --daemon启动第一个emacs的话,有些跟外观相关的配置会有奇怪的问题。


#3

windows下的emacsclient要用add-hook 'after-make-frame-functions 来配置字体

https://gist.github.com/exaos/4493582