LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3314|回复: 1

还记得erc这个东东么?中文nick 中文topic 中文xxxxxx 或许不止中文 lol

[复制链接]
发表于 2004-9-25 01:04:32 | 显示全部楼层 |阅读模式
弄了好几天,弄出来这么个丑patch,见笑了。有兴趣的朋友帮忙测试一下效果


,----[ 附上一些俺的erc配置,加入到.emacs里面就可以了 ]
| ;; Erc settings
| (require 'erc-auto)
| (setq-default erc-auto-query 'buffer
|               erc-autojoin-channels-alist '(("linuxfire.dhis.org" "#linuxfire"))
|               erc-away-nickname "FKtPp[Away]"
|               erc-current-nick-highlight-type 'nick-or-keyword
|               erc-default-coding-system '(chinese-iso-8bit . chinese-iso-8bit)
|               erc-email-userid "fktpp"
|               erc-interpret-mirc-color t
|               erc-modules '(autojoin
|                             button
|                             completion
|                             fill
|                             match
|                             netsplit
|                             pcomplete
|                             ring
|                             stamp
|                             track)
|               erc-nick '("FKtPp[erc]" "Yamazak")
|               erc-paranoid t
|               erc-port 6667
|               erc-prompt-for-password t
|               erc-server "linuxfire.dhis.org")
`----

还有,关于这个erc-auto.el在make的时候,可能不会自动更新,至少在俺这里
是这样的。估计是因为那个Makefile的问题。

,----[ 这个地方是俺对那个Makefile的一点修改,根据自己的情况自己改一下吧 ]
| erc-auto.el: erc-auto.in $(SOURCE)
| #         cp erc-auto.in erc-auto.el
| #         rm -f erc-auto.elc
|         $(EMACS) --no-init-file --no-site-file -batch \
|                 -l e:/programs/emacs-21.3/site-lisp/erc-4.0/erc-auto \
|                 -f generate-autoloads \
|                 e:/programs/emacs-21.3/site-lisp/erc-4.0/erc-auto.el .
`----

还有一个从erc-auto.el学来的的函数。如果你通过修改Makefile的方式还不能
更新autoloads,那就用这个吧(也需要改改,抱歉,能力所不能及 -_- 太高级
的俺还不会写)。可以从这里弄到:

    http://linuxfire.dhis.org/~fktpp/fktpp-autoloads.el

,----[ decoding.diff ]
| --- erc-backend.el.orig        2004-09-09 00:27:22.618782400 +0800
| +++ erc-backend.el        2004-09-24 23:32:10.290606400 +0800
| @@ -151,8 +151,45 @@
|      (setf (erc-response.command-args msg)
|            (nreverse (erc-response.command-args msg)))
|  
| +    (erc-decode-parsed-server-response msg)
| +
|      (erc-handle-parsed-server-response proc msg)))))
|  
| +(defun erc-decode-parsed-server-response (parsed-response)
| +  "Decode a pre-parsed PARSED-RESPONSE before it can be handled.
| +
| +Decode `erc-response' acroding the car of it's `command-args' or if
| +that is not a channel, use the `erc-default-coding-system' to
| +decoding."
| +  (let* ((args (erc-response.command-args parsed-response))
| +         (first-arg (car args))
| +         (matchp (string-match "^[#&].*" first-arg))
| +         (decode-target (if matchp
| +                            (erc-decode-string-from-target first-arg nil)
| +                          nil))
| +         (decoded-args ()))
| +    (setf (erc-response.unparsed parsed-response)
| +          (erc-decode-string-from-target
| +           (erc-response.unparsed parsed-response)
| +           decode-target))
| +    (setf (erc-response.sender parsed-response)
| +          (erc-decode-string-from-target
| +           (erc-response.sender parsed-response)
| +           decode-target))
| +    (setf (erc-response.command parsed-response)
| +          (erc-decode-string-from-target
| +           (erc-response.command parsed-response)
| +           decode-target))
| +    (dolist (arg args nil)
| +      (add-to-list 'decoded-args
| +                   (erc-decode-string-from-target arg decode-target)
| +                   t))
| +    (setf (erc-response.command-args parsed-response) decoded-args)
| +    (setf (erc-response.contents parsed-response)
| +          (erc-decode-string-from-target
| +           (erc-response.contents parsed-response)
| +           decode-target))))
| +
|  ;; (defun erc-parse-server-response (process response)
|  ;;   "arse a server PROCESS's IRC RESPONSE."
|  ;;   ;; FIXME: this function doesn't do the same as our original
| @@ -604,8 +641,9 @@
|               (privp (erc-current-nick-p tgt))
|               s buffer
|               fnick
| -             (msg (erc-decode-string-from-target msg
| -                                                 (if privp sender-spec tgt))))
| +             ;; (msg (erc-decode-string-from-target msg
| +;;                                                  (if privp sender-spec tgt)))
| +             )
|          (setf (erc-response.contents parsed) msg)
|          (setq buffer (erc-get-buffer (if privp nick tgt) proc))
|          (when buffer
| @@ -667,8 +705,9 @@
|  (define-erc-response-handler (TOPIC)
|    nil nil
|    (let* ((ch (first (erc-response.command-args parsed)))
| -         (topic (erc-trim-string (erc-decode-string-from-target
| -                                  (erc-response.contents parsed) ch)))
| +         (topic (erc-trim-string ;; (erc-decode-string-from-target
| +                                  (erc-response.contents parsed) ;; ch)
| +                ))
|           (time (format-time-string "%T %m/%d/%y" (current-time))))
|      (multiple-value-bind (nick login host)
|          (erc-parse-user (erc-response.sender parsed))
`----

faint, 俺可怜的空格兄弟们 算了,如果不能用的话。到这里http://linuxfire.dhis.org/~fktpp/decoding.diff 下载吧。这个patch是根据最新的CVS erc $version 1.701$做的。erc-backend.el的版本应该是$version 1.14$,不过前面的一两个版本应该也能用。
发表于 2004-9-25 16:09:50 | 显示全部楼层
要得!
虽然我不用ERC。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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