首页 > DEA, 中级, 配置 > 我的Emacs配置文件 - DEA

我的Emacs配置文件 - DEA

2009年11月11日 ahei 发表评论 阅读评论

DEA是Dot Emacs of Ahei的简写。由于我的emacs配置文件比较大,我把它放到google code上去了,详情请见:DEA。我会不定期发布release版本,不过你大可放心使用trunk版本,我更新的很及时,遇到bug正好告诉我,:)。其他文章中的配置均来之与此。

1 兼容性

DEA兼容:

  • 部分兼容Emacs 21(以前兼容,我现在不使用Emacs 21了,所以可能有不兼容的情况)
  • Emacs 22, 23.1, 23.2
  • Emacs linux版本(我在Ubuntu下使用Emacs)
  • Emacs windows版本
  • Emacs GUI版本
  • Emacs字符模式版本

2 安装

  • linux

    1
    2
    3
    4
    
    apt-get install gnuserv # (emacs 21及其以下版本需要安装)
    svn checkout http://dea.googlecode.com/svn/trunk/ dea-read-only # (或者下载Downloads页面的release,不过不是最新的)
    cd dea-read-only
    ./install

    安装的时候, 会先根据.emacs文件生成一个.emacs.changed文件,因为.emacs文件中会用到一些与.emacs文件所在文件夹相关的变量,然后在HOME目录建立一个.emacs.changed的软链接(ln -sf CURDIR/.emacs.changed ~/.emacs), 如果HOME目录下已经存在.emacs文件, install.sh会把它备份到~/.emacs.CURRENTDATETIME. 所以, 如果你更新的时候是用svn up更新的话,还要执行一下 $ install.emacs.sh, 重新生成HOME下的.emacs.另外install.sh还会解压lisps目录下的压缩包.

  • windows
    windows用户请使用cygwin执行上述安装命令, 或者设置好了HOME目录后,把DEA放到HOME后下,并且重命名为emacs,把lisps目录下的tar包都解压,然后新建一个emacs.bat,输入以下内容:

    fullpath-of-runemacs.exe -q -l ~/emacs/.emacs
    

    以后启动Emacs执行emacs.bat即可。

3 更新

1
2
cd dea-read-only
./update.sh

windows下直接用svn客户端更新即可。

4 修改

当~/my.emacs文件存在时, DEA会加载它. 所以如果想增加自己的配置, 直接编辑~/my.emacs即可. 万一需要修改.emacs的话, 修改完.emacs后需要运行 $ ./install.emacs.sh, 或者退出emacs的时候,会自动运行$ ./install.emacs.sh

5 目录结构

  • lisps 主要存放一些非Emacs内置的Elisp包
  • my-lisps 我自己写的Elisp包和其他Elisp包的配置(下面只列出一些重要的配置)

    • coding-settings 编码设置
    • dev-settings 所有关于开发方面的配置, 程序员必备

      • c-settings c/c++开发的配置, c程序员注意啦
      • ruby-settings
      • cedet-settings
      • ecb-settings
      • all-auto-complete-settings 所有关于补全方面的配置, 补全控注意啦
      • svn-settings svn配置

6 DEA体积

1
2
3
4
5
6
7
8
ahei@ahei-ubuntu:~/DEA$ du -sh
53M .
ahei@ahei-ubuntu:~/DEA$ du -sh my-lisps/
1016K   my-lisps/
ahei@ahei-ubuntu:~/DEA/my-lisps$ find -type f | wc -l
185
ahei@ahei-ubuntu:~/DEA/my-lisps$ find -type f | xargs wc -l | tail -1
 13951 total

7 注意

  • 不建议初学者直接使用DEA,初学者请看这里, DEA的主要目的是提供给Emacser们一个非常全的配置例子, 每个人可以从中获取一些东西. 直接拿DEA作为自己的配置是不太适合的, 因为里面毕竟有很多我个人的配置, 也许不适合你.
  • 不要用apt-get安装cedet, DEA里面已自带cedet的cvs版.
  • 其他问题请看DEA的FAQs

8 Emacs默认快捷键修改

由于一些Emacs默认的快捷键个人觉得不是很方便,做了一些修改,主要是:

  • C-h

    Emacs中默认的C-h是帮助快捷键的prefix,我把它绑定到了删除前面一个字符,这样删除字符就非常方便了。
  • DEA中查看文档的快捷键如下:

    • 查看变量和函数的文档

      C-x C-/
    • 查看某个快捷键对应的命令

      C-x C-k
    • 查看某个命令对应的快捷键

      C-x / w
    • 查看当前buffer中以某个快捷键序列开头的快捷键列表

      <待查看的快捷键序列> C-x /,比如你想查看当前buffer中所有以C-c开头的快捷键列表,按C-c C-x /就可以了。
    • 查看函数和变量的代码

      C-x C-d
  • C-k

    Emacs默认的是删除光标当行尾,我改成了删除整行
  • C-w

    Emacs默认的是剪切region,即使mark没有激活, 我改了后,mark没有激活的话,就向后删除一个单词,激活则剪切region
  • M-w

    Emacs默认的是拷贝region,即使mark没有激活, 我改了后,mark没有激活的话,就复制本行,激活的话则拷贝region
  • C-x C-s绑定到了save-buffer-sb

9 非常方便的编辑功能

  • M-w smart-copy region状态下,拷贝region,否则拷贝当前行, 还可以拷贝矩阵region
  • C-k 删除一行

    M-K 删除当前光标到行尾
  • C-w 在region状态下, 剪切当前region, 否则向后删除一个单词, 非常之方便
  • C-x M-w 复制一行并粘贴到下一行

    M-W 复制region并粘贴到下面

    C-x M-W 复制一个sexp并粘贴到下面

    相信很多程序员都有拷贝现成代码并复制下来,然后经过小的修改(当然这种方法不是一个好的方法), 这时候这个命令就显的非常有用了
  • C-x w 复制一个sexp

    C-x W 删除一个sexp

    M-D 删除当前光标所处的单词

    C-x S 选择一个sexp

我配置后的emacs截图在这里(有些截图是别的作者和网友的,请读者自行分辨, :) )。

下面是我的.emacs文件, .emacs文件用到的其他文件在这里

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
;; -*- Emacs-Lisp -*-
 
;; Time-stamp: <2010-10-18 10:04:12 Monday by taoshanwen>
 
(defconst my-emacs-path           "~/emacs/" "我的emacs相关配置文件的路径")
(defconst my-emacs-my-lisps-path  (concat my-emacs-path "my-lisps/") "我自己写的emacs lisp包的路径")
(defconst my-emacs-lisps-path     (concat my-emacs-path "lisps/") "我下载的emacs lisp包的路径")
(defconst my-emacs-templates-path (concat my-emacs-path "templates/") "Path for templates")
 
;; 把`my-emacs-lisps-path'的所有子目录都加到`load-path'里面
(load (concat my-emacs-my-lisps-path "my-subdirs"))
(my-add-subdirs-to-load-path my-emacs-lisps-path)
(my-add-subdirs-to-load-path my-emacs-my-lisps-path)
 
;; 一些基本的小函数
(require 'ahei-misc)
 
;; 利用`eval-after-load'加快启动速度的库
;; 用eval-after-load避免不必要的elisp包的加载
;; http://emacser.com/eval-after-load.htm
(require 'eval-after-load)
 
(require 'util)
 
;; 一些Emacs的小设置
(require 'misc-settings)
 
;; 编码设置
(require 'coding-settings)
 
;; CUA的矩阵区域操作特别方便
(require 'cua-settings)
 
;; 矩形区域操作
(require 'rect-mark-settings)
 
;; 鼠标配置
(require 'mouse-settings)
 
;; 关于mark的一些设置,使你非常方便的选择region
(require 'mark-settings)
 
;; `mode-line'显示格式
(require 'mode-line-settings)
 
;; ffap,打开当前point的文件
(require 'ffap-settings)
 
;; 各种语言开发方面的设置
(require 'dev-settings)
 
;; 不要menu-bar和tool-bar
;; (unless window-system
;;   (menu-bar-mode -1))
(menu-bar-mode -1)
;; GUI下显示toolbar的话select-buffer会出问题
(if (fboundp 'tool-bar-mode)
    (tool-bar-mode -1))
 
;; 打开压缩文件时自动解压缩
;; 必须放在session前面
(auto-compression-mode 1)
 
;; 所有关于buffer方面的配置
(require 'all-buffer-settings)
 
;; frame-cmds.el必须放在multi-term前面,否则ediff退出时会出现错误
;; 而icicles soft-requires frame-cmds.el, 所以icicles也必须放在multi-term前面
;; emacs22下也必须放在kde-emacs前面, 否则会说shell-command是void-function
;; http://emacser.com/icicles-doremi-palette.htm
(require 'icicles-settings)
(require 'doremi-settings)
(require 'palette-settings)
 
;; edit-settings中对M-w重新定义,但是kde-emacs中也对其定义了
;; 所以必须要放在kde-emacs后面
(require 'edit-settings)
 
;; 用M-x执行某个命令的时候,在输入的同时给出可选的命令名提示
(require 'icomplete-settings)
 
;; minibuffer中输入部分命令就可以使用补全
(unless is-after-emacs-23
  (partial-completion-mode 1))
 
;; 图片mode
(require 'image-mode-settings)
 
;; 用一个很大的kill ring. 这样防止我不小心删掉重要的东西
(setq kill-ring-max 200)
 
;; 方便的在kill-ring里寻找需要的东西
(require 'browse-kill-ring-settings)
 
;; 显示行号
(require 'linum-settings)
 
;; color theme Emacs主题
(require 'color-theme-settings)
 
(require 'ahei-face)
(require 'color-theme-ahei)
(require 'face-settings)
 
;; 高亮当前行
(require 'hl-line-settings)
 
;; 字体配置
(require 'font-settings)
 
;; diff
(require 'diff-settings)
 
;; Emacs的diff: ediff
(require 'ediff-settings)
 
;; 最近打开的文件
(require 'recentf-settings)
 
;; 在buffer中方便的查找字符串: color-moccur
(require 'moccur-settings)
 
;; Emacs超强的增量搜索Isearch配置
(require 'isearch-settings)
 
;; 非常酷的一个扩展。可以“所见即所得”的编辑一个文本模式的表格
(if is-before-emacs-21 (require 'table "table-for-21"))
 
;; 把文件或buffer彩色输出成html
(require 'htmlize)
 
;; time-stamp, 在文件头记录修改时间, 并动态更新
(require 'time-stamp-settings)
 
;; Emacs可以做为一个server, 然后用emacsclient连接这个server,
;; 无需再打开两个Emacs
(require 'emacs-server-settings)
 
(require 'apropos-settings)
(require 'completion-list-mode-settings)
 
;; 显示ascii表
(require 'ascii)
 
;; 所有关于查看帮助方面的配置
(require 'all-help-settings)
 
;; 定义一些emacs 21没有的函数
(if is-before-emacs-21 (require 'for-emacs-21))
 
;; 简写模式
(setq-default abbrev-mode t)
(setq save-abbrevs nil)
 
;; 可以为重名的buffer在前面加上其父目录的名字来让buffer的名字区分开来,而不是单纯的加一个没有太多意义的序号
(require 'uniquify)
(setq uniquify-buffer-name-style 'forward)
 
;; 以目录形式显示linkd文档
(require 'linkd-settings)
 
;; Emacs的超强文件管理器
(require 'dired-settings)
 
;; 方便的切换major mode
(defvar switch-major-mode-last-mode nil)
 
(defun major-mode-heuristic (symbol)
  (and (fboundp symbol)
       (string-match ".*-mode$" (symbol-name symbol))))
 
(defun switch-major-mode (mode)
  "切换major mode"
  (interactive
   (let ((fn switch-major-mode-last-mode) val)
     (setq val
           (completing-read
            (if fn (format "切换major-mode为(缺省为%s): " fn) "切换major mode为: ")
            obarray 'major-mode-heuristic t nil nil (symbol-name fn)))
     (list (intern val))))
  (let ((last-mode major-mode))
    (funcall mode)
    (setq switch-major-mode-last-mode last-mode)))
(global-set-key (kbd "C-x q") 'switch-major-mode)
 
(defun get-mode-name ()
  "显示`major-mode'及`mode-name'"
  (interactive)
  (message "major-mode为%s, mode-name为%s" major-mode mode-name))
(global-set-key (kbd "C-x m") 'get-mode-name)
 
;; 查看Emacs内进程
(autoload 'list-processes+ "list-processes+" "增强的`list-processes'命令" t)
 
(require 'view-mode-settings)
 
(defun revert-buffer-no-confirm ()
  "执行`revert-buffer'时不需要确认"
  (interactive)
  (when (buffer-file-name)
    (let ((emaci emaci-mode))
      (revert-buffer buffer-file-name t)
      (emaci-mode (if emaci 1 -1)))))
(eal-define-keys-commonly
 global-map
 `(("C-x u"   revert-buffer-no-confirm)
   ("C-x M-K" revert-buffer-with-gbk)
   ("C-x U"   revert-buffer-with-coding-system-no-confirm-sb)))
 
(defun count-brf-lines (&optional is-fun)
  "显示当前buffer或region或函数的行数和字符数"
  (interactive "P")
  (let (min max)
    (if is-fun
        (save-excursion
          (beginning-of-defun) (setq min (point))
          (end-of-defun) (setq max (point))
          (message "当前函数%s内共有%d行, %d个字符" (which-function) (count-lines min max) (- max min)))
      (if mark-active
          (progn
            (setq min (min (point) (mark)))
            (setq max (max (point) (mark))))
        (setq min (point-min))
        (setq max (point-max)))
      (if (or (= 1 (point-min)) mark-active)
          (if mark-active
              (message "当前region内共有%d行, %d个字符" (count-lines min max) (- max min))
            (message "当前buffer内共有%d行, %d个字符" (count-lines min max) (- max min)))
        (let ((nmin min) (nmax max))
          (save-excursion
            (save-restriction
              (widen)
              (setq min (point-min))
              (setq max (point-max))))
          (message "narrow下buffer内共有%d行, %d个字符, 非narrow下buffer内共有%d行, %d个字符"
                   (count-lines nmin nmax) (- nmax nmin) (count-lines min max) (- max min)))))))
(eal-define-keys-commonly
 global-map
 `(("C-x l" count-brf-lines)
   ("C-x L" (lambda () (interactive) (count-brf-lines t)))))
 
;; 增加更丰富的高亮
(require 'generic-x)
 
(defun switch-to-scratch ()
  "切换到*scratch*"
  (interactive)
  (let ((buffer (get-buffer-create "*scratch*")))
    (switch-to-buffer buffer)
    (unless (equal major-mode 'lisp-interaction-mode)
      (lisp-interaction-mode))))
(global-set-key (kbd "C-x s") 'switch-to-scratch)
 
(defun visit-.emacs ()
  "访问.emacs文件"
  (interactive)
  (find-file (concat my-emacs-path ".emacs")))
(global-set-key (kbd "C-x E") 'visit-.emacs)
 
;; grep
(require 'grep-settings)
 
;; ack-grep, grep纯perl的代替品
(require 'full-ack-settings)
 
(eal-define-keys-commonly
 global-map
 `(("M-r"     query-replace-sb)
   ("M-%"     query-replace-sb)
   ("ESC M-%" query-replace-regexp-sb)
   ("ESC M-r" query-replace-regexp-sb)
   ("C-x M-r" query-replace-regexp-sb)
   ("M-z"     zap-to-char-sb)
   ("C-j"     goto-line)
   ("C-x C-s" save-buffer-sb)))
 
(am-add-hooks
 `(find-file-hook)
 (lambda ()
   (local-set-key (kbd "C-M-j") 'goto-line)))
 
;; 返回到最近去过的地方
(require 'recent-jump-settings)
 
;; 统计命令使用频率
(require 'command-frequence)
 
;; Emacs中的文本浏览器w3m
;; http://emacser.com/w3m.htm
(require 'w3m-settings)
 
;; 以另一用户编辑文件, 或者编辑远程主机文件
(require 'tramp-settings)
 
;; erc: Emacs中的IRC
;; ERC使用简介 emacser.com/erc.htm
(require 'erc-settings)
 
;; spell check
(setq-default ispell-program-name "aspell")
 
(define-key global-map (kbd "C-q") 'quoted-insert-sb)
 
;; Emacs中的包管理器
(require 'package)
(package-initialize)
 
(require 'auto-install)
(setq auto-install-directory (concat my-emacs-lisps-path "auto-install"))
 
(unless mswin
  (defun install-.emacs ()
    (interactive)
    (shell-command (concat my-emacs-path "install.emacs.sh")))
 
  (add-hook 'kill-emacs-hook 'install-.emacs))
 
;; 把pdf,ps,dvi文件转换为png格式, 在Emacs里面浏览
(if is-after-emacs-23
  (require 'doc-view)
  (setq doc-view-conversion-refresh-interval 3))
 
;; 在Emacs里面使用shell
(require 'term-settings)
(require 'multi-term-settings)
 
;; (require 'anything-settings)
 
(require 'ioccur)
 
;; 查询天气预报
(require 'weather-settings)
 
;; 可以把光标由方块变成一个小长条
(require 'bar-cursor)
 
(defun goto-my-emacs-lisps-dir ()
  "Goto `my-emacs-lisps-path'."
  (interactive)
  (dired my-emacs-lisps-path))
(defun goto-my-emacs-my-lisps-dir ()
  "Goto `my-emacs-my-lisps-path'."
  (interactive)
  (dired my-emacs-my-lisps-path))
(defun goto-my-emacs-dir ()
  "Goto `my-emacs-path'."
  (interactive)
  (dired my-emacs-path))
(defun goto-my-home-dir ()
  "Goto my home directory."
  (interactive)
  (dired "~"))
(define-key-list
 global-map
 `(("C-x G l" goto-my-emacs-lisps-dir)
   ("C-x G m" goto-my-emacs-my-lisps-dir)
   ("C-x G e" goto-my-emacs-dir)
   ("C-x M-H" goto-my-home-dir)))
 
(define-key global-map (kbd "C-x M-c") 'describe-char)
 
;; 启动Emacs的时候最大化Emacs
(require 'maxframe-settings)
 
(defun dos2unix ()
  "dos2unix on current buffer."
  (interactive)
  (set-buffer-file-coding-system 'unix))
 
(defun unix2dos ()
  "unix2dos on current buffer."
  (interactive)
  (set-buffer-file-coding-system 'dos))
 
(define-key global-map (kbd "C-x M-D") 'dos2unix)
 
(define-key-list
 global-map
 `(("C-x M-k" Info-goto-emacs-key-command-node)
   ("C-x ESC ESC" repeat-complex-command-sb)))
 
;; Emacs才是世界上最强大的IDE - 智能的改变光标形状
;; http://emacser.com/cursor-change.htm
(require 'cursor-change)
(cursor-change-mode 1)
 
(defun copy-file-name (&optional full)
  "Copy file name of current-buffer.
If FULL is t, copy full file name."
  (interactive "P")
  (let ((file (buffer-name)))
    (if full
        (setq file (expand-file-name file)))
    (kill-new file)
    (message "File `%s' copied." file)))
(eal-define-keys
 `(emacs-lisp-mode-map lisp-interaction-mode-map java-mode-map sh-mode-map
                       c-mode-base-map text-mode-map ruby-mode-map html-mode-map
                       java-mode-map conf-javaprop-mode-map conf-space-mode-map
                       python-mode-map)
 `(("C-c M-C" copy-file-name)))
 
;; notification tool
(require 'todochiku-settings)
 
;; twitter client
(require 'eagle-settings)
(require 'twit-settings)
 
;; 模拟vi的点(.)命令
(require 'dot-mode)
 
;; 用渐变颜色显示你最近的修改
;; http://emacser.com/highlight-tail.htm
;; 与semantic冲突,启动了它后,打开大文件的时候,会发现buffer大范围的刷屏
;; (require 'highlight-tail-settings)
 
;; Emacs才是世界上最强大的IDE - 用Emaci阅读文件
;; http://emacser.com/emaci.htm
(require 'emaci-settings)
 
;;;###autoload
(defun update-current-file-autoloads (file &optional save-after)
  "`update-file-autoloads' for current file."
  (interactive "fUpdate autoloads for file: \np")
  (let* ((load-file (expand-file-name "loaddefs.el"))
         (generated-autoload-file load-file))
    (unless (file-exists-p load-file)
      (shell-command (concat "touch " load-file)))
    (update-file-autoloads file save-after)))
 
;; 大纲mode
(require 'outline-settings)
 
;; org是一个非常强大的GTD工具
(require 'org-settings)
 
;; 强大的发布工具
(require 'muse-settings)
 
;; 用weblogger写WordPress博客
;; http://emacser.com/weblogger.htm
(require 'weblogger-settings)
 
;; 非常强大的文本画图的工具
(require 'artist-settings)
 
;; google-maps-el – Emacs中的谷歌地图
;; http://emacser.com/emacs-google-map.htm
(require 'google-maps-settings)
 
;; session,可以保存很多东西,例如输入历史(像搜索、打开文件等的输入)、
;; register的内容、buffer的local variables以及kill-ring和最近修改的文件列表等。非常有用。
(require 'session-settings)
 
;; 王纯业的desktop, 比desktop快多了
(require 'wcy-desktop-settings)
 
;; HACK: 要放在最后,免得会出现比较奇怪的现象
;; 保存和恢复工作环境
;; desktop,用来保存Emacs的桌面环境 — buffers、以及buffer的文件名、major modes和位置等等
;; (require 'desktop-settings)
 
(sb-update)

分享家:Addthis中国
GD Star Rating
loading...
我的Emacs配置文件 - DEA, 9.3 out of 10 based on 24 ratings 标签:ahei, autoload, CEDET, cursor, cursor-change, doremi, ede, ediff, emaci, Emacs, emacser, emacser.com, erc, eval-after-load, face, highlight, highlight-tail, icicle, icicles, IDE, irc, lambda, mode-line, org, palette, scratch, screenshot, select-buffer, semantic, term, theme, ubuntu, weblogger, windows, 光标, 截图, 浏览器, 王纯业, 看文档, 行号, 补全, 配色, 颜色, 鼠标

相关日志

分类: DEA, 中级, 配置
  1. waipy
    2012年5月29日18:56 | #1

    我在用你的dea配置做php开发,有些问题不知道怎么修改

    比如我前常用的M-.被绑定为其它的命令

    generate-tag-table 这个生成标签的令,也不能正确的输出php的 TAGS文件

    因为很多php源文件后缀多是 inc module 等等其它的我修改了
    generate-tag-table这个函数,但是不行,我的lisp知识太有限了,复杂的lisp写不了,改也没有改对

    (defun generate-tag-table ()
    “Generate tag tables under current directory(Linux).”
    (interactive)
    (let ((exp “”) (dir “”) (language “”))
    (setq dir (read-from-minibuffer “generate tags in: ” default-directory)
    exp (read-from-minibuffer “suffix: “)
    language (read-from-minibuffer “language: “))
    (with-temp-buffer
    (shell-command
    (concat “find ” dir ” -name \”" exp “\” | xargs etags –language=” language)
    (buffer-name)))))

    [回复]

  2. waipy
    2012年5月30日09:59 | #2

    如何关闭semantic 对php文件的分析,不使用 .semanticdb下的数据

    [回复]

    waipy 回复:

    @waipy,
    我发了好长时间终于找到在php文件中不能正常使用 find-tag的原因是

    .emacs中
    (require ‘wcy-desktop-settings)

    把它注释掉就可以了

    [回复]

    ahei 回复:

    啊?竟然是它?有空试试…

    [回复]

  3. lisper
    2012年6月8日08:26 | #3

    请教下楼主 安装完emacs+slime+sbcl,路径也写了,但是M-X slime之后就显示NO MATCH?这是什么情况

    [回复]

  4. Maxwell
    2012年6月12日20:28 | #4

    请问能兼容Emacs 24吗?

    [回复]

  5. 2012年7月26日16:19 | #5

    emacs24发布了 不知道楼主有没有更新啊 好像有些不兼容哦

    [回复]

    ahei 回复:

    @Jove Yu, 还没呢

    [回复]

  6. 刑天
    2012年9月4日23:32 | #6

    楼主windows里面,Emacs怎么调用Scheme

    [回复]

  7. hackstart
    2012年9月27日14:17 | #7

    求博主QQ或gtalk帐号,愿拜师。

    [回复]

    ahei 回复:

    呵呵,看关于页面

    [回复]

    hackstart 回复:

    @ahei, gtalk 已加,twitter已follow. :-P

    [回复]

  8. rosrad
    2012年10月10日10:36 | #8

    同求博主QQ, 学艺

    [回复]

  9. hackstart
    2012年10月16日17:44 | #9

    说说这几天来 折腾emacs的感触。
    网上总是很多人 放出自己的配置, 包括starter kit 等等,但是所有这些,包括楼主这篇,一点用处没有。
    1、只会增加入门难度,而且不容易看到原生的效果。emacs不是Elispe, 随便找个插件往目录一扔,就能无脑用了。
    2、学emacs 就应该先有写基础,在写写配置,最后折腾插件。会玩的不会用你的配置,需要什么自己配比改别人的容易,而且稳定。其实这么长一篇博客,你不如直接把你的插件名,用处罗列下,这样用处更大。
    3、网上很多人的配置,包括这个都是没有经过测试,甚至安装也是各种问题,加上相应说明文档的极度匮乏,可以认定这只是在耽误大家时间而已。自由软件的通病。
    4、唯一的用处或许就是 那些玩的很熟的,先尝试的新玩法回去看看别人的配置,对比下。这点不如去emacs wiki.
    想我发一个多星期先安装你的配置文件用,真是傻到家了。没办法,总是难免走弯路,建议下在头上大字注明 轻易使用,后果自负。

    [回复]

    ahei 回复:

    你可能没有看到我的文章中这句话吧:
    不建议初学者直接使用DEA,初学者请看这里, DEA的主要目的是提供给Emacser们一个非常全的配置例子, 每个人可以从中获取一些东西. 直接拿DEA作为自己的配置是不太适合的, 因为里面毕竟有很多我个人的配置, 也许不适合你.

    [回复]

    hackstart 回复:

    呵呵,发帖子的时候情绪话了点。主要是搞鼓了一个多星期还是解决不了报错问题。 最后只能删掉回到零配置状态。 不过我在电脑里保存了你的配置,以后emacs学入门了。会去参见下的。
    抱歉了。 :mrgreen:

    [回复]

  10. maxwell
    2012年11月13日15:02 | #10

    DEA与display-time不兼容吗? 想在modeline上增加display-time,貌似没有效果。
    我的修改方式是在my.emacs里增加
    (defface egoge-display-time
    ‘((((type x w32 mac))
    ;; #060525 is the background colour of my default face.
    (:foreground “#060525″ :inherit bold))
    (((type tty))
    (:foreground “blue”)))
    “Face used to display the time in the mode line.”)
    ;; This causes the current time in the mode line to be displayed in
    ;; `egoge-display-time-face’ to make it stand out visually.
    (setq display-time-string-forms
    ‘((propertize (concat ” ” 24-hours “:” minutes ” “)
    ‘face ‘egoge-display-time)))
    但是没有任何效果出现。不知道为什么?

    [回复]

评论分页
  1. 2012年1月6日09:57 | #1
  2. 2012年1月6日09:59 | #2
  3. 2013年7月27日17:42 | #3
  4. 2014年6月3日04:41 | #4
  5. 2014年6月3日05:01 | #5
  6. 2014年6月3日06:06 | #6
  7. 2014年6月3日06:13 | #7
  8. 2014年6月3日06:22 | #8
  9. 2014年6月3日06:37 | #9
  10. 2014年6月5日11:21 | #10
  11. 2014年6月5日11:27 | #11
  12. 2014年6月27日13:48 | #12
  13. 2014年6月27日13:53 | #13
  14. 2014年6月27日13:55 | #14
  15. 2014年6月29日17:26 | #15
  16. 2014年7月2日19:52 | #16
:wink: :-| :-x :twisted: :) 8-O :( :roll: :-P :oops: :-o :mrgreen: :lol: :idea: :-D :evil: :cry: 8) :arrow: :-? :?: :!: