FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
code2ebook/syntax-highlight.vim at master · treesadmin/code2ebook · GitHub
treesadmin
code2ebook
Repository navigation
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
code2ebook
/
syntax-highlight.vim
Copy path
More file actions
More file actions
Latest commit
History
History
History
112 lines (91 loc) · 3.5 KB
Breadcrumbs
code2ebook
/
syntax-highlight.vim
Copy path
File metadata and controls
112 lines (91 loc) · 3.5 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
"
AnsiHighlight:
Allows for marking up a file, using ANSI color escapes when
"
the syntax changes colors, for easy, faithful reproduction.
"
Author:
Matthew Wozniski (mjw@drexel.edu)
"
Date:
Fri, 01 Aug 2008 05:22:55 -0400
"
Version:
1.0 FIXME
"
History:
FIXME see :help marklines-history
"
License:
BSD. Completely open source, but I would like to be
"
credited if you use some of this code elsewhere.
"
Copyright (c) 2008, Matthew J. Wozniski {{{1
"
All rights reserved.
"
"
Redistribution and use in source and binary forms, with or without
"
modification, are permitted provided that the following conditions are met:
"
* Redistributions of source code must retain the above copyright
"
notice, this list of conditions and the following disclaimer.
"
* Redistributions in binary form must reproduce the above copyright
"
notice, this list of conditions and the following disclaimer in the
"
documentation and/or other materials provided with the distribution.
"
* The names of the contributors may not be used to endorse or promote
"
products derived from this software without specific prior written
"
permission.
"
"
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY
"
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
"
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
"
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
"
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
"
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
"
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
"
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
"
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
"
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"
Turn off vi-compatible mode, unless it's already off {{{1
if
&
cp
set
nocp
endif
let
s:
type
=
'
cterm
'
if
&
t_Co
==
0
let
s:
type
=
'
term
'
endif
"
Converts info for a highlight group to a string of ANSI color escapes {{{1
function
!
s:
GroupToAnsi
(groupnum)
if
!
exists
(
"
s:ansicache
"
)
let
s:
ansicache
=
{}
endif
let
groupnum
=
a:
groupnum
if
groupnum
==
0
let
groupnum
=
hlID
(
'
Normal
'
)
endif
if
has_key
(
s:
ansicache
, groupnum)
return
s:
ansicache
[groupnum]
endif
let
name
=
synIDattr
(groupnum,
'
name
'
,
s:
type
)
let
retv
=
"
\<Esc>
[
"
if
exists
(
'
name
'
)
let
retv
.=
name
endif
let
retv
.=
"
;
"
let
s:
ansicache
[groupnum]
=
retv
return
retv
endfunction
function
!
AnsiHighlight
(output_file)
let
retv
=
[]
for
lnum
in
range
(
1
,
line
(
'
$
'
))
let
last
=
hlID
(
'
Normal
'
)
let
output
=
s:
GroupToAnsi
(
last
)
"
Hopefully fix highlighting sync issues
exe
"
norm!
"
. lnum .
"
G$
"
let
line
=
getline
(lnum)
for
cnum
in
range
(
1
,
col
(
'
.
'
))
if
synIDtrans
(
synID
(lnum, cnum,
1
))
!=
last
let
last
=
synIDtrans
(
synID
(lnum, cnum,
1
))
let
output
.=
s:
GroupToAnsi
(
last
)
endif
let
output
.=
matchstr
(
line
,
'
\%(\zs.\)\{
'
.cnum.
'
}
'
)
"
let line = substitute(line, '.', '', '')
"
let line = matchstr(line, '^\@<!.*')
endfor
let
retv
+=
[output]
endfor
"
Reset the colors to default after displaying the file
"
let retv[-1] .= "\<Esc>[0m"
return
writefile
(retv,
a:
output_file
)
endfunction
"
See copyright in the vims cript above (for the vim script) and in
"
vimcat.md for the whole script.
"
"
The list of contributors is at the bottom of the vimpager script in this
"
project.
"
"
vim:
sw
=
2
sts
=
2
et
ft
=
vim
Back
|
FazBrowse Home
|
New Git URL