有些注定了被遗忘的话,也就有的注定了属于沉静的自私.

扩展:SyntaxHighlight GeSHi

来自森亮号航海见识 {SLboat Insight;}
(重定向自帮助:语法高亮
跳转至: 导航搜索

更多研究

扩展:SyntaxHighlight GeSHi/Swift语言支持扩展:SyntaxHighlight GeSHi/pygments调试扩展:SyntaxHighlight GeSHi/使用Trunk带来的问题
扩展:SyntaxHighlight GeSHi/修改预处理效果扩展:SyntaxHighlight GeSHi/缩进的想法

扩展
  $IP

主要作用

对语法高亮,让语法高亮显示。

注意

GeShi和GenShi完全不是同一个东西,后者是trac的作者搞的一个项目。

想法

  • 预览不能看到颜色,看起来是生产了css对应id,但是没有css(预先载入?)

todo

  • 同步最新的REL1_21?
ClipCapIt-130929-221413.PNG
  • 来一个简写,如果让js=javascript呢?

@done

  • 已经用CSS添加了强制缩进,无论如何都缩进-
如果能够让其可以缩进显示就漂亮了,当前的缩进只会缩进一行
前面用引号看起来是不行了,那么用在标记呢?
比如<source lang="css" comein=2>
给它一个缩进怎么样
JustCapIt4836.jpg

官方网站

http://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi

适用版本

mediawiki 1.11+
包括最新的1.18

安装

好处

  • 随时可以git同步下

劣势

  • 有时候bug版本就只能等着更新完毕

通过git安装

  • cd进入扩展目录
w/extensions/
  • git克隆库
git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/SyntaxHighlight_GeSHi.git

获得git里的特定版本

  • 先查看远程有哪些版本
[root@li567-57 SyntaxHighlight_GeSHi]# git branch -r
  origin/HEAD -> origin/master
  origin/REL1_19
  origin/REL1_20
  origin/master
  • 把1_20拿出来
git checkout REL1_20
是的看起来不需要origin

获得git里的最新版本trunk

JustCapIt0906.jpg<br\>
JustCapIt0907.jpg<br\>
  • 有代价!是的,就像更多研究里的

修改

设置更多的缩进

  • 看起来只要margin left看起来也够了
/* 让代码的缩进更缩进一些 */
pre, .mw-code {
    margin: 0.3em 0 0 1.6em;
}
  • 它的效果,就像是这样
JustCapIt5175.jpg

设置有限的自动换行

/* 放在这里的CSS会以GeSHi语法高亮方式显示 */
.mw-content-ltr ol {
  word-wrap: break-word;
}

增加语法

原理

注意,这个语法文件需要手动放置到路径里,属于官方不自带的范围。
语法文件位置:

/w/extensions/SyntaxHighlight_GeSHi/geshi/geshi

增加语法Arduino

来源网站:

http://stuff.nekhbet.ro/2009/08/18/free-arduino-language-file-for-geshi.html

制作者:

nekhbet

语法文件:

文件:Arduino php.zip

语法使用:

<source lang="Arduino"></source>

语法示例:

//the pin on which you connect the anode (+) of the LED
byte ledPin =  13;
//our on/off switch
byte state = LOW;
 
//this function runs only once (after reset)
void setup(){                
  //set the pin we use to OUTPUT so we can power-up the LED
  pinMode(ledPin, OUTPUT);     
}
 
//this function runs continuosly (after setup)
void loop(){
  //toggle our switch (if off make it on and vice-versa)
  if (state == LOW){
    state = HIGH;
  } else {
    state = LOW;
  }
  //toggle the LED based on our switch above
  digitalWrite(ledPin, state);
  //sleep for 1000 ms = 1 second
  delay(1000);
}

想法

  • 增加json格式支持,其实就是javascript的变体。

示例

 1 rs232 = require("luars232")
 2 
 3 -- Linux
 4 -- port_name = "/dev/ttyS0"
 5 
 6 -- Windows
 7 port_name = "COM1"
 8 
 9 local out = io.stderr
10 
11 -- open port
12 local e, p = rs232.open(port_name)
13 if e ~= rs232.RS232_ERR_NOERROR then
14 	-- handle error
15 	out:write(string.format("can't open serial port '%s', error: '%s'\n",
16 			port_name, rs232.error_tostring(e)))
17 	return
18 end
19 
20 -- set port settings
21 assert(p:set_baud_rate(rs232.RS232_BAUD_115200) == rs232.RS232_ERR_NOERROR)
22 assert(p:set_data_bits(rs232.RS232_DATA_8) == rs232.RS232_ERR_NOERROR)
23 assert(p:set_parity(rs232.RS232_PARITY_NONE) == rs232.RS232_ERR_NOERROR)
24 assert(p:set_stop_bits(rs232.RS232_STOP_1) == rs232.RS232_ERR_NOERROR)
25 assert(p:set_flow_control(rs232.RS232_FLOW_OFF)  == rs232.RS232_ERR_NOERROR)
26 
27 out:write(string.format("OK, port open with values '%s'\n", tostring(p)))
28 
29 -- read with timeout
30 local read_len = 1 -- read one byte
31 local timeout = 100 -- in miliseconds
32 local err, data_read, size = p:read(read_len, timeout)
33 assert(e == rs232.RS232_ERR_NOERROR)
34 			
35 -- write without timeout
36 err, len_written = p:write("test")
37 assert(e == rs232.RS232_ERR_NOERROR)
38 
39 -- write with timeout 100 msec
40 err, len_written = p:write("test\n", timeout)
41 assert(e == rs232.RS232_ERR_NOERROR)
42 
43 -- close
44 assert(p:close() == rs232.RS232_ERR_NOERROR)

使用方法

<source lang="lua"> rs232 = require("luars232") </source>

更多费力用法

  • 自动换行,加上这个参数看起来就闭合了,真神奇[2]
enclose="div"
它有很多好处,但是代价看起来是,会丢失了原来的整齐性
SLboat-Screen 2013-06-17 1.00.15.png
  • 行数显示的开始行,先开启行数显示:
line start=10
  • 高亮一行highlight:
highlight=4
1 cd /hello
2 echo "hi"
很容易混乱的使用它的是highline、hightlight啥的
  • 两种风格显示行号,正常|华丽:
line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"
  • 快速显示默认行号,不用带上后面那个繁琐的长串。
line
例子:
<source lang="lua" start=2 highlight=4 line> rs232 = require("luars232")</source>:
2 rs232 = require("luars232")

我想到的遗憾

  • 高亮颜色的时候只能高亮一行,如果能行数到行数那很可爱。
highlight=4 可以
highlight=4-20 不可以,可以就太棒了

支持语言

这些是已知的可以用来做lang 参数的语言们:

lang代号 语言
abap ABAP
actionscript ActionScript
ada Ada
apache Apache Configuration
applescript AppleScript
asm Assembly
asp Active Server Pages (ASP)
autoit AutoIt
bash Bash
basic4gl Basic4GL
bf Brainfuck
blitzbasic Blitz BASIC
bnf Backus-Naur Form
c C
c_mac C (Mac)
caddcl AutoCAD DCL
cadlisp AutoLISP
cfdg CFDG
cfm ColdFusion Markup Language
cil Common Intermediate Language (CIL)
cobol COBOL
cpp-qt C++ (Qt toolkit)
cpp C++
csharp C#
css Cascading Style Sheets (CSS)
d D
delphi Delphi
diff Diff
div DIV
dos DOS batch file
dot DOT
eiffel Eiffel
fortran Fortran
freebasic FreeBASIC
genero Genero
gettext GNU internationalization (i18n) library
glsl OpenGL Shading Language (GLSL)
gml Game Maker Language (GML)
gnuplot gnuplot
groovy Groovy
haskell Haskell
hq9plus HQ9+
html4strict HTML
idl Uno IDL
ini INI
inno Inno
intercal INTERCAL
io Io
java Java
java5 Java(TM) 2 Platform Standard Edition 5.0
javascript JavaScript
kixtart KiXtart
klonec Klone C
klonecpp Klone C++
latex LaTeX
lisp Lisp
lolcode LOLCODE
lotusscript LotusScript
lua Lua
lang代号 语言
m68k Motorola 68000 Assembler
make make
matlab MATLAB M
mirc mIRC scripting language
mxml MXML
mpasm Microchip Assembler
mysql MySQL
nsis Nullsoft Scriptable Install System (NSIS)
objc Objective-C
ocaml-brief OCaml
ocaml OCaml
oobas OpenOffice.org Basic
oracle8 Oracle 8 SQL
oracle11 Oracle 11 SQL
pascal Pascal
per per
perl Perl
php-brief PHP
php PHP
pixelbender Pixel Bender
plsql PL/SQL
povray Persistence of Vision Raytracer
powershell Windows PowerShell
progress OpenEdge Advanced Business Language
prolog Prolog
providex ProvideX
python Python
qbasic QBasic/QuickBASIC
rails Rails
reg Windows Registry
robots robots.txt
ruby Ruby
sas SAS
scala Scala
scheme Scheme
scilab Scilab
sdlbasic SdlBasic
smalltalk Smalltalk
smarty Smarty
sql SQL
tcl Tcl
teraterm Tera Term
text Plain text
thinbasic thinBasic
tsql Transact-SQL
typoscript TypoScript
vb Visual Basic
vbnet Visual Basic .NET
verilog Verilog
vhdl VHDL
vim Vimscript
visualfoxpro Visual FoxPro
visualprolog Visual Prolog
whitespace Whitespace
winbatch Winbatch
xml XML
xorg_conf Xorg.conf
xpp X++
z80 ZiLOG Z80 Assembler

一些惊喜

jQuery代码

  • 直接标记 jquery 能够识别哦。
  • 真是有趣的神奇,区别是啥呢,和js的

bat文件

使用dos标记即可,就是dos发展来的嘛。
dos的历史看起来真悠久呢。

MakeFile

编译脚本,make就是咯。

Html文件

分为两种,html4strict和html5,前者有点沉余,后者却是很精细。
用后者把,为什么不呢。趋势呢

objective-c文件

objc就行咯,这个却简单了,javascripte缺麻烦,真神奇。

mysql高亮

就是mysql,连它也支持,真疯狂

visual basic

看起来vb就够了,不用太多

text

  • 把它视为带引用的poem标签!

兼容性拐弯

VBS文件

  • 看起来急用vb的好了,它不被原生支持,至少看起来支持的必要性不大

ini文件

  • ini 能够显示ini这玩意呢[3],比如
类型=ini
名字=ini哦
name=info
  • 有趣的是只有英文能够被着色

diff文件

  • 如果你想说patch,不,这里只有diff.
  • 哇喔!它可以被支持,就是diff
红红绿绿的
This is how I fixed it:
*** Makefile.inc 2012-12-07 18:34:16.000000000 -0800
--- Makefile.inc.orig 2009-12-01 10:15:57.000000000 -0800
***************
*** 24,30 ****
LINK=$(LD)
SHLIB_EXT=dylib
SHLIB_FLAGS=-dylib
! ifeq ($(shell gcc -dumpmachine),i686-apple-darwin11)
SHLIB_FLAGS += -arch x86_64
endif
else
--- 24,30 ----
LINK=$(LD)
SHLIB_EXT=dylib
SHLIB_FLAGS=-dylib
! ifeq ($(shell gcc -dumpmachine),i686-apple-darwin10)
SHLIB_FLAGS += -arch x86_64
endif
else

plist文件

  • 看起来只能用xml来标记
没有原生支持

h文件

  • 没有这个h文件,用c看起来是一样的...h是一种最小化的c,可以本身被包含在c中

音频想法


  • 在geshi(模糊-接近了jshi)的自带语法高亮来说,额做到了让代码看起来更有颜色更舒服的感觉,那它是唯一的工具吗?显然不是,此外的工具还有吗?当然的.

引用信息

以下是[扩展:SyntaxHighlight GeSHi]所有用到的引用信息,向这些伟大的家伙致敬:
  1. ^ 真神奇,它单独的存在这里
  2. ^ http://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi
  3. ^ 发现于:http://www.mediawiki.org/w/index.php?title=Manual:How_to_debug&action=edit&section=1