Emacs中的几个不太常见的设置汇集(转载)

我在这里说的"不常见", 是指的在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)



6月23日更新第6项

10月27日更新第7项C语言代码风格


最后由 fengzishaoye 编辑于 2008-10-27 23:29,总共编辑了 2 次
原文出自: http://forum.ubuntu.org.cn/viewtopic.php?f=68&t=131525&p=984499

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值