UP | HOME

emacs-配置文件

1 load,load-file

1.1 加载文件,在.emacs中加载默认的文件

(load "~/.emacs.d/loadfile/xxx.el ")

1.2 加载插件,在.emacs中指定插件文件夹,然后加载

1. (add-to-list 'load-path "~/.emacs.d/lisp/")
   (require '***-***)

2. 想要被加载,插件的.el文件最后一定要proide
   (provide '***-***)

1.3 关于这些加载项目的差别可以在这个网站查看

2 配置文件不用重启就起效

  1. 打开 .emacs 文件 C-x C-e 光标前面的运行一条语句 立即生效
  2. 选择一个 region

    M-x eval-region
    M-x load-file ~/.emacs
    M-x eval-buffer
    
  3. 都是立即生效,可以马上试验一条语句的效果

    (setq frame-title-format "emacs@%b") 
    

3 我的配置文件

;; -*- coding: utf-8; lexical-binding: t -*-
;;pengshao's ~/.emacs.d/init.el
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun open-init-file()
  (interactive)
  (find-file "~/.emacs.d/init.el"))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;自己的一些小的配置
(add-to-list 'load-path "~/.emacs.d/loadfile/")

(require 'pengshao-org-mode)
(global-set-key "\C-cl" 'org-store-link)
(global-set-key "\C-cc" 'org-capture)
(global-set-key "\C-ca" 'org-agenda)
(global-set-key "\C-cb" 'org-iswitchb)

(require 'pengshao-org-publish)
;;在pengshao-org-publish.el文件当中设置了
;;(define-key global-map "\C-cp" 'org-publish)


(require 'pengshao-calendar)

(require 'pengshao-default)

(require 'pengshao-backup)

(require 'pengshao-insert-date)

(require 'pengshao-copy-cut-paste-killring)

;;cua-rectangle-mark-mode的快捷键
(global-set-key (kbd "C-c n") 'cua-rectangle-mark-mode)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;加载别的插件


(add-to-list 'load-path "~/.emacs.d/lisp/")

(require 'color-theme)
(color-theme-initialize)
(color-theme-snow)

(require 'iimage)

(require 'tabbar)
(tabbar-mode)
;;切换buffer
;;prior就是上翻页pg up,next就是pg dn键盘
;(global-set-key [C-prior] 'previous-buffer)
;(global-set-key [C-next] 'next-buffer)

;;Win更换tabbar不错吧,前两个是在不同的分组切换,后面的是在同组切换
(global-set-key [s-up] 'tabbar-backward-group)
(global-set-key [s-down] 'tabbar-backward-group)
(global-set-key [s-left] 'tabbar-backward-tab)
(global-set-key [s-right] 'tabbar-forward-tab)


(require 'htmlize)

(require 'word-like-count-mode)
(global-set-key "\C-xw" 'word-like-count-mode)

(require 'browse-kill-ring)
(global-set-key (kbd "C-c k") 'browse-kill-ring)


(require 'auto-complete)
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "~/.emacs.d/lisp/ac-dict/")
(ac-config-default)
(define-key ac-mode-map (kbd "C-c q") 'auto-complete)



(require 'youdao-dictionary)
;; Enable Cache
(setq url-automatic-caching t)
;; Example Key binding
(global-set-key (kbd "C-c y") 'youdao-dictionary-search-at-point)
;; Integrate with popwin-el (https://github.com/m2ym/popwin-el)
;; (push "*Youdao Dictionary*" popwin:special-display-config)
;; Set file path for saving search history
(setq youdao-dictionary-search-history-file "~/.emacs.d/.youdao")
;; Enable Chinese word segmentation support (支持中文分词)
;; (setq youdao-dictionary-use-chinese-word-segmentation t)


(require 'sr-speedbar)
(setq sr-speedbar-right-side nil)     ;;左侧显示
(setq sr-speedbar-width 25)          ;;宽度
(setq speedbar-directory-unshown-regexp "^\(\.\.*$\)\'")       ;;显示.的头文件
(setq sr-speedbar-skip-other-window-p t)            ;;窗口跳转跳过sr-speedbar
;;设置快捷键
(global-set-key [f5] 'sr-speedbar-select-window)
(global-set-key (kbd "C-c s") 'sr-speedbar-open)
(global-set-key (kbd "C-c x") 'sr-speedbar-close)

;;自动打开sr-speedbar
;;不知道为什么太不好用了,每次都多打开一个窗格,所以忽略了,
;;(sr-speedbar-open)

;;开机默认启动speedbar,不用了,现在用sr-speedbar了
;;(speedbar 1)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;键盘配置放在最后,只要是配置了F1-F10,和Home/End键,所有自己配置的都在init.el了,方便查找

(require 'pengshao-key-building)

4 默认的一些配置

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; -*- coding: utf-8; lexical-binding: t -*-
;;pengshao-default.el---默认一小些配置
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;; 时间戳使用英文星期
(setq system-time-locale "C")


;; 编码选用 UTF-8
(prefer-coding-system 'utf-8)
(set-default-coding-systems 'utf-8)
(setq default-buffer-file-coding-system 'utf-8)


;;关闭起动时的那个“开机画面” 
(setq inhibit-startup-message t)

;;(split-window-below)   ;; 横向分屏
;;(split-window-right)   ;; 纵向分屏


;;设置启动时候窗口大小
(setq default-frame-alist
'((height . 30) (width . 100) (menu-bar-lines . 0) (tool-bar-lines . 0)))


;在标题栏提示你目前在什么位置
;(setq frame-title-format "pengshao@%n%b")



;; buffer name (if the buffer isn't visiting a file)
(setq frame-title-format
      '("" " 上马提枪, 去干他娘 - "
        (:eval (if (buffer-file-name)
                   (abbreviate-file-name (buffer-file-name)) "%b"))))

;语法高亮
(global-font-lock-mode t)

;打开图片显示功能
(auto-image-file-mode t)


;显示列号,显示行号码
(column-number-mode t)
(global-linum-mode t)

;显示括号匹配
(show-paren-mode t)
(setq show-paren-style 'parentheses)

;自动添加括号
(electric-pair-mode t)


;显示时间,格式如下
(display-time-mode 1)
(setq display-time-24hr-format t)
(setq display-time-day-and-date t)

;去掉那个大大的工具栏
;;(tool-bar-mode nil)

;去掉滚动条
;;(scroll-bar-mode nil)

;支持emacs和外部程序的粘贴
(setq x-select-enable-clipboard t)

;默认显示 80列就换行
(setq default-fill-column 80)

;一打开就起用 text 模式。
;(setq default-major-mode 'text-mode)








(provide 'pengshao-default)

5 org-mode相关的两个配置

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; -*- coding: utf-8; lexical-binding: t -*-
;;pengshao-org-mode.el---orgmode相关的配置
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;我的编码设置
(prefer-coding-system 'utf-8)
(set-default-coding-systems 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(setq default-buffer-file-coding-system 'utf-8)


;;org-mode语法高亮
(setq org-src-fontify-natively t)


;;保证后缀为'.org'的文件会使用Org mode
(add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))



;;如果不想在全局范围使用font-lock,可以用下面一句配置来只在Org-mode下打开font-lock选项
;;(add-hook 'org-mode-hook 'turn-on-font-lock) 

;;设置默认的agenda文件,的todo的全局文件可以添加在这里
(setq org-agenda-files
      (list "~/psnote_public/idear/idear-list.org"
            ))

;;每次新建todo和做完都要添加时间
;(setq org-log-todo 'time)
;(setq org-log-done 'time)

;;默认的org-notesfile
(setq org-default-notes-file "~/psnote_public/idear/idear-list.org")


;;设置org-mode的启动显示选项,#+STARTUP: overview : content : showall : showeverything :
(setq org-startup-folded 'content)

;; prevent editing an invisible part of the buffer防止编辑缓冲区不可见部分
(setq org-catch-invisible-edits nil) 


;;为org-mode添加自动换行功能
(add-hook 'org-mode-hook (lambda () (setq truncate-lines nil)))

;;为org-mode的(setq org-startup-indented t)缩进星号
(setq org-startup-indented t)

;; 设置 bullet list
;;(setq org-bullets-bullet-list '("☰" "☷" "☯" "☭"))

;定义多组状态序列,每个“#+SEQ_TODO”行定义一组
(setq org-todo-keywords
 '((sequence "TODO(T!)" "DOING(H!)"  "|" "DONE(D!)" "CANCELED(C@/!)")

   ))


;; org-todo-keyword-faces
(setq org-todo-keyword-faces
      '(
        ("TODO"      . (:foreground "#FF0033" :background "#FFFF33"  :weight bold))
        ("CANCELED"  . (:foreground "yellow" :background "#2E8B57"  :weight bold))
        ("DOING"     . (:foreground "#990066" :background "#00FF00"  :weight bold))
        ))


;;'org-tag-faces'
(setf org-tag-faces
      '(
        ("上班" . (:foreground "black" :background "#95A5A6"   :weight bold))
        ("休班" . (:foreground "red" :background "#2E8B57"  :weight bold))
        ("加班" . (:foreground "white" :background "#3498DB" :weight bold))
        ))



;; 折叠时不再显示「...」, 换个你喜欢的符号
(setq org-ellipsis "▼")



(provide 'pengshao-org-mode)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; -*- coding: utf-8; lexical-binding: t -*-
;;pengshao-org-publish.el---org-publish相关的配置
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(require 'ox-publish)
(setq org-publish-project-alist
      '(
         ("psnote-org"
             :base-directory "~/public_note/"
             :base-extension "org"
             :publishing-directory "~/public_site/"
             :recursive t     ;是否递归
             :publishing-function org-html-publish-to-html  ;使用哪个函数来进行publish(注:org 7与8在这个地方有区别)
             :headline-levels 2   ;由于大纲结构也用于列表和任务,因此只有前4个级别用作标题更深的级别会被看作项目列表,我设置的2
             :auto-preamble t     ;自动前言
             :section-numbers t ;章节数字是否显示
             :author "pengshao"   ;作者
             :email "pengshao58@gmail.com"   ;邮箱
             :auto-sitemap t                  ; 自动生成 sitemap.org 文件
             :sitemap-filename "sitemap.org"  ; ... call it sitemap.org (it's the default)...
             :sitemap-title "PengShao's BLOG!"         ; ... with title
             ;;:sitemap-file-entry-format "%d %t"   ;这里采用时间+标题的方式生成sitemap 
             :style-include-default nil  ;禁用默认 css 样式,使用自定义css

             ;作为一个字符串给予 html-head 变量并插入到生成的 html 文件的head部
             ;因此里面的某些字符必须避免转义,比如双引号必须加上反斜杠
             ;href 的赋值不会做如何转换,因此必须确保是在生成的 html 文件能够访问的绝对路径。
             ;html-home/up-format"<div id=\"org-div-home-and-up\"> <a accesskey=\"h\" href=\"/home/index.html\"> UP </a> | <a accesskey=\"H\" href=\"/home/index.html\"> HOME </a></div>"
             ;html-head "<link rel=\"stylesheet\" type=\"text/css\" href=\"/home/css/org.css\"/>"
             :html-postamble "<script async src=\"https://www.googletagmanager.com/gtag/js?id=UA-164487790-1\"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-164487790-1'); </script>"

         )



         ("psnote-static"
             :base-directory "~/public_note/"
             :base-extension "css\\|js\\|png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg\\|swf\\|sh\\|el\\|jpeg\\|html"
             :publishing-directory "~/public_site/"
             :recursive t
             :publishing-function org-publish-attachment
          )


         ("psnote" :components ("psnote-org" "psnote-static"))


        ))


(define-key global-map "\C-cp" 'org-publish)




(provide 'pengshao-org-publish)

6 我比较喜欢些东西加入日期

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; -*- coding: utf-8; lexical-binding: t -*-
;;pengshao-einsrt-date.el---插入时间格式相关的配置
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(defun my-insert-time ()
  (interactive)
  (insert (format-time-string "<%Y-%m-%d/%A %H:%M:%S>" (current-time))))

(global-set-key (kbd "C-c m t") 'my-insert-time)



(defun my-insert-date ()
  (interactive)
  (insert (format-time-string "<%Y-%m-%d-%j/%A>" (current-time))))

(global-set-key (kbd "C-c m d") 'my-insert-date)



(defun my-insert-month ()
  (interactive)
  (insert (format-time-string "<%Y-%B>" (current-time))))

(global-set-key (kbd "C-c m m") 'my-insert-month)


;;插入今年的时间进度条
(defun make-progress (width percent has-number?)
  (let* ((done (/ percent 100.0))
         (done-width (floor (* width done))))
    (concat
     "["
     (make-string done-width ?/)
     (make-string (- width done-width) ? )
     "]"
     (if has-number? (concat " " (number-to-string percent) "%"))
     )))

(defun insert-day-progress ()
  (interactive)
  (let* ((today (time-to-day-in-year (current-time)))
         (percent (floor (* 100 (/ today 365.0)))))
    (insert (make-progress 30 percent t))
    ))

(global-set-key (kbd "C-c m y") 'insert-day-progress)

(add-to-list 'org-src-lang-modes '("plantuml" . plantuml))



(provide 'pengshao-insert-date)

7 关于复制粘帖的一些设置

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; -*- coding: utf-8; lexical-binding: t -*-
;;pengshao-copy-cut-paste-killring.el---复制粘帖相关配置
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;不向kill-ring中加入重复内容
(setq kill-do-not-save-duplicates t)

;支持中键粘贴
(setq mouse-yank-at-point t)

;;增大kill-ring-max
(setq kill-ring-max 200)


;;; 关于没有选中区域,则默认为选中整行的advice
;;;;默认情况下M-w复制一个区域,但是如果没有区域被选中,则复制当前行
(defadvice kill-ring-save (before slickcopy activate compile)
  "When called interactively with no active region, copy a single line instead."
  (interactive
   (if mark-active (list (region-beginning) (region-end))
     (message "welldone,copy this line")
     (list (line-beginning-position)
           (line-beginning-position 2)))))




(provide 'pengshao-copy-cut-paste-killring)

8 我的键配置(主要是f1-f10)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; -*- coding: utf-8; lexical-binding: t -*-
;; pengshao-key-building.el --- 全局键盘绑定设置
;; 最好放在加载文件的最后,防止被覆盖
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;



;;习惯设置,Home键设定光标到文件开头
(global-set-key [(home)] 'beginning-of-buffer)
;;习惯设置,End键设定光标到文件结尾
(global-set-key [(end)] 'end-of-buffer)


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;F1到F10

;;F1,打开帮助,常用帮助有info和woman(就是在emacs中看man)
(global-set-key [f1] 'info)

;;F2,恢复,
(global-set-key [f2] 'undo)

;;F3,反恢复,
;(global-set-key [f3] 'redo)

;;F3,快速打开配置文件
(global-set-key [f3] 'open-init-file)


;;F4,kill当前buffer
(global-set-key [f4] 'kill-this-buffer)

;;F5,speedbar,在init.el设置了
;;(global-set-key [f5] 'sr-speedbar-select-window)
;;(global-set-key (kbd "C-c s") 'sr-speedbar-open)
;;(global-set-key (kbd "C-c x") 'sr-speedbar-close)

;;F6,dired
(global-set-key [f6] 'dired)

;;F7,eshell,shell,terminal-emulator
(global-set-key [f7] 'shell)

;;;F8,list-bookmarks
(global-set-key [f8] 'list-bookmarks)

;;;F9,bookmark-set
(global-set-key [f9] 'bookmark-set)

;;看新闻组,常用的很,不过更多时间现在sir里
;;(global-set-key [f9] 'gnus)

;;F10,打开/关闭菜单
(global-set-key [f10] 'menu-bar-mode)

;;编译等,暂时还不常用的设置
;;(global-set-key [f11] 'compile)
;;(global-set-key [f12] 'todo-show)
;;(global-set-key [f12] 'gdb)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;






(provide 'pengshao-key-building)

9 日期的配置(没用到也没有测试)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; -*- coding: utf-8; lexical-binding: t -*-
;;pengshao-calendar.el---calendar相关配置(一直没有调试)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;; 设置日历 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;设置日历的一些颜色
(setq calendar-load-hook
'(lambda ()
(set-face-foreground 'diary-face "skyblue")
(set-face-background 'holiday-face "slate blue")
(set-face-foreground 'holiday-face "white")))

;;设置我所在地方的经纬度,calendar里有个功能是日月食的预测,和你的经纬度相联系的。
;; 让emacs能计算日出日落的时间,在 calendar 上用 S 即可看到
(setq calendar-latitude +36.125)
(setq calendar-longitude +117.786)
(setq calendar-location-name "Laiwu")

;; 设置阴历显示,在 calendar 上用 pC 显示阴历
(setq chinese-calendar-celestial-stem
["甲" "乙" "丙" "丁" "戊" "己" "庚" "辛" "壬" "癸"])
(setq chinese-calendar-terrestrial-branch
["子" "丑" "寅" "卯" "辰" "巳" "戊" "未" "申" "酉" "戌" "亥"])

;; 设置 calendar 的显示
(setq calendar-remove-frame-by-deleting t)
;(setq calendar-week-start-day 1) ; 设置星期一为每周的第一天
(setq mark-diary-entries-in-calendar t) ; 标记calendar上有diary的日期
(setq mark-holidays-in-calendar nil) ; 为了突出有diary的日期,calendar上不标记节日
(setq view-calendar-holidays-initially nil) ; 打开calendar的时候不显示一堆节日

;; 去掉不关心的节日,设定自己在意的节日,在 calendar 上用 h 显示节日
(setq christian-holidays nil)
(setq hebrew-holidays nil)
(setq islamic-holidays nil)
(setq solar-holidays nil)
(setq general-holidays '((holiday-fixed 1 1 "元旦")
(holiday-fixed 2 14 "情人节")
(holiday-fixed 3 14 "白色情人节")
(holiday-fixed 4 1 "愚人节")
(holiday-fixed 5 1 "劳动节")
(holiday-float 5 0 2 "母亲节")
(holiday-fixed 6 1 "儿童节")
(holiday-float 6 0 3 "父亲节")
(holiday-fixed 7 1 "建党节")
(holiday-fixed 8 1 "建军节")
(holiday-fixed 9 10 "教师节")
(holiday-fixed 10 1 "国庆节")
(holiday-fixed 12 25 "圣诞节")))

;;Calendar模式支持各种方式来更改当前日期
;;(这里的“前”是指还没有到来的那一天,“后”是指已经过去的日子)
;; q 退出calendar模式
;; C-f 让当前日期向前一天
;; C-b 让当前日期向后一天
;; C-n 让当前日期向前一周
;; C-p 让当前日期向后一周
;; M-} 让当前日期向前一个月
;; M-{ 让当前日期向后一个月
;; C-x ] 让当前日期向前一年
;; C-x [ 让当前日期向后一年
;; C-a 移动到当前周的第一天
;; C-e 移动到当前周的最后一天
;; M-a 移动到当前月的第一天
;; M-e 多动到当前月的最后一天
;; M-< 移动到当前年的第一天
;; M-> 移动到当前年的最后一天

;;Calendar模式支持移动多种移动到特珠日期的方式
;; g d 移动到一个特别的日期
;; o 使某个特殊的月分作为中间的月分
;; . 移动到当天的日期
;; p d 显示某一天在一年中的位置,也显示本年度还有多少天。
;; C-c C-l 刷新Calendar窗口

;; Calendar支持生成LATEX代码。
;; t m 按月生成日历
;; t M 按月生成一个美化的日历
;; t d 按当天日期生成一个当天日历
;; t w 1 在一页上生成这个周的日历
;; t w 2 在两页上生成这个周的日历
;; t w 3 生成一个ISO-SYTLE风格的当前周日历
;; t w 4 生成一个从周一开始的当前周日历
;; t y 生成当前年的日历

;;EMACS Calendar支持配置节日:
;; h 显示当前的节日
;; x 定义当天为某个节日
;; u 取消当天已被定义的节日
;; e 显示所有这前后共三个月的节日。
;; M-x holiday 在另外的窗口的显示这前后三个月的节日。


;; 另外,还有一些特殊的,有意思的命令:
;; S 显示当天的日出日落时间(是大写的S)
;; p C 显示农历可以使用
;; g C 使用农历移动日期可以使用


(provide 'pengshao-calendar)

10 备份相关的设置

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; -*- coding: utf-8; lexical-binding: t -*-
;;pengshao-backup.el--备份相关设置
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(setq
 backup-by-copying t    ;自动备份
 delete-old-versions t ; 自动删除旧的备份文件
 kept-new-versions 10   ; 保留最近的50个备份文件
 kept-old-versions 2   ; 保留最早的2个备份文件
 version-control t    ; 多次备份
 ;; 把生成的备份文件放到统一的一个目录,而不在在文件当前目录生成好多 ~ #的文件
 ;; 如果你编辑某个文件时 后悔了想恢复成以前的一个版本 你可以到这个目录下找到备份的版本


 backup-directory-alist `((".*" . "~/emacs.backup/cache/backup_files/")) ;
 auto-save-file-name-transforms `((".*" "~/emacs.backup/cache/backup_files/" t))
 auto-save-list-file-prefix   "~/emacs.backup/cache/backup_files/saves-")



(provide 'pengshao-backup)

11 frame-title-format设置相关

11.1 我的设置

;; buffer name (if the buffer isn't visiting a file)
(setq frame-title-format
      '("" " 上马提枪, 去干他娘 - "
        (:eval (if (buffer-file-name)
                   (abbreviate-file-name (buffer-file-name)) "%b"))))

11.2 frame-title-format选项相关

A string is printed verbatim in the mode line except for %-constructs:
(%-constructs are allowed when the string is the entire mode-line-format
or when it is found in a cons-cell or a list)
%b -- print buffer name.      %f -- print visited file name.
%F -- print frame name.
%* -- print %, * or hyphen.   %+ -- print *, % or hyphen.
%& -- is like %*, but ignore read-only-ness.
%  -- means buffer is read-only and * means it is modified.For a modified read-only buffer, %* gives % and %+ gives *.
%s -- print process status.
%p -- print percent of buffer above top of window, or Top, Bot or All.
%P -- print percent of buffer above bottom of window, perhaps plus Top,or print Bottom or All.
%m -- print the mode name.
%n -- print Narrow if appropriate.
%z -- print mnemonics of buffer, terminal, and keyboard coding systems.
%Z -- like %z, but including the end-of-line format.
%[ -- print one [ for each recursive editing level.  %] similar.
%% -- print %.   %- -- print infinitely many dashes.
Decimal digits after the % specify field width to which to pad.

12 配置目录的文件树

[https://github.com/boxmaking/.emacs.d]

/home/pengshao/.emacs.d/
├── ac-comphist.dat
├── bookmarks
├── init.el
├── lisp
│   ├── ac-dict
│   │   ├── ada-mode
│   │   ├── caml-mode
│   │   ├── clojure-mode
│   │   ├── clojurescript-mode
│   │   ├── c++-mode
│   │   ├── c-mode
│   │   ├── coq-mode
│   │   ├── css-mode
│   │   ├── erlang-mode
│   │   ├── ess-julia-mode
│   │   ├── go-mode
│   │   ├── haskell-mode
│   │   ├── java-mode
│   │   ├── js-mode
│   │   ├── julia-mode
│   │   ├── lua-mode
│   │   ├── nim-mode
│   │   ├── objc-mode
│   │   ├── octave-mode
│   │   ├── org-mode
│   │   ├── php-mode
│   │   ├── python-mode
│   │   ├── qml-mode
│   │   ├── ruby-mode
│   │   ├── scala-mode
│   │   ├── scheme-mode
│   │   ├── sclang-mode
│   │   ├── sh-mode
│   │   ├── swift-mode
│   │   ├── tcl-mode
│   │   ├── ts-mode
│   │   ├── tuareg-mode
│   │   └── verilog-mode
│   ├── auto-complete-config.el
│   ├── auto-complete.el
│   ├── auto-complete-pkg.el
│   ├── browse-kill-ring.el
│   ├── color-theme.el
│   ├── htmlize.el
│   ├── iimage.el
│   ├── popup.el
│   ├── tabbar.el
│   ├── themes
│   │   ├── color-theme-example.el
│   │   └── color-theme-library.el
│   └── word-like-count-mode.el
├── loadfile
│   ├── pengshao-backup.el
│   ├── pengshao-calendar.el
│   ├── pengshao-copy-cut-paste-killring.el
│   ├── pengshao-default.el
│   ├── pengshao-insert-date.el
│   ├── pengshao-key-building.el
│   ├── pengshao-org-mode.el
│   └── pengshao-org-publish.el
├── org-other-file
│   ├── css
│   │   ├── org2.css
│   │   └── org.css
│   ├── org-info.js
│   ├── org-level-0.org
│   ├── org-level-1.org
│   └── org-level-3.org
├── timelog
└── url