LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: joanphan

和兄弟姐妹们讨论和推广emacs

[复制链接]
发表于 2005-4-4 17:19:23 | 显示全部楼层
请教个问题:请问在C++模式下怎么样实现下面这个C模式:
;; c-mode
(add-hook 'c-mode-hook
          '(lambda ()
             (hl-line-mode)
             (setq c-default-style "python")
             (setq c-basic-offset 4
                   tab-width 8
                   indent-tabs-mode t)
             (c-toggle-auto-state 1)))
回复 支持 反对

使用道具 举报

发表于 2006-7-27 21:33:55 | 显示全部楼层
不小心,回车键怎么变成 set Mark, 如何取消?
回复 支持 反对

使用道具 举报

发表于 2006-7-27 21:42:16 | 显示全部楼层
在哪里设置的去掉那条语句就可以了。
回复 支持 反对

使用道具 举报

发表于 2006-7-27 22:58:58 | 显示全部楼层
Post by kingling
搞了好几天的emacs的配置,参考了网上的一些资源,实现了emacs在保存某个目录下的.el文件自动编译为.elc文件。
(我还是emacs newbie,所以程序还是很ugly,请大家多见谅!)


  1. (defconst dotemacs-basic-conf-dir "~/.emacs.d/config/basic-conf/")
  2. (defconst dotemacs-ext-elisp-dir "~/.emacs.d/config/ext-elisp/")
  3. (defconst dotemacs-program-dir "~/.emacs.d/config/program/")

  4. (defun autocompile nil
  5.   "automagically compile changes to .emacs and other dotfiles"
  6.   (interactive)
  7.   (cond ((string= (buffer-file-name) (concat default-directory ".emacs"))
  8.                (byte-compile-file (buffer-file-name)))
  9.         
  10.         ((string= (abbreviate-file-name (buffer-file-name))
  11.                (concat dotemacs-basic-conf-dir
  12.                        (replace-regexp-in-string "\\.el" "" (buffer-name)) ".el"))
  13.                (byte-compile-file (buffer-file-name)))
  14.         
  15.        ((string= (abbreviate-file-name (buffer-file-name))
  16.                (concat dotemacs-ext-elisp-dir
  17.                        (replace-regexp-in-string "\\.el" "" (buffer-name)) ".el"))
  18.                (byte-compile-file (buffer-file-name)))
  19.         
  20.        ((string= (abbreviate-file-name (buffer-file-name))
  21.                (concat dotemacs-program-dir
  22.                        (replace-regexp-in-string "\\.el" "" (buffer-name)) ".el"))
  23.                (byte-compile-file (buffer-file-name)))
  24.         )

  25.   )
  26. (add-hook 'after-save-hook 'autocompile)
复制代码

[color="Magenta"]
你这段代码行吗?我没用过,这是我在这个网站上找的两个解决方法:
http://grid.tsinghua.edu.cn/home/liulk/publish/emacs/EmacsFaq.html#sec-7

  1. emacs-lisp-mode

  2. 1. 再emacs中编译整个目录下的.el文件输入 [Alt]-x 。 当提示输入命令时,输入
  3.        byte-force-recompile [Enter] 。
  4. 2. 如何再emacs下编译整个目录下的*.el文件两个办法,一是在dired里面用m标记,然后用B编译还有就是用emacs的批处理:

  5. emacs -batch -f batch-byte-compile *.el

复制代码

回复 支持 反对

使用道具 举报

发表于 2006-11-25 23:25:13 | 显示全部楼层
这个,这个...,哎,差距太大了,慢慢学吧
回复 支持 反对

使用道具 举报

发表于 2008-10-24 15:11:19 | 显示全部楼层
不知道此帖是否依旧有人关注,很多配置都是抄的这个地方的,十分感谢楼主。

学习了几天想全面转向emacs却出了点问题
1,erc默认72(?)个字符自动换行不知道是什么问题。
2,想用gnus查收gmail邮件和上新闻组,但是无论怎么配置都是显示“Symbol's value as variable is void: gnus-secondary-select-methods”
有人说是emacs-cvs默认已经包含了gnus不需要再安装gnus的包了所以就又把gnus卸载了。

  1. gnus配置
  2. require 'nnmairix)
  3. ; 接收邮件或新闻
  4. (setq user-mail-address cbkidlll097@gmail.com)              ;邮件地址
  5. (setq gnus-select-method '(nntp "localhost")) ;首要选择方法, 从本地缓冲文件中读取新闻 (leafnode抓取)
  6. (setq gnus-refer-article-method '(nntp "localhost")) ;抓取文章的方法, 和 `gnus-select-method' 一样
  7. (setq gnus-secondary-select-methods                  ;次要选择方法
  8.       '(
  9.         (nnmaildir "Gmail"                        ;nnmaildir后端, 从本地文件中读邮件 (getmail 抓取)
  10.                    (directory "~/MyEmacs/Mail/")) ;读取目录
  11.         ))
  12. (setq mail-sources                                 ;邮件源设置
  13.       '((maildir :path "~/MyEmacs/Mail/"           ;本地邮件存储位置
  14.                  :subdirs ("cur" "new" "tmp"))))   ;本地邮件子目录划分
  15. ;; 发送邮件
  16. (setq send-mail-function 'sendmail-send-it         ;设置邮件发送方法
  17.       message-send-mail-function 'sendmail-send-it ;设置消息发送方法
  18.       sendmail-program "/usr/bin/msmtp"            ;设置发送程序
  19.       mail-specify-envelope-from t                 ;发送邮件时指定信封来源
  20.       mail-envelope-from 'header)                  ;信封来源于 header
  21. (setq gnus-message-archive-group                   ;设置消息归档的组
  22.       '((if (message-news-p)
  23.             "nnfolder+archive:nnfolder" ;新闻归档
  24.           "nnmaildir+Gmail:inbox"))     ;邮件归档
  25.       )
  26. ;; 常规设置
  27. (gnus-agentize)                           ;开启代理功能, 以支持离线浏览
  28. (setq gnus-inhibit-startup-message t)     ;关闭启动时的画面
  29. (setq gnus-novice-user nil)               ;关闭新手设置, 不进行确认
  30. (setq gnus-expert-user t)                 ;不询问用户
  31. (setq gnus-show-threads t)                ;显示邮件线索
  32. (setq gnus-interactive-exit nil)          ;退出时不进行交互式询问
  33. (setq gnus-use-dribble-file nil)          ;不创建恢复文件
  34. (setq gnus-always-read-dribble-file nil)  ;不读取恢复文件
  35. (setq gnus-asynchronous t)                ;异步操作
  36. (setq gnus-large-newsgroup nil)           ;设置大容量的新闻组打开不要确认
  37. (setq gnus-large-ephemeral-newsgroup nil) ;和上面的变量一样, 只不过对于短暂的新闻组
  38. (setq gnus-summary-ignore-duplicates t)   ;忽略具有相同ID的消息
  39. (setq nnmail-expiry-wait 7)               ;邮件自动删除的期限 (单位: 天)
  40. ;; 窗口布局
  41. (gnus-add-configuration
  42. '(article
  43.    (vertical 1.0
  44.              (summary .35 point)
  45.              (article 1.0))))
  46. ;; 显示设置
  47. (setq mm-text-html-renderer 'w3m)                     ;用W3M显示HTML格式的邮件
  48. (auto-image-file-mode)                                ;自动加载图片
  49. (setq mm-inline-large-images t)                       ;显示内置图片
  50. (add-to-list 'mm-attachment-override-types "image/*") ;附件显示图片
  51. ;; 邮件搜索
  52. (setq nnmairix-allowfast-default t)     ;加快进入搜索结果的组
  53. ;; 消息风格
  54. (setq message-from-style 'angles)
  55. (setq message-syntax-checks '((sender . disabled)))
  56. ;; 概要显示设置
  57. (setq gnus-summary-gather-subject-limit 'fuzzy) ;聚集题目用模糊算法
  58. (setq gnus-summary-line-format "%4P %U%R%z%O %{%5k%} %{%14&user-date;%}   %{%-20,20n%} %{%ua%} %B %(%I%-60,60s%)\n")
  59. (defun gnus-user-format-function-a (header) ;用户的格式函数对应于 `gnus-summary-line-format' 中的 `%ua'
  60.   (let ((myself (concat "<cbkidlll097@gmail>"))
  61.         (references (mail-header-references header))
  62.         (message-id (mail-header-id header)))
  63.     (if (or (and (stringp references)
  64.                  (string-match myself references))
  65.             (and (stringp message-id)
  66.                  (string-match myself message-id)))
  67.         "X" "│")))
  68. ;; 时间显示
  69. (add-hook 'gnus-article-prepare-hook 'gnus-article-date-local) ;将邮件的发出时间转换为本地时间
  70. (add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp)   ;跟踪组的时间轴
  71. (add-hook 'gnus-group-mode-hook 'gnus-topic-mode)              ;新闻组分组
  72. (setq gnus-user-date-format-alist                              ;格式化时间信息
  73.       '(((gnus-seconds-today) . "TD %H:%M")                    ;当天
  74.         (604800 . "W%w %H:%M")                                 ;七天之内
  75.         ((gnus-seconds-month) . "%d %H:%M")                    ;当月
  76.         ((gnus-seconds-year) . "%m-%d %H:%M")                  ;今年
  77.         (t . "%y-%m-%d %H:%M")))                               ;其他
  78. ;; 线程的可视化外观
  79. (setq gnus-summary-same-subject "")
  80. (setq gnus-sum-thread-tree-indent "    ")
  81. (setq gnus-sum-thread-tree-single-indent "◎ ")
  82. (setq gnus-sum-thread-tree-root "● ")
  83. (setq gnus-sum-thread-tree-false-root "☆")
  84. (setq gnus-sum-thread-tree-vertical "│")
  85. (setq gnus-sum-thread-tree-leaf-with-other "├─► ")
  86. (setq gnus-sum-thread-tree-single-leaf "╰─► ")
  87. ;; 设置邮件报头显示的信息
  88. (setq gnus-visible-headers
  89.       (mapconcat 'regexp-quote
  90.                  '("From:" "Newsgroups:" "Subject:" "Date:"
  91.                    "Organization:" "To:" "Cc:" "Followup-To" "Gnus-Warnings:"
  92.                    "X-Sent:" "X-URL:" "User-Agent:" "X-Newsreader:"
  93.                    "X-Mailer:" "Reply-To:" "X-Spam:" "X-Spam-Status:" "X-Now-Playing"
  94.                    "X-Attachments" "X-Diagnostic")
  95.                  "\\|"))
  96. ;; 用 Supercite 显示多种多样的引文形式
  97. (setq sc-attrib-selection-list nil
  98.       sc-auto-fill-region-p nil
  99.       sc-blank-lines-after-headers 1
  100.       sc-citation-delimiter-regexp "[>]+\\|\\(: \\)+"
  101.       sc-cite-blank-lines-p nil
  102.       sc-confirm-always-p nil
  103.       sc-electric-references-p nil
  104.       sc-fixup-whitespace-p t
  105.       sc-nested-citation-p nil
  106.       sc-preferred-header-style 4
  107.       sc-use-only-preference-p nil)
  108. ;;有些用web方式发出的邮件里有html,加入下面的设置,只看其中的 plain text 部分
  109. (eval-after-load "mm-decode"
  110.   '(progn
  111.      (add-to-list 'mm-discouraged-alternatives "text/html")
  112.      (add-to-list 'mm-discouraged-alternatives "text/richtext")))
  113. (defalias 'mail-header-encode-parameter 'rfc2047-encode-parameter)
  114. ;; 防止误发邮件, 发邮件前需要确认
  115. (defadvice message-send (around my-confirm-message-send)
  116.   (if (yes-or-no-p "Really send message? ")
  117.       ad-do-it))
  118. (ad-activate 'message-send)
  119. ;; 线程设置
  120. (setq
  121. gnus-fetch-old-headers 'some                                           ;抓取老的标题以联系线程
  122. gnus-use-trees t                                                       ;联系老的标题
  123. gnus-generate-tree-function 'gnus-generate-horizontal-tree             ;生成水平树
  124. gnus-summary-thread-gathering-function 'gnus-gather-threads-by-subject ;聚集函数根据标题聚集
  125. gnus-tree-minimize-window nil)                                         ;用最小窗口显示
  126. ;; 排序
  127. (setq gnus-thread-sort-functions
  128.       '(
  129.         (not gnus-thread-sort-by-date)                       ;时间的逆序
  130.         (not gnus-thread-sort-by-number)))                   ;跟踪的数量的逆序
  131. ;; 自动更新新消息
  132. (run-with-timer 0 gnus-update-news-repeat 'gnus-update-news) ;在 mode-line 显示新的消息
  133. (add-hook 'gnus-summary-exit-hook 'gnus-update-news) ;退出 summary 模式时, 自动更行 新消息的数量
  134. ;; 条纹状 Summary buffer
  135. (add-hook 'gnus-summary-prepare-hook
  136.           (lambda ()
  137.             (stripe-buffer-on gnus-summary-buffer)))
  138. (add-hook 'gnus-summary-exit-hook
  139.           (lambda ()
  140.             (stripe-buffer-off gnus-summary-buffer)))
  141. ;; 最后设置
  142. (gnus-compile)                          ;编译一些选项, 加快速度


复制代码
回复 支持 反对

使用道具 举报

发表于 2008-10-24 15:12:23 | 显示全部楼层
不知道此帖是否依旧有人关注,很多配置都是抄的这个地方的,十分感谢楼主。

学习了几天想全面转向emacs却出了点问题
1,erc默认72(?)个字符自动换行不知道是什么问题。
2,想用gnus查收gmail邮件和上新闻组,但是无论怎么配置都是显示“Symbol's value as variable is void: gnus-secondary-select-methods”
有人说是emacs-cvs默认已经包含了gnus不需要再安装gnus的包了所以就又把gnus卸载了。
回复 支持 反对

使用道具 举报

发表于 2008-10-24 15:13:04 | 显示全部楼层
  1. gnus配置
  2. require 'nnmairix)
  3. ; 接收邮件或新闻
  4. (setq user-mail-address cbkidlll097@gmail.com)              ;邮件地址
  5. (setq gnus-select-method '(nntp "localhost")) ;首要选择方法, 从本地缓冲文件中读取新闻 (leafnode抓取)
  6. (setq gnus-refer-article-method '(nntp "localhost")) ;抓取文章的方法, 和 `gnus-select-method' 一样
  7. (setq gnus-secondary-select-methods                  ;次要选择方法
  8.       '(
  9.         (nnmaildir "Gmail"                        ;nnmaildir后端, 从本地文件中读邮件 (getmail 抓取)
  10.                    (directory "~/MyEmacs/Mail/")) ;读取目录
  11.         ))
  12. (setq mail-sources                                 ;邮件源设置
  13.       '((maildir :path "~/MyEmacs/Mail/"           ;本地邮件存储位置
  14.                  :subdirs ("cur" "new" "tmp"))))   ;本地邮件子目录划分
  15. ;; 发送邮件
  16. (setq send-mail-function 'sendmail-send-it         ;设置邮件发送方法
  17.       message-send-mail-function 'sendmail-send-it ;设置消息发送方法
  18.       sendmail-program "/usr/bin/msmtp"            ;设置发送程序
  19.       mail-specify-envelope-from t                 ;发送邮件时指定信封来源
  20.       mail-envelope-from 'header)                  ;信封来源于 header
  21. (setq gnus-message-archive-group                   ;设置消息归档的组
  22.       '((if (message-news-p)
  23.             "nnfolder+archive:nnfolder" ;新闻归档
  24.           "nnmaildir+Gmail:inbox"))     ;邮件归档
  25.       )
  26. ;; 常规设置
  27. (gnus-agentize)                           ;开启代理功能, 以支持离线浏览
  28. (setq gnus-inhibit-startup-message t)     ;关闭启动时的画面
  29. (setq gnus-novice-user nil)               ;关闭新手设置, 不进行确认
  30. (setq gnus-expert-user t)                 ;不询问用户
  31. (setq gnus-show-threads t)                ;显示邮件线索
  32. (setq gnus-interactive-exit nil)          ;退出时不进行交互式询问
  33. (setq gnus-use-dribble-file nil)          ;不创建恢复文件
  34. (setq gnus-always-read-dribble-file nil)  ;不读取恢复文件
  35. (setq gnus-asynchronous t)                ;异步操作
  36. (setq gnus-large-newsgroup nil)           ;设置大容量的新闻组打开不要确认
  37. (setq gnus-large-ephemeral-newsgroup nil) ;和上面的变量一样, 只不过对于短暂的新闻组
  38. (setq gnus-summary-ignore-duplicates t)   ;忽略具有相同ID的消息
  39. (setq nnmail-expiry-wait 7)               ;邮件自动删除的期限 (单位: 天)
  40. ;; 窗口布局
  41. (gnus-add-configuration
  42. '(article
  43.    (vertical 1.0
  44.              (summary .35 point)
  45.              (article 1.0))))
  46. ;; 显示设置
  47. (setq mm-text-html-renderer 'w3m)                     ;用W3M显示HTML格式的邮件
  48. (auto-image-file-mode)                                ;自动加载图片
  49. (setq mm-inline-large-images t)                       ;显示内置图片
  50. (add-to-list 'mm-attachment-override-types "image/*") ;附件显示图片
  51. ;; 邮件搜索
  52. (setq nnmairix-allowfast-default t)     ;加快进入搜索结果的组
  53. ;; 消息风格
  54. (setq message-from-style 'angles)
  55. (setq message-syntax-checks '((sender . disabled)))
  56. ;; 概要显示设置
  57. (setq gnus-summary-gather-subject-limit 'fuzzy) ;聚集题目用模糊算法
  58. (setq gnus-summary-line-format "%4P %U%R%z%O %{%5k%} %{%14&user-date;%}   %{%-20,20n%} %{
  59. %} %B %(%I%-60,60s%)\n")
  60. (defun gnus-user-format-function-a (header) ;用户的格式函数对应于 `gnus-summary-line-format' 中的 `
  61. '
  62.   (let ((myself (concat "<cbkidlll097@gmail>"))
  63.         (references (mail-header-references header))
  64.         (message-id (mail-header-id header)))
  65.     (if (or (and (stringp references)
  66.                  (string-match myself references))
  67.             (and (stringp message-id)
  68.                  (string-match myself message-id)))
  69.         "X" "│")))
  70. ;; 时间显示
  71. (add-hook 'gnus-article-prepare-hook 'gnus-article-date-local) ;将邮件的发出时间转换为本地时间
  72. (add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp)   ;跟踪组的时间轴
  73. (add-hook 'gnus-group-mode-hook 'gnus-topic-mode)              ;新闻组分组
  74. (setq gnus-user-date-format-alist                              ;格式化时间信息
  75.       '(((gnus-seconds-today) . "TD %H:%M")                    ;当天
  76.         (604800 . "W%w %H:%M")                                 ;七天之内
  77.         ((gnus-seconds-month) . "%d %H:%M")                    ;当月
  78.         ((gnus-seconds-year) . "%m-%d %H:%M")                  ;今年
  79.         (t . "%y-%m-%d %H:%M")))                               ;其他
  80. ;; 线程的可视化外观
  81. (setq gnus-summary-same-subject "")
  82. (setq gnus-sum-thread-tree-indent "    ")
  83. (setq gnus-sum-thread-tree-single-indent "◎ ")
  84. (setq gnus-sum-thread-tree-root "● ")
  85. (setq gnus-sum-thread-tree-false-root "☆")
  86. (setq gnus-sum-thread-tree-vertical "│")
  87. (setq gnus-sum-thread-tree-leaf-with-other "├─► ")
  88. (setq gnus-sum-thread-tree-single-leaf "╰─► ")
  89. ;; 设置邮件报头显示的信息
  90. (setq gnus-visible-headers
  91.       (mapconcat 'regexp-quote
  92.                  '("From:" "Newsgroups:" "Subject:" "Date:"
  93.                    "Organization:" "To:" "Cc:" "Followup-To" "Gnus-Warnings:"
  94.                    "X-Sent:" "X-URL:" "User-Agent:" "X-Newsreader:"
  95.                    "X-Mailer:" "Reply-To:" "X-Spam:" "X-Spam-Status:" "X-Now-Playing"
  96.                    "X-Attachments" "X-Diagnostic")
  97.                  "\\|"))
  98. ;; 用 Supercite 显示多种多样的引文形式
  99. (setq sc-attrib-selection-list nil
  100.       sc-auto-fill-region-p nil
  101.       sc-blank-lines-after-headers 1
  102.       sc-citation-delimiter-regexp "[>]+\\|\\(: \\)+"
  103.       sc-cite-blank-lines-p nil
  104.       sc-confirm-always-p nil
  105.       sc-electric-references-p nil
  106.       sc-fixup-whitespace-p t
  107.       sc-nested-citation-p nil
  108.       sc-preferred-header-style 4
  109.       sc-use-only-preference-p nil)
  110. ;;有些用web方式发出的邮件里有html,加入下面的设置,只看其中的 plain text 部分
  111. (eval-after-load "mm-decode"
  112.   '(progn
  113.      (add-to-list 'mm-discouraged-alternatives "text/html")
  114.      (add-to-list 'mm-discouraged-alternatives "text/richtext")))
  115. (defalias 'mail-header-encode-parameter 'rfc2047-encode-parameter)
  116. ;; 防止误发邮件, 发邮件前需要确认
  117. (defadvice message-send (around my-confirm-message-send)
  118.   (if (yes-or-no-p "Really send message? ")
  119.       ad-do-it))
  120. (ad-activate 'message-send)
  121. ;; 线程设置
  122. (setq
  123. gnus-fetch-old-headers 'some                                           ;抓取老的标题以联系线程
  124. gnus-use-trees t                                                       ;联系老的标题
  125. gnus-generate-tree-function 'gnus-generate-horizontal-tree             ;生成水平树
  126. gnus-summary-thread-gathering-function 'gnus-gather-threads-by-subject ;聚集函数根据标题聚集
  127. gnus-tree-minimize-window nil)                                         ;用最小窗口显示
  128. ;; 排序
  129. (setq gnus-thread-sort-functions
  130.       '(
  131.         (not gnus-thread-sort-by-date)                       ;时间的逆序
  132.         (not gnus-thread-sort-by-number)))                   ;跟踪的数量的逆序
  133. ;; 自动更新新消息
  134. (run-with-timer 0 gnus-update-news-repeat 'gnus-update-news) ;在 mode-line 显示新的消息
  135. (add-hook 'gnus-summary-exit-hook 'gnus-update-news) ;退出 summary 模式时, 自动更行 新消息的数量
  136. ;; 条纹状 Summary buffer
  137. (add-hook 'gnus-summary-prepare-hook
  138.           (lambda ()
  139.             (stripe-buffer-on gnus-summary-buffer)))
  140. (add-hook 'gnus-summary-exit-hook
  141.           (lambda ()
  142.             (stripe-buffer-off gnus-summary-buffer)))
  143. ;; 最后设置
  144. (gnus-compile)                          ;编译一些选项, 加快速度
复制代码
回复 支持 反对

使用道具 举报

发表于 2008-11-19 14:02:03 | 显示全部楼层
无法自动分类,代码如下,采用imap收到gmail邮件,用nnmail方式存储,想将CPyUG邮件列表单独列组
;; imap 依旧使用原来的 fancy split 方式
(setq nnimap-split-inbox '("INBOX"))
(setq nnimap-split-rule 'nnmail-split-fancy)
(setq nnmail-split-fancy
      `(| ;; 根据 mailing list 分类
        ("subject" "[CPyUG" "nnml:mail.CPyUG")
       ))
(setq gnus-invalid-group-regexp "[:`'\"]\\|^$")
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表