我的 Emacs 设置文件

Emacs配置及使用方法 - 优雅而经典的Lisp Emacs是一款功能强大的文本编辑器,它提供了丰富的功能和灵活的配置选项,使得用户可以根据自己的需求进行个性化定制。其中,Lisp语言是Emacs的配置语言,通过编写Lisp代码,可以实现对Emacs的定制化设置和功能扩展。本文将介绍Emacs的配置方法,并提供一些常用的Lisp代码示例。Emacs具有强大的可定制性,通过Lisp语言编写配置代码,你可以根据自己的需求对Emacs进行个性化定制,添加插件、设置主题、绑定快捷键等。Emacs的灵活性使得用户可以根据自己的需求添加各种定制化功能。 阅读详情
我的 Emacs 设置文件,不含 Muse 及 Planner 这两项配置在另一个文件中.

大部分配置与网上的相同.加入了以下内容:
1.PHP-mode
2.把字体调大了一些:(省眼)
3.为了适应WinXP环境.语言编码设置上有所不同.


;; -*-  mode: lisp-interaction; coding: utf-8; -*-

;;------------语言环境字符集设置(utf-8)-------------
;; font and language
(setq ascii-font "-outline-Courier New-normal-r-normal-normal-16-97-96-96-c-*-iso8859-1")
(setq chinese-font "-outline-新宋体-normal-r-normal-normal-16-*-96-96-c-*-iso10646-1")
(set-language-environment 'Chinese-GB)
(set-keyboard-coding-system 'euc-cn)
(set-clipboard-coding-system 'euc-cn)
(set-terminal-coding-system 'euc-cn)
(set-buffer-file-coding-system 'utf-8)
(set-default-coding-systems '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 'euc-cn)
(set-file-name-coding-system 'euc-cn)
(setq ansi-color-for-comint-mode t)
(defun vital-set-font (en-font cn-font)
  (create-fontset-from-fontset-spec
   (replace-regexp-in-string "iso8859-1" "fontset-zw" en-font))
  (set-fontset-font "fontset-zw" 'gb18030 cn-font)
  (set-fontset-font "fontset-zw" 'latin en-font)
  (set-fontset-font "fontset-default" 'gb18030 cn-font)
  (set-fontset-font "fontset-default" 'latin en-font)
  (set-default-font "fontset-zw")
  (setq default-frame-alist
    (append '((font . "fontset-zw")) default-frame-alist)))

(vital-set-font ascii-font chinese-font)

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

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

(set-foreground-color "grey")
(set-background-color "black")
(set-cursor-color "gold1")
(set-mouse-color "gold1")

;;(set-scroll-bar-mode nil)
;;取消滚动栏

;;(customize-set-variable 'scroll-bar-mode 'right))
;;设置滚动栏在窗口右侧,而默认是在左侧

;;(tool-bar-mode nil)
;;取消工具栏

;;启动设置
(setq default-frame-alist
      '((vertical-scroll-bars)
    (top . 35)
    (left . 65)
    (width . 80)
    (height . 35)
    (background-color . "black")
    (foreground-color . "white")
    (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 . 142) (height . 49)))


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

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

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

;(display-time-mode 1);;启用时间显示设置,在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 "~/")

;;ido的配置,这个可以使你在用C-x C-f打开文件的时候在后面有提示;
;;这里是直接打开了ido的支持,在emacs23中这个是自带的.
;(ido-mode t)

;(setq ido-save-directory-list-file nil)
;;ido模式中不保存目录列表,解决退出Emacs时ido要询问编码的问题。

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

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

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

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

(setq font-lock-maximum-decoration t)
(setq font-lock-global-modes '(not shell-mode text-mode))
(setq font-lock-verbose t)
(setq font-lock-maximum-size '((t . 1048576) (vm-mode . 5250000)))
;; 语法高亮。除 shell-mode 和 text-mode 之外的模式中使用语法高亮。

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

(setq mouse-yank-at-point t)
;;不要在鼠标点击的那个地方插入剪贴板内容。我不喜欢那样,经常把我的文档搞的一团糟。我觉得先用光标定位,然后鼠标中键点击要好的多。不管你的光标在文档的那个位置,或是在 minibuffer,鼠标中键一点击,X selection 的内容就被插入到那个位置。

(setq kill-ring-max 200)
;;设置粘贴缓冲条目数量.用一个很大的kill ring(最多的记录个数). 这样防止我不小心删掉重要的东西

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

(setq-default indent-tabs-mode nil)
(setq default-tab-width 8);;tab键为8个字符宽度
(setq tab-stop-list ())
;;不用 TAB 字符来indent, 这会引起很多奇怪的错误。编辑 Makefile 的时候也不用担心,因为 makefile-mode 会把 TAB 键设置成真正的 TAB 字符,并且加亮显示的。

(setq sentence-end "//([。!?]//|……//|[.?!][]/"')}]*//($//|[ /t]//)//)[ /t/n]*")
(setq sentence-end-double-space nil)
;;设置 sentence-end 可以识别中文标点。不用在 fill 时在句号后插入两个空格。

(setq enable-recursive-minibuffers t)
;;可以递归的使用 minibuffer

(setq scroll-margin 3  scroll-conservatively 10000)
;;防止页面滚动时跳动, scroll-margin 3 可以在靠近屏幕边沿3行时就开始滚动,可以很好的看到上下文。

(setq default-major-mode 'text-mode)
(add-hook 'text-mode-hook 'turn-on-auto-fill)
;;设置缺省主模式是text,,并进入auto-fill次模式.而不是基本模式fundamental-mode

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

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

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

(setq frame-title-format "emacs@%b")
;;在标题栏显示buffer的名字

(setq uniquify-buffer-name-style 'forward);;好像没起作用
;; 当有两个文件名相同的缓冲时,使用前缀的目录名做 buffer 名字,不用原来的foobar<?> 形式。

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

;(auto-compression-mode 1)
;打开压缩文件时自动解压缩。

(setq global-font-lock-mode t)
;;进行语法加亮。
(setq-default kill-whole-line t)
;; 在行首 C-k 时,同时删除该行。

(add-hook 'comint-output-filter-functions
      'comint-watch-for-password-prompt)
;;当你在shell、telnet、w3m等模式下时,必然碰到过要输入密码的情况,此时加密显出你的密码

; (setq version-control t);;启用版本控制,即可以备份多次
; (setq kept-old-versions 2);;备份最原始的版本两次,及第一次编辑前的文档,和第二次编辑前的文档
; (setq kept-new-versions 1);;备份最新的版本1次,理解同上
; (setq delete-old-versions t);;删掉不属于以上3中版本的版本
; (setq backup-directory-alist '(("." . "~/backups")));;设置备份文件的路径
; (setq backup-by-copying t);;备份设置方法,直接拷贝
;; Emacs 中,改变文件时,默认都会产生备份文件(以 ~ 结尾的文件)。可以完全去掉; (并不可取),也可以制定备份的方式。这里采用的是,把所有的文件备份都放在一个固定的地方("~/backups")。对于每个备份文件,保留最原始的两个版本和最新的1个版本。并且备份的时候,备份文件是复本,而不是原件。

;;(setq make-backup-files nil)
;; 设定不产生备份文件

(setq auto-save-mode nil)
;;自动保存模式

(setq-default make-backup-files nil)
;; 不生成临时文件

;(put 'scroll-left 'disabled nil)     ;允许屏幕左移
;(put 'scroll-right 'disabled nil)    ;允许屏幕右移
;(put 'set-goal-column 'disabled nil)
;(put 'narrow-to-region 'disabled nil)
;(put 'upcase-region 'disabled nil)
;(put 'downcase-region 'disabled nil)
;(put 'LaTeX-hide-environment 'disabled nil)
;;把这些缺省禁用的功能打开。

;;允许emacs和外部其他程序的粘贴
(setq x-select-enable-clipboard t)

(setq mouse-yank-at-point t)
;;使用鼠标中键可以粘贴

(setq user-full-name "Vital")
(setq user-mail-address "vitalgg@gmail.com")
;;设置有用的个人信息,这在很多地方有用。

(setq require-final-newline t)
;; 自动的在文件末增加一新行

(setq-default transient-mark-mode t)
;;Non-nil if Transient-Mark mode is enabled.

(setq track-eol t)
;; 当光标在行尾上下移动的时候,始终保持在行尾。

(setq Man-notify-method 'pushy)
;; 当浏览 man page 时,直接跳转到 man buffer。

;;(setq next-line-add-newlines nil)
;;Emacs 21 中已经是缺省设置。按 C-n 或向下键时不添加新行。

(global-set-key [home] 'beginning-of-buffer)
(global-set-key [end] 'end-of-buffer)
;;设置home键指向buffer开头,end键指向buffer结尾


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

(global-set-key [f1] 'manual-entry)
(global-set-key [C-f1] 'info )

(global-set-key [f2] 'muse-project-find-file)
;;打开wiki

(global-set-key [f3] 'repeat-complex-command)

(global-set-key [f4] 'other-window)
;; 跳转到 Emacs 的另一个buffer窗口

(defun du-onekey-compile ()
  "Save buffers and start compile"
  (interactive)
  (save-some-buffers t)
  (switch-to-buffer-other-window "*compilation*")
  (compile compile-command))
(global-set-key [C-f5] 'compile)
(global-set-key [f5] 'du-onekey-compile)
;;  C-f5, 设置编译命令; f5, 保存所有文件然后编译当前窗口文件

;(global-set-key [f6] 'gdb)
;;F6设置为在Emacs中调用gdb

(global-set-key [C-f7] 'previous-error)
(global-set-key [f7] 'next-error)

(defun open-eshell-other-buffer ()
  "Open eshell in other buffer"
  (interactive)
  (split-window-vertically)
  (eshell))
(global-set-key [(f8)] 'open-eshell-other-buffer)
(global-set-key [C-f8] 'eshell)
;;目的是开一个shell的小buffer,用于更方便地测试程序(也就是运行程序了),我经常会用到。
;;f8就是另开一个buffer然后打开shell,C-f8则是在当前的buffer打开shell

(setq speedbar-show-unknown-files t);;可以显示所有目录以及文件
(setq dframe-update-speed nil);;不自动刷新,手动 g 刷新
(setq speedbar-update-flag nil)
(setq speedbar-use-images nil);;不使用 image 的方式
(setq speedbar-verbosity-level 0)

(global-set-key [f9] 'speedbar)
;;设置f9调用speedbar命令
;;使用 n 和 p 可以上下移动,
;; + 展开目录或文件进行浏览,- 收缩,RET 访问目录或文件,g 更新 speedbar。

(setq dired-recursive-copies 'top)
(setq dired-recursive-deletes 'top)
;;让 dired 可以递归的拷贝和删除目录。
(global-set-key [C-f9] 'dired)
;;设置[C-f9]为调用dired命令

(global-set-key [f10] 'undo)
;;设置F10为撤销

(global-set-key [f11] 'calendar)
;;设置F11快捷键指定Emacs 的日历系统

(global-set-key [f12] 'list-bookmarks)
;;设置F12 快速察看日程安排

(setq time-stamp-active t)
(setq time-stamp-warn-inactive t)
(setq time-stamp-format "%:y-%02m-%02d %3a %02H:%02M:%02S chunyu")
;; 设置时间戳,标识出最后一次保存文件的时间。

(global-set-key (kbd "M-g") 'goto-line)
;;设置M-g为goto-line

(global-set-key (kbd "C-SPC") 'nil)
;;取消control+space键设为mark

(global-set-key (kbd "s-SPC") 'set-mark-command)
;;用win+space键来set-mark,这样,C-SPC就可以用来调用外部输入法了。

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

;;----------日历设置--------------------

;;设置日历的一些颜色
(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 +39.54)
(setq calendar-longitude +116.28)
(setq calendar-location-name "北京")

;; 设置阴历显示,在 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     使用农历移动日期可以使用

;;-----------日历设置结束----------------

;;-----------日记设置---------------------

(setq diary-file "~/diary/diary");; 默认的日记文件
(setq diary-mail-addr "vitalgg@gmail.com")
(add-hook 'diary-hook 'appt-make-list)
;;当你创建了一个'~/diary'文件,你就可以使用calendar去查看里面的内容。你可以查看当天的事件,相关命令如下 :
;;  d     显示被选中的日期的所有事件
;;  s     显示所有事件,包括过期的,未到期的等等

;; 创建一个事件的样例:
;; 02/11/1989
;;     Bill B. visits Princeton today
;;     2pm Cognitive Studies Committee meeting
;;     2:30-5:30 Liz at Lawrenceville
;;     4:00pm Dentist appt
;;     7:30pm Dinner at George's
;;     8:00-10:00pm concert

;; 创建事件的命令:
;; i d   为当天日期添加一个事件
;; i w   为当天周创建一个周事件
;; i m   为当前月创建一个月事件
;; i y   为当前年创建一个年事件
;; i a   为当前日期创建一个周年纪念日
;; i c   创建一个循环的事件

;;----------日记设置结束-----------------


;;----------日程安排和约会提醒配置----------

(setq todo-file-do "~/todo/do")
(setq todo-file-done "~/todo/done")
(setq todo-file-top "~/todo/top")
;;设置日程安排模式(todo模式)
;;在do文件中每件事情分别属于一个category(种类),加入事情的时候会让你选择属于哪个category,可以用todo-add-category命令来
;;新建一个category,category中的事件按重要性排列,最重要的事情放在最上面,加入的时候会有提示。top文件只显示每个category
;;里的第一件事情。

;;对于do文件,常用的命令如下
;; i 加入一件事情
;; e 编辑一件事情
;; k 删除一件事情,不加入done文件
;; d/f 删除完成的事情,同时加入done文件,可以加入评论
;; +/- 在不同的category之间切换
;; j 跳转到某个category

(setq appt-issue-message t)
;;打开约会提醒功能
;;M-x appt-add 加入新的约会提醒
;;M-x appt-delete 删除提醒

;;-------日程安排和约会提醒配置结束---------


;;----------GNUS设置--------------------

(setq gnus-select-method '(nntp "news.yaako.com"))
(setq gnus-default-subscribed-newsgroups
    '( "cn.comp.os.linux")) ;;

;; (add-to-list 'gnus-secondary-select-methods '(nntp "news.yourSecondProvider.net"))
;; (add-to-list 'gnus-secondary-select-methods '(nntp "news.yourThirdProvider.net"))
;;让 Gnus 在多个的服务器上取新闻


;;中文相关
(set-language-environment 'Chinese-GB)
(setq gnus-default-charset 'chinese-iso-8bit
      gnus-group-name-charset-group-alist '((".*" . chinese-iso-8bit))
      gnus-summary-show-article-charset-alist
      '((1 . chinese-iso-8bit)
    (2 . gbk)
    (3 . big5)
    (4 . utf-8))
      gnus-newsgroup-ignored-charsets
      '(unknown-8bit x-unknown iso-8859-1))

;;pop3设置
(setq mail-sources
       '((pop :server "pop.gmail.com" ;; 在这里设置pop3服务器
       :user "vitalgg@gmail.com" ;; 用户名
       :port "995"
       :password "******"))) ;; 密码
;(setq gnus-secondary-select-methods '((nnfolder "")))


;;smtp设置
;(setq user-full-name "vital") ;; 外发的邮件采用这个名字
;(setq user-mail-address "*****@gmail.com") ;;外发的邮件采用这个地址
;(setq smtpmail-auth-credentials
;      '(("smtp.gmail.com" ;; SMTP服务器
;      25
;      "*****" ;; 用户名
;      "******"))) ;; 密码
;(setq smtpmail-default-smtp-server "smtp.gmail.com")
;(setq smtpmail-smtp-server "smtp.gmail.com")
;(setq message-send-mail-function 'smtpmail-send-it)

;(setq nnmail-expiry-wait 3);;Gnus 默认的保质期是7天,如果你觉得时间不合适,可以自己设置

(add-hook 'gnus-article-prepare-hook
          (lambda ()
            (setq fill-column 60)
            (gnus-article-fill-long-lines)))
;;让gnus把这种邮件排版整齐后再显示给我们看

(add-hook 'gnus-article-prepare-hook 'gnus-article-date-local)
;;将邮件的发出时间转换为本地时间

(gnus-add-configuration '(article
                          (vertical 1.0
                                    (summary .4 point)
                                    (article 1.0))))
;; 改变阅读新闻时窗口的布局,窗口划分为上4下6(比例)

(eval-after-load "mm-decode"
  '(progn
     (add-to-list 'mm-discouraged-alternatives "text/html")
     (add-to-list 'mm-discouraged-alternatives "text/richtext")))
;有些用web方式发出的邮件里有html,上面的设置,只看其中的plain text部分:

(setq gnus-thread-sort-functions
      '(
        (not gnus-thread-sort-by-date)
        (not gnus-thread-sort-by-number)
        ))
;;排序

(add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
;; 有时订阅了很多新闻组,堆在一起不好管理。这个功能可以创建目录来分层管理

(setq gnus-read-newsrc-file nil  gnus-save-newsrc-file nil)

;;------------GNUS设置结束--------------------

;;-------------编程操作设置----------------

;;代码折叠
(load-library "hideshow")
(add-hook 'c-mode-hook 'hs-minor-mode)
(add-hook 'c++-mode-hook 'hs-minor-mode)
(add-hook 'java-mode-hook 'hs-minor-mode)
(add-hook 'perl-mode-hook 'hs-minor-mode)
(add-hook 'php-mode-hook 'hs-minor-mode)
(add-hook 'emacs-lisp-mode-hook 'hs-minor-mode)
;;能把一个代码块缩起来,需要的时候再展开
;;  M-x              hs-minor-mode
;;  C-c @ ESC C-s    show all
;;  C-c @ ESC C-h    hide all
;;  C-c @ C-s        show block
;;  C-c @ C-h        hide block
;;  C-c @ C-c toggle hide/show


;;自动补全括号
(defun my-c-mode-auto-pair ()
  (interactive)
  (make-local-variable 'skeleton-pair-alist)
  (setq skeleton-pair-alist  '(
                   (?` ?` _ "''")
                   (?/( ?  _ " )")
                   (?/[ ?  _ " ]")
                   (?{ /n > _ /n ?} >)))
  (setq skeleton-pair t)
  (local-set-key (kbd "(") 'skeleton-pair-insert-maybe)
  (local-set-key (kbd "{") 'skeleton-pair-insert-maybe)
  (local-set-key (kbd "`") 'skeleton-pair-insert-maybe)
  (local-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)
;;输入左边的括号,就会自动补全右边的部分.包括(), "", [] , {} , 等等。

;;把c语言风格设置为k&r风格
(add-hook 'c-mode-hook
      '(lambda ()
         (c-set-style "k&r")))

(autoload 'css-mode "css-mode" "CSS editing mode" t)
;;css-mode.el编辑css文件
(autoload 'php-mode "php-mode" "PHP editing mode" t)
(require 'html-font)
(autoload 'htmlize-buffer "htmlize" "HTMLize mode" t)
;;把buffer的内容连同颜色转为html格式

(autoload 'folding-mode          "folding" "Folding mode" t)
(autoload 'turn-off-folding-mode "folding" "Folding mode" t)
(autoload 'turn-on-folding-mode  "folding" "Folding mode" t)
;;folding.el 编辑文本的一部分,其它部分折叠起来
(autoload 'html-helper-mode "html-helper-mode" "Yay HTML" t)
(setq auto-mode-alist
      ;; 将文件模式和文件后缀关联起来
      (append '(("//.py//'" . python-mode)
        ("//.s?html?//'" . html-helper-mode)
        ("//.asp//'" . html-helper-mode)
        ("//.phtml//'" . html-helper-mode)
        ("//.css//'" . css-mode)
                ("//.php//'" . php-mode)
                ("//.html?//'" . html-helper-mode)
                )
          auto-mode-alist))

;;------------编程操作设置结束--------------------
;;

;;------------ AuTEX----------------------------
(load "auctex.el" nil t t)
(load "preview-latex.el" nil t t)
(require 'tex-mik)
(setq preview-image-type 'png)


;;------------- psvn ---------------------------
;;;;;;;;;;;;;
(require 'psvn)


;;---------Emacs muse and Planner 配置--------------------
(add-to-list 'load-path "~/.muse")
(require 'muse-init)

(setq debug-on-error t)

 
我的Emacs个性化配置指南 本文还有配套的精品资源,点击获取 简介:Emacs是一个高度可定制的文本编辑器,尤其在自由软件社区中受到赞誉。通过编写Emacs Lisp(Elisp)脚本,用户可以扩展Emacs的功能以满足个人需求。本文介绍了Emacs配置文件的基本结构、语言环境设置、界面调整、外部包管理、快捷键定制、工作空间管理以及如何有效地组织配置文件。此外,还提供了Emacs配置文件 em... 阅读详情

相关推荐

【项目管理】第8章 项目整合管理 --知识点整理

制定项目章程: 第一步,旨在明确项目的目标、范围、关键里程碑等关键信息,为项目的后续工作奠定基础。制订项目管理计划: 在项目章程的基础上,进一步详细规划项目的执行过程,包括时间、成本、质量、风险等方面的管理计划。指导与管理项目执行: 按照项目管理计划执行项目,同时监控项目的进展,确保项目按照计划进行。监控项目工作: 对项目的执行情况进行持续监控,及时发现并解决问题,确保项目目标的实现。

weixin_42081167的博客 1596

Emacs 配置

首先呢,我不是Emacs大师,也是新手,所以这里记述的也是初级配置。 首先介绍一个网页:http://tuhdo.github.io/c-ide.html 我是按照这个网页的配置做的。中间遇到一些问题,所以记述一下。 第一,按照链接网页《quick setup》走一边。我采用了《ggtags》而非《helm-gtags》是以需要修改init.el 第二,如链接网页所述,必须要学会用pack......

taoxianchong的专栏 1582

Wireshark时间分析实战:精准调试网络延迟与时间同步问题

本文深入探讨了Wireshark在网络延迟与时间同步问题分析中的核心应用。通过实战案例,详细讲解了如何设置时间显示格式、利用时间参考点量化关键路径延迟,以及运用时间平移功能校正错位时间轴。掌握这些时间分析技巧,能帮助网络工程师精准定位隐藏于数据包时序中的性能瓶颈与故障根源。

weixin_29290963的博客 262

Emacs安装配置全攻略之一编译安装简单配置

. 准备工作 (1)安装svn、ssh sudo apt-get install ssh subversion (2)安装texinfo(为了编译man包) sudo apt-get install texinfo (3)安装编译所需的支持包,依环境而定 sudo apt-get build-dep emacs21 libgtk2.0-dev xserver-xorg-

GQB的专栏 9089

别再只当代码阅读器了!手把手教你用Understand的实体定位器和信息浏览器,5分钟精准定位代码逻辑

本文深入解析Understand代码分析工具的高级功能,重点介绍实体定位器和信息浏览器的实战应用。通过5分钟快速定位代码逻辑的技巧,帮助开发者从代码阅读者升级为逻辑侦探,提升大型代码库的分析效率。文章包含过滤搜索、调用链追踪等实用方法,是掌握Understand核心功能的必备指南。

weixin_28745821的博客 292

SAP ABAP VL09 BAPI VL 216

ls_batch_item-fact_unit_denom = ls_lips_split-umvkn. "销售数量转换为 SKU 的值(分母)ls_batch_item-fact_unit_nom = ls_lips_split-umvkz. "销售数量转换成SKU的分子(因子)ls_batch_item-sales_unit_iso = ls_lips_split-meins. "被拆分DN基本单位。

ChampaignWolf的专栏 2300

Emacs 系列——emacs 基础配置

Emacs配置应以实用为主,避免过度优化。基础配置包括快捷键、习惯设置和功能包启用,建议通过init.el文件进行模块化管理,将不同配置分文件存放。Windows系统需额外配置字体以解决中文显示问题,而编码设置应统一为UTF-8以保证多语言兼容性。核心原则是保持配置文件简洁,重点在于提升编辑效率而非无休止地调整配置。

subdudu的专栏 1021

高通平台蓝牙学习-- 基于WCN6750 Bluetooth 5.2的讲解

摘要:蓝牙5.2解决方案WCN6750具备多项先进特性:完全兼容5.2标准及ANT+协议,支持2Mbps高速BLE和长距离传输;采用射频集成方案,与WLAN共享天线并支持5G并发;内置功率放大器,支持Class1/2传输;提供双音频流和Slimbus接口优化。其HCI UART接口支持3.2Mbps速率,通过BlueZ协议栈实现蓝牙5.2功能,包括2Mbps模式和长距离传输,符合核心规范要求。(149字)

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 3万+

Windows下Emacs设置配置文件路径

emacs配置文件的名字.emacs,但是windows下不能直接建立.emacs文件,用_emacs代替,设置方法:regedit打开注册表,HKEY_CURRENT_USER/Software/GNU,下面可能没有emacs,右键->新建项输入Emacs,在emacs下右键->新建字符串值,设置值为emacs的安装路径,(注:这里的值可以不是安装路径,可以是任意其他路径,我为了方便才设置成了安装路径,只要把配置文件放在设置的路径下就可以)

flexprogram的专栏 1253

[Dify 实战] 如何在内网环境部署 Dify 应用:彻底离线的企业级方案解析

企业内网环境如何离线部署Dify?本文提供详细教程:Dify作为开源AI平台,支持完全离线部署,无需外网访问。文中介绍两种部署方式:推荐使用Docker一键部署,也可选择源码安装定制化方案。重点讲解内网模型配置(支持Ollama/GPT-OSS等)、知识库存储(MinIO/PostgreSQL)及内网代理设置,并给出常见问题排查方法。该方案适用于金融、政府等对数据安全要求高的场景,确保敏感数据不泄露,实现完全本地化的AI应用闭环。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 454

NXP(恩智浦)—TJA1043TK CAN收发器芯片详解

本文章主要讲解NXP(恩智浦)—TJA1043TK CAN收发器的相关知识。

零零刷的博客 2202

emacs 设置frame title为文件路径名

以前从网站上拉下来一个,不过使用了post-command-hook,参考修改了一下,能够比较及时显示。;;;Emacs title bar to reflect file name(defun frame-title-string ()   "Return the file name of current buffer, using ~ if under home directory"   (l

ilovevc的专栏 1752

携程滑块、点选验证码登录识别逆向

本文分析了携程登录系统的风控机制,主要包含三种验证场景:无验证码、滑块验证码和二次图标点选验证码。通过跟踪risk_inspect风控接口,发现验证流程采用标准AES加密,需提交设备指纹等加密信息。当触发验证码时,需额外提交包含轨迹坐标的verify_msg参数及token/rid参数。最终通过风控检测后,需使用一致的指纹参数和验证token完成加密登录。文章强调所有分析仅用于学习,代码实现需确保符合法律规范。

码王吴彦祖的博客 1102

emacs中默认打开文件encoding设置

Table of Contents 1. emacs中默认打开文件encoding设置emacs中默认打开文件encoding设置(add-to-list 'file-coding-system-alist '("\\.org" . utf-8) )

robin912的专栏 965

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Emacs配置文件位置设置(Windows xp)

我用的emacs24.1,使用_emacs文件作为配置文件,打开有下方一直有提示,所以我使用.emacs 1. 在界面上修改几个选择,然后保存,自动新建“.emacs”文件,位置在C:\Documents and Settings\(yourname)\Application Data\.emacs 2. 不改变Windows默认的home值,设置默认的.emacs文件

yuxiaolongdao的专栏 1801

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

设置Emacs的配置文件目录

Emacs的配置文件相关

291

Emacs文件名自动补全快捷键设置

环境:Emacs-28.1 ①打开Emacs的配置文件.emacs,没有则新建一个;(默认路径:C:\Users\用户名\AppData\Roaming\.emacs,此处用户名需自行修改) ②在其中添加如下代码: ;; Use C-tab to autocomplete the files and directories in buffers. ;; Based on command `comint-dynamic-complete-as-filename`. (defun autocomple

weixin_41899145的博客 665

emacs设置文件关联

所有的关联信息都放在一个变量中:auto-mode-alist看这个变量名就知道这是一个associate list它的key是一个正则表达式,值就是关联的模式。例如,要将后缀为cc, cxx, cpp, hh, hxx, hpp, CC, CXX, CPP, HH, HXX, HPP关联为c++-mode那么要在自己的emacs配置文件中写入下面一行:

gongzhitaao 1346

emacs为文件设置本地变量

原文地址:http://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Variables.html 有空再翻译一下,一个应用的例子: 48.2.4.1 Specifying File Variables There are two ways to specify file l

TOPGUN的专栏 1974

Emacs 设置项目教程

Emacs 设置项目教程 1. 项目的目录结构及介绍 setup-emacs/ ├── README.md ├── bin/ │ └── setup-emacs ├── etc/ │ └── example.emacs ├── init.el ├── install.sh └── uninstall.sh README.md: 项目说明文件,包含项目的基本信息和使用指南。 bin/: ...

gitblog_00496的博客 416

emacs中让~文件不出现

(setq make-backup-files nil)

帆子的技术的专栏 1467

Zed Modeline 配置指南:让文件内嵌的 Vim/Emacs 指令自动接管编辑器设置

Modeline 是一类写在文件开头或结尾的特殊注释,它能在不依赖用户全局配置的前提下,为该文件单独指定缩进宽度、Tab 行为、换行列宽、语言类型等编辑器设置。本文以 Zed 官方文档 [Modelines](https://link.gitcode.com/i/1491de7ecfdfd86e0f099e512fa045f0) 为主体,结合仓库中 [crates/language/src/mod

gitblog_00627的博客 713

我的.emacs文件

1 ;; .emacs initialization file 2 ; -*- mode: GNU Emacs-lisp -*- 3 4 ;; Set up the keyboard so the delete key on both the regular keyboard 5 ;; and the keypad delete the character under the

海阔天空 邵加超的BLOG 5419

emacs window版环境配置(设置默认的.emacs文件,指向自定义.emacs达到自定义home的目的)...

1.下载解压包 下载地址 ,下载之后我是直接解压到E:\emacs中的,E:\emacs中就有bin,libexec…等文件; 2.点击bin中的addpm.exe文件进行安装emacs; 3.就会发现配置文件在C:\Users\电脑名\AppData\Roaming\.emacs,(可以打开emacs点击options ,修改一些配置,然后点击save options)在最下面的会出现...

weixin_34315665的博客 220

emacs设置了单例模式后无法设定文件关联解决办法

emacs设置单例模式的本质就是使用下列参数启动: C:\emacs-24.5\bin\emacsclientw.exe --no-wait --alternate-editor="C:\emacs-24.5\bin\runemacs.exe" "%1" 如果是设置个快捷方式图标什么的还好,可以直接加参数,但是我在windows下经常喜欢双击文件打开,而双击打开实际上就是调用文件的默认打开方式,而...

weixin_30338743的博客 131

Emacs与visual studio结合

功能:把当前打开的文件用emacs打开.我之前下载了VisEmacs,看来也就是这个功能.当然,他会自动打开(但是我不喜欢). visual studio.net 2003:Menu->Tools->External Tools->Add Title: &EmacsCommand: F:/gnu/emacs/bin/gnuclientw.exeArguments: $(ItemPath)Initi

微笑的撒旦的专栏 3491
上一篇: 让Vim支持PHP代码折叠、调试!
下一篇: TeX中使用CJK-UTF8
vitalgg
博客等级 码龄24年 74粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值