我在这里说的"不常见", 是指的在google上不常见, 而不是我们不常用到的, 至少我认为挺有用的.
在这里总结一下, 分享给大家.
注:此帖是我总结的, 但里面的配置都是google出来的, 不是我发明的 :P
1. 有些人想在tty下启动emacs, 比如说我. 因为要是想连续写几个小时, 甚至十几个小时程序, tty下还是比较舒
服的(不闪的才是健康的嘛 :P), 但是配置文件中的有些配置, 比如xft字体什么的在tty下肯定是用不了, 会导致启
动emacs失败. 于是就有:
代码:
(if (not window-system) nil
;;gui下的专有配置, 比如xft字体, 启动最大化一类的配置写在这
)
这样, 一个配置文件就可以"两用"了.
2.在minibuffer上面那个横杠上显示时间, 相信很多人都用的是
代码:
(display-time-mode 1) ;;启用时间显示设置
(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) ;;时间的变化频率
结果显示是"6 月 19", 和后面的混在一起, 很不好看.
于是可以在上面的配置后面跟上两句:
代码:
(setq display-time-format " %Y-%m-%d %A %H:%M ") ;;设定日期时间的格式
(display-time) ;;这句可能用不着
这样就好看多了.
3.在emacs里man. emacs里的man被称作woman(WithOut man, 搞笑的创意), 配置如下:
代码:
(global-set-key [(f1)] (lambda() ;;设定F1为woman快捷键
(interactive)
(let ((woman-topic-at-point t))
(woman))))
(setq woman-use-own-frame nil) ;; WoMan不打开新的 frame, 你可能会想要这个配置
4.在emacs里查词典, 这个有点麻烦.
----a.安装sdcv. 不知道是什么的就google一下, 比我讲的要清楚.
代码:
sudo apt-get install sdcv
----b.去http://stardict.sourceforge.net/Dictionaries.php下载你想要的词典, 那一页
也有词典的安装方法.
----c.去http://code.google.com/p/sdcv-mode/下载sdcv-mode.el, 放在你的插件库里.
----d.在你的emacs配置文件里加上:
代码:
(require 'sdcv-mode)
(global-set-key (kbd "C-c d") 'sdcv-search)
----e.在你的emacs里看到一个英文词不爽, 就Ctrl+c d.
5.在emacs里面聊MSN, Gtalk(很遗憾, 不支持QQ). 这个我只能提示一下, 用bitlbee, 然后配合erc, 详细的我
也没有弄明白, 非常抱歉.
6.在写程序的时候, 也许会打开两个 main.c, 有时候你会搞糊涂哪个是哪个. 假如标题栏上有文件的路径多好,于
是:
代码:
;;;Emacs title bar to reflect file name
(defun frame-title-string ()
"Return the file name of current buffer, using ~ if under home directory"
(let
((fname (or
(buffer-file-name (current-buffer))
(buffer-name))))
;;let body
(when (string-match (getenv "HOME") fname)
(setq fname (replace-match "~" t t fname)) )
fname))
;;; Title = 'system-name File: foo.bar'
(setq frame-title-format '("" system-name " File: "(:eval(frame-title-string))))
好了, 就这些了, 希望我上边的这些配置中有你想要的.
同时我也想在这求助一下, 是关于cc-mode里编程风格的设置问题, 我比较喜欢FreeBSD内核的编程风格, 它其中有
一条规定是, 假如一句话(通常是if/while 和 有很长参数列表的函数)很长, 那么二级缩进1/2个tab. 如下:
代码:
if (sysctlbyname("kern.init_shutdown_timeout", &shutdowntimeout, &len,
NULL, 0) == -1 || shutdowntimeout < 2)
或
代码:
emergency("fatal signal: %s",
(unsigned)sig < NSIG ? sys_siglist[sig] : "unknown signal");
不知道配置文件怎么写才能实现. 有谁知道请跟帖告诉我, 同时也分享给大家. 如果同时也能给我发封邮件直接告诉
我, 我将感激不尽, 因为我不是经常泡论坛. fengzi.gg {at} google.com
7. 谢谢8楼得回帖, 上面这个问题已经解决, C语言的BSD内核风格缩进的配置如下:
代码:
;;--------------------CC-mode配置 http://cc-mode.sourceforge.net/
;; http://docs.freebsd.org/cgi/getmsg.cgi?fetch=26277+0+archive/2001/freebsd-standards/20011230.freebsd-standards
(require 'cc-mode)
(defun my-c-mode-hook ()
"happy hacking."
(interactive)
(c-set-style "bsd")
(setq tab-width 8 ;; TAB键的宽度设置为8
c-basic-offset 8
indent-tabs-mode t ;; 使用TAB缩进
c-tab-always-indent nil) ;;也使用TAB的原有功能
(setq c-cleanup-list (append c-cleanup-list (list 'brace-else-brace)))
(c-set-offset 'arglist-close 0)
(c-set-offset 'arglist-cont-nonempty 4)
(c-set-offset 'inline-open 0)
(c-set-offset 'case-label 0)
(c-set-offset 'statement-cont 4)
(c-toggle-auto-state -1) ;;不用自动换行/1表示自动换行
(c-toggle-hungry-state) ;; 此模式下,当按Backspace时会删除最多的空格
(define-key c-mode-map [return] 'newline-and-indent) ;; 将回车代替C-j的功能,换行的同时对齐
(define-key c-mode-map "/C-ce" 'c-comment-edit) ;;写注释
)
(add-hook 'c-mode-hook 'my-c-mode-hook)