/ Home / emacs, vim / vim和emacs的bbs语法高亮

11月 16, 2008

vim和emacs的bbs语法高亮

冰封 将文章归档于 emacs, vim

经常会在bbs下载一些文章和集合,不想下载成HTML格式,直接保存纯文本格式,但是这样看起来比较累,特别是看合集,所以自己写了vim和emacs的bbs语法高亮,我一般保存成bbs后缀,这样直接识别加亮。

vim的语法高亮


" Vim syntax file
" Language:    txt
" Maintainer:    Jimmy Wu <frozenthrone88@gmail.com>
" Last Change:    04 Feb 2008

scriptencoding utf-8

" Quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif

syntax case ignore

syn region BbsQmd start=/\v^--\s*$/ end=/※/me=s-1
syn match BbsHeader "\v^发信人.*$"
syn match BbsHeader "\v^标\s*题.*$"
syn match Bbsheader "\v^发信站.*$"
syn match AuthorExpr  "^【.*】$"
syn match AuthorExpr  "^:.*"
syn match BbsFrom "^\s*※.*$"
syn match BbsQuote "\v^\s*☆[━─]+☆\s*$"
syn match BbsQuote "^.*([^)]*)\s*于\s*([^)]*).*"
syn match BbsQuote "\v^.*在该主题下发言如下:\s*$"
syn match BbsQuote "^—*┤.*├—*"
syn match Bbsquote "\v^\s*标题:●.*$"
syn match BbsVoteTitle /^⊙.*$/

" Define the default highlighting.
hi link BbsHeader      PreProc
hi link BbsQmd         Comment
hi link AuthorExpr     Constant
hi link BbsFrom        Constant
hi link BbsQuote       Type
hi link BbsVoteTitle   PreProc

let b:current_syntax = "bbs"

" vim: ts=8 sw=2

保存成bbs.vim放到vimfiles\syntax\下

emacs的语法高亮


;;; bbs-mode-el -- Major mode for viewing bbs files

;; Author: Jimmy Wu <frozenthrone88@gmail.com>
;; Created: 12-4-2008
;; Keywords: bbs major-mode

;; Copyright (C) 2008 Jimmy Wu <frozenthrone88@gmail.com>

;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as
;; published by the Free Software Foundation; either version 2 of
;; the License, or (at your option) any later version.

;; This program is distributed in the hope that it will be
;; useful, but WITHOUT ANY WARRANTY; without even the implied
;; warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
;; PURPOSE.  See the GNU General Public License for more details.

;; You should have received a copy of the GNU General Public
;; License along with this program; if not, write to the Free
;; Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
;; MA 02111-1307 USA

;;; Commentary:

;;; Code:
(defvar bbs-mode-hook nil)

(add-to-list 'auto-mode-alist '("\\.bbs\\'" . bbs-mode))

(defconst bbs-font-lock-keywords
(list
'("^[发寄]信人.*$\\|^标\s*题.*$\\|^发信站.*$\\|^来\s*源.*$" . font-lock-preprocessor-face)
'("^【.*】$\\|^:.*$" . font-lock-doc-face)
'("^\s*☆─+☆\s*\n.*\\|^\s*☆━+☆\s*" . font-lock-variable-name-face)
'("^.*在该主题下发言如下:\s*$\\|^—*┤.*├—*$\\|^\s*标题:●.*$" . font-lock-variable-name-face)
'("^⊙.*$" . font-lock-constant-face)
'("^※.*$" . font-lock-function-name-face)
'("^--\n\\([^※].*\n\\)*" . font-lock-comment-face)
))

(defun bbs-mode ()
(interactive)
(kill-all-local-variables)

;; Set up font-lock
(set (make-local-variable 'font-lock-defaults) '(bbs-font-lock-keywords))
(setq major-mode 'bbs-mode)
(setq mode-name "bbs")
(run-hooks 'bbs-mode-hook))

(provide 'bbs-mode)

;;; bbs-mode.el ends here

使用方法,保存成bbs-mode.el放到你的site-lisp下

在你的.emacs里加入


(require 'bbs-mode)

Share and Enjoy:

  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • blogmarks
  • Haohao
  • Hemidemi
  • Live
  • MySpace

相关日志

Tags: , ,

There are 3 comments

  • 1 realshrek // Nov 29, 2008 at 22:01

    我的没成功啊,很奇怪,下载的文章如:

    发信人: vivas (维※用力跑向前), 信区: ADAgent
    标 题: [公告] ADAgent 版面群版面设置调整
    发信站: 水木社区 (Sun Dec 18 11:26:15 2005), 站内

    【 以下文字转载自 Announce 讨论区 】
    发信人: SYSOP (System Operator), 信区: Announce
    标 题: [公告] ADAgent 版面群版面设置调整
    发信站: 水木社区 (Sun Dec 18 11:26:08 2005), 站内

        经 ADAgent 版面群正版主 fallenfox 申请,现对 ADAgent 版面群做
      如下调整:

    新开设 ADAgents/广告与代理 目录。

    该目录中包括 ADAgent 版面群现在各版面,以利于用户更方便快捷地
      利用相关版面。目录中版面列表具体如下:

    ADAgent/商务广告与代理信息
    ADAgent_Beauty/美容品与饰品代理
    ADAgent_Manage/Ad_Agent版版务
    AdAgent_TG/团购


    ※ 来源:·水木社区 newsmth.net·[FROM: 水木社区

  • 2 realshrek // Nov 29, 2008 at 22:03

    难道是字符编码什么的问题么?

  • 3 冰封 // Dec 5, 2008 at 00:08

    你说的是vim吗?
    应该是没识别出文件类型,所以没加载语法高亮
    试一下
    :set ft=bbs

Leave a Reply