Skip to content

Commit 1320af2

Browse files
committed
first commit: my emacs script & configuration file.
0 parents  commit 1320af2

File tree

365 files changed

+65969
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

365 files changed

+65969
-0
lines changed

.gitignore

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#*#
2+
*~
3+
/auto-save-list
4+
/backups
5+
*.elc
6+
/**/*.elc
7+
.svn
8+
tramp

INSTALL.txt

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
安装方法:
2+
1、从svn或copy得到emacs.d目录,放到~目录下,重命名为.emacs.ext
3+
2、修改.emacs,加入以下内容(或参考sample.emacs):
4+
(load "~/.emacs.ext/plugins/subdirs.el")
5+
(mapc 'load (directory-files "~/.emacs.ext/config" t "\.el$"))
6+
7+
8+
9+
目前包括以下插件:
10+
1、emacs on rails (包括需要的ruby-mode/snippet/find-recursive)
11+
2、mmm-mode
12+
3、color-theme (http://download.gna.org/color-theme/ 6.6.0)
13+
4、psvn
14+
5、yaml-mode (svn: http://svn.clouder.jp/repos/public/yaml-mode/trunk/ #151)
15+
16+
很多时候,emacs并不是按照你的想像去启动的.你会发现它可能启动后占据了两个或更多窗口.或者,你喜欢全屏工作方式,但每次启动后最大化总是一件很麻烦的事情.在日常应用中,我总结了以下两种方法,
17+
第一种方法:
18+
在你的 ~/.Xdefaults 中增加下面这行
19+
Emacs.geometry: 80x30
20+
然后运行 xrdb ~/.Xdefaults
21+
这样emacs的启动窗口就被设为80列x30行的大小
22+
你可以按照自己的要求设置
23+
Emacs.geometry: WIDTHxHEIGHT+XOFF+YOFF
24+
其中WIDTH, HEIGHT分别表示窗口的宽度和高度,可选的XOFF和YOFF表示启动窗口的左上角座标。
25+
例如:
26+
Emacs.geometry: 80x30+20+10
27+
表示令窗口大小为80x30,启动后左上角处于(20,10)处,很简单,不是么
28+
29+
第二种方法:
30+
在配置文件中配置,配置文件通常在你的用户目录,为.emacsrc.
31+
加入下面一行:
32+
(setq default-frame-alist
33+
'((height . 35) (width . 100) (menu-bar-lines . 20) (tool-bar-lines . 0)))
34+
由于后一种是写在配置文件中的,所以相对来说比较方便.比较方便
35+
36+
===================================
37+
对于T43,为了使用右Alt,修改为使用backford键映射为windows键,需要一段时间来熟悉:
38+
Windows Registry Editor Version 5.00
39+
40+
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
41+
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,5c,e0,6a,e0,00,00,00,00
42+
43+
这是映射右alt为windows的方法:
44+
Windows Registry Editor Version 5.00
45+
46+
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
47+
"Scancode Map"=hex:00,00,00,00,00,00,00,00,01,00,00,00,5b,e0,38,e0,00,00,00,00
48+

config/01base/basesetup.el

+155
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
;;启用部分补全功能,如输入M-x q r r相当于M-x query-replace-regexp
2+
(partial-completion-mode 1)
3+
;;在minibuffer里启用自动补全函数和变量
4+
(icomplete-mode 1)
5+
;;所有的问题用y/n方式,不用yes/no方式。有点懒,只想输入一个字母
6+
(fset 'yes-or-no-p 'y-or-n-p)
7+
;;允许minibuffer自由变化其大小(指宽度)
8+
(setq resize-mini-windows t)
9+
;;当寻找一个同名的文件,自动关联上那个文件?
10+
(setq uniquify-buffer-name-style 'forward)
11+
;;在emacs读man文档时,使用当前buffer
12+
(setq Man-notify-method 'pushy)
13+
;;鼠标自动避开指针,如当你输入的时候,指针到了鼠标的位置,鼠标有点挡住视线了
14+
(mouse-avoidance-mode 'animate)
15+
;;允许自动打开图片,如wiki里面
16+
(auto-image-file-mode)
17+
;;可以操作压缩文档
18+
;;(auto-compression-mode 1)
19+
;;在minibuffer上面可以显示列号
20+
(column-number-mode t)
21+
;;显示默认的文档的宽度,看起来比较舒服?
22+
;;(setq default-fill-column 60)
23+
24+
;;设置光标为短线
25+
(setq-default cursor-type 'bar)
26+
27+
;;指针不要闪,我得眼睛花了
28+
;;(blink-cursor-mode -1)
29+
30+
(transient-mark-mode 1)
31+
32+
;;当指针到一个括号时,自动显示所匹配的另一个括号
33+
(show-paren-mode 1)
34+
;;是用滚轴鼠标
35+
(mouse-wheel-mode t)
36+
;;去掉烦人的警告铃声
37+
(setq visible-bell nil)
38+
;;滚动页面时比较舒服,不要整页的滚动
39+
(setq scroll-step 1
40+
scroll-margin 3
41+
scroll-conservatively 10000)
42+
;;设定句子结尾,主要是针对中文设置
43+
(setq sentence-end "\\([¡££¡£¿]\\|¡¡\\|[.?!][]\"')}]*\\($\\|[ \t]\\)\\)[ \t\n]*")
44+
(setq sentence-end-double-space nil)
45+
;;去掉Emacs和gnus启动时的引导界面
46+
(setq inhibit-startup-message t)
47+
(setq gnus-inhibit-startup-message t)
48+
;;当指针移到另一行,不要新增这一行?d
49+
(setq next-line-add-newlines nil)
50+
;;在文档最后自动插入空白一行,好像某些系统配置文件是需要这样的
51+
(setq require-final-newline t)
52+
(setq track-eol t)
53+
;;使用C-k删掉指针到改行末的所有东西
54+
(setq-default kill-whole-line t)
55+
;;设定删除保存记录为200,可以方便以后无限恢复
56+
(setq kill-ring-max 200)
57+
;;增大使用查找函数和变量的寻找范围
58+
(setq apropos-do-all t)
59+
;;是用aspell程序作为Emacs的拼写检查成学
60+
;;(setq-default ispell-program-name "aspell")
61+
;;使用narrow功能时的一个设置
62+
(put 'narrow-to-region 'disabled nil)
63+
;;改变emacs标题栏的标题
64+
;;(setq frame-title-format "%[email protected]")
65+
;;允许emacs和外部其他程序的粘贴
66+
(setq x-select-enable-clipboard t)
67+
68+
69+
(desktop-save-mode 1)
70+
71+
;; 默认工作目录
72+
(setq default-directory "~/work")
73+
74+
;;去掉工具栏
75+
(tool-bar-mode nil)
76+
77+
;;备份设置
78+
;;emacs还有一个自动保存功能,默认在~/.emacs.d/auto-save-list里,这个非常有用,我这里没有改动,具体可以参见Sams teach yourself emacs in 24hours(我简称为sams24)
79+
;;启用版本控制,即可以备份多次
80+
(setq version-control t)
81+
;;备份最原始的版本两次,记第一次编辑前的文档,和第二次编辑前的文档
82+
(setq kept-old-versions 2)
83+
;;备份最新的版本五次,理解同上
84+
(setq kept-new-versions 5)
85+
;;删掉不属于以上7中版本的版本
86+
(setq delete-old-versions t)
87+
;;设置备份文件的路径
88+
(setq backup-directory-alist '(("." . "~/.emacs.ext/tmp")))
89+
;;备份设置方法,直接拷贝
90+
(setq backup-by-copying t)
91+
92+
;; 所有的备份文件转移到~/backups目录下
93+
(setq backup-directory-alist (quote (("." . "~/.emacs.ext/tmp"))))
94+
;; Emacs 中,改变文件时,默认都会产生备份文件(以 ~ 结尾的文件)。可以完全去掉
95+
;; (并不可取),也可以制定备份的方式。这里采用的是,把所有的文件备份都放在一
96+
;; 个固定的地方("~/var/tmp")。对于每个备份文件,保留最原始的两个版本和最新的
97+
;; 五个版本。并且备份的时候,备份文件是复本,而不是原件。
98+
99+
;;不产生备份文件
100+
;;(setq make-backup-files nil)
101+
102+
;;默认用空格代替tab
103+
(setq-default indent-tabs-mode nil)
104+
105+
;;使用快速buffer切换
106+
(iswitchb-mode 1)
107+
108+
;;在标题栏显示当前buffer所有位置
109+
(setq frame-title-format '("Emacs@"system-name": %b %+%+ %f"))
110+
111+
;;设置在双栏模式下自动折行显示
112+
(setq truncate-partial-width-windows nil)
113+
114+
;设定用户信息
115+
(setq user-full-name "Tang Liqun")
116+
(setq user-mail-address "[email protected]")
117+
;设置地理位置
118+
(setq calendar-latitude 31.22)
119+
(setq calendar-longitude 121.48)
120+
(setq calendar-location-name "Shanghai")
121+
122+
;;加入行号显示
123+
(require 'linum)
124+
125+
;;高亮当前行
126+
;;(global-hl-line-mode 1)
127+
128+
;;;设置c-o,这样在一行中的任何位置就可以直接新建一行了。相当于先c-e再enter
129+
(global-set-key (kbd "C-o")
130+
'(lambda ()
131+
(interactive)
132+
(end-of-line 1)
133+
(newline-and-indent)))
134+
135+
;;对付重名 buffer
136+
(require 'uniquify)
137+
(setq uniquify-buffer-name-style 'forward)
138+
139+
(split-window-horizontally)
140+
(enlarge-window-horizontally 15)
141+
142+
;;(auto-revert-mode t)
143+
(global-auto-revert-mode)
144+
145+
;;加强c-x c-b (buffer list)的功能,用起来和目录差不多, 按 g 刷新
146+
(require 'ibuffer)
147+
(global-set-key (kbd "C-x C-b") 'ibuffer)
148+
(autoload 'ibuffer "ibuffer" "List buffers." t)
149+
150+
(ansi-color-for-comint-mode-on)
151+
152+
;;你是不是经常按 C-y 放进一个 kill-ring 里的单元。然后 M-y,M-y,…… 来寻找你需要的很久以前剪切下来的东西?很费事吧?用了 browse-kill-ring 就好了。你只需要把它绑定到一个热键,比如 C-c k: 就能出现这样一个buffer
153+
;;(require 'browse-kill-ring)
154+
;;(global-set-key [(control c)(k)] 'browse-kill-ring)
155+

config/01base/color-theme.el

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
(require 'color-theme)
2+
(color-theme-initialize)
3+
4+
;;(color-theme-jsc-dark)
5+
6+
;;(color-theme-dark-laptop) ;;2008-02-22
7+
8+
;;(color-theme-gnome2)
9+
;;(color-theme-dark-blue)
10+
;;(color-theme-tty-dark)
11+
;;(color-theme-comidia) ;;2008-03-01
12+
13+
(color-theme-blue)

config/01base/font.el

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
(set-default-font "DejaVu Sans Mono-10")
2+
(set-fontset-font (frame-parameter nil 'font)
3+
'unicode '("Microsoft YaHei" . "unicode-bmp"))
4+
(set-fontset-font (frame-parameter nil 'font)
5+
'han '("Microsoft YaHei" . "unicode-bmp"))
6+
(set-fontset-font (frame-parameter nil 'font)
7+
'symbol '("Microsoft YaHei" . "unicode-bmp"))
8+
(set-fontset-font (frame-parameter nil 'font)
9+
'cjk-misc '("Microsoft YaHei" . "unicode-bmp"))
10+
(set-fontset-font (frame-parameter nil 'font)
11+
'bopomofo '("Microsoft YaHei" . "unicode-bmp"))

config/01base/git-model.el

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
(require 'git-emacs)

config/01base/my-extends.el

+116
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
(defun circle-windows ()
2+
(interactive)
3+
(let ((owindow (selected-window))
4+
(obuffer (current-buffer))
5+
)
6+
(while (not (equal owindow (next-window)))
7+
(set-window-buffer (selected-window) (window-buffer (next-window)))
8+
(select-window (next-window)))
9+
(set-window-buffer (selected-window) obuffer)
10+
(select-window owindow)))
11+
12+
(defun move-region-around (direction beg end)
13+
(let (real-beg
14+
real-end
15+
target-beg
16+
deactivate-mark
17+
text)
18+
(save-excursion
19+
(goto-char beg)
20+
(setq real-beg (line-beginning-position))
21+
22+
(when (equal direction 'up)
23+
(setq target-beg (line-beginning-position 0)))
24+
25+
(goto-char end)
26+
(setq real-end (line-beginning-position 2))
27+
28+
(when (equal direction 'down)
29+
(setq target-beg (copy-marker (line-beginning-position 3)))) ;must use marker
30+
31+
(setq text (buffer-substring-no-properties real-beg real-end))
32+
(delete-region real-beg real-end)
33+
(goto-char target-beg)
34+
(insert text)
35+
)
36+
37+
(set-mark (+ target-beg (- real-end real-beg 1)))
38+
(goto-char target-beg)
39+
(setq transient-mark-mode 'only)))
40+
41+
42+
(defun move-region-up (beg end)
43+
(interactive "r")
44+
(move-region-around 'up beg end))
45+
46+
(defun move-region-down (beg end)
47+
(interactive "r")
48+
(move-region-around 'down beg end))
49+
50+
;全屏
51+
(defun my-fullscreen ()
52+
(interactive)
53+
(x-send-client-message
54+
nil 0 nil "_NET_WM_STATE" 32
55+
'(2 "_NET_WM_STATE_FULLSCREEN" 0))
56+
)
57+
58+
;最大化
59+
(defun my-maximized ()
60+
(interactive)
61+
(x-send-client-message
62+
nil 0 nil "_NET_WM_STATE" 32
63+
'(2 "_NET_WM_STATE_MAXIMIZED_HORZ" 0))
64+
(x-send-client-message
65+
nil 0 nil "_NET_WM_STATE" 32
66+
'(2 "_NET_WM_STATE_MAXIMIZED_VERT" 0))
67+
)
68+
69+
;; author: pluskid
70+
;; 调用 stardict 的命令行接口来查辞典
71+
;; 如果选中了 region 就查询 region 的内容,
72+
;; 否则就查询当前光标所在的词
73+
(global-set-key (kbd "C-c d") 'kid-star-dict)
74+
(defun kid-star-dict ()
75+
(interactive)
76+
(let ((begin (point-min))
77+
(end (point-max)))
78+
(if mark-active
79+
(setq begin (region-beginning)
80+
end (region-end))
81+
(save-excursion
82+
(backward-word)
83+
(mark-word)
84+
(setq begin (region-beginning)
85+
end (region-end))))
86+
;; 有时候 stardict 会很慢,所以在回显区显示一点东西
87+
;; 以免觉得 Emacs 在干什么其他奇怪的事情。
88+
(message "searching for %s ..." (buffer-substring begin end))
89+
(tooltip-show
90+
(shell-command-to-string
91+
(concat "sdcv -n "
92+
(buffer-substring begin end))))))
93+
94+
95+
;;插入日期时间
96+
;;{{{
97+
;; insert current date
98+
(defun my-insert-date ()
99+
(interactive)
100+
(insert (format-time-string "%Y-%m-%d %a")))
101+
102+
;; insert current time
103+
(defun my-insert-time ()
104+
(interactive)
105+
(insert (format-time-string "%p %I:%M")))
106+
107+
(global-set-key "\C-c\C-d" 'my-insert-date)
108+
(global-set-key "\C-c\C-t" 'my-insert-time)
109+
110+
;启动时最大化
111+
(my-maximized)
112+
(global-set-key [\C-f11] 'my-fullscreen)
113+
114+
(global-set-key (quote [M-up]) (quote move-region-up))
115+
(global-set-key (quote [M-down]) (quote move-region-down))
116+
(global-set-key "\C-c\C-c2" 'circle-windows)

config/01base/smart-find.el

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
(load "smart-find")
2+
(setq smart-find-file-path
3+
'("~" "~/work" "~/jwork" "~/practice"))

0 commit comments

Comments
 (0)