137 lines
4.8 KiB
Tcl
137 lines
4.8 KiB
Tcl
###########################################################
|
|
# Tcl/Tk Project Manager #
|
|
# version 0.0.1 #
|
|
# SPEC highlight file #
|
|
# Copyright (c) "Sergey Kalinin", 2001, http://nuk-svk.ru #
|
|
# Author: Sergey Kalinin banzaj28@yandex.ru #
|
|
###########################################################
|
|
|
|
proc HighLightSPEC {text line lineNumber node} {
|
|
global fontNormal editorFontBold fontBold tree imgDir noteBook
|
|
global editor color
|
|
# set pos [$text index insert]
|
|
# set lineNumber [lindex [split $pos "."] 0]
|
|
|
|
set startIndex 0
|
|
# bind text tags for highlightning #
|
|
# foreach tag {bold procName comments string number variable} {
|
|
# $text tag remove $tag $lineNumber.0 $lineNumber.end
|
|
# }
|
|
|
|
$text tag configure bold -font $editor(fontBold)
|
|
$text tag configure procName -font $editor(fontBold) -foreground $color(procName)
|
|
$text tag configure keyWord -foreground $color(keyWord)
|
|
$text tag configure comments -foreground $color(comments)
|
|
$text tag configure variable -foreground $color(var)
|
|
$text tag configure string -foreground $color(string)
|
|
$text tag configure braceHighLight -font $editor(fontBold)\
|
|
-foreground $color(braceBG) -background $color(braceFG)
|
|
$text tag configure brace -foreground $color(brace)
|
|
$text tag configure percent -foreground $color(percent)
|
|
$text tag configure bindKey -foreground $color(bindKey)
|
|
# $text tag configure bold -font $fontBold
|
|
# $text tag configure procName -font $editorFontBold -foreground blue
|
|
# $text tag configure keyWord -foreground #0000a8
|
|
# $text tag configure comments -foreground #9b9b9b
|
|
# $text tag configure variable -foreground #e50000
|
|
# $text tag configure string -foreground #168400
|
|
# $text tag configure braceHighLight -font $editorFontBold -foreground green -background black
|
|
# $text tag configure brace -foreground brown
|
|
# $text tag configure percent -foreground #a500c6
|
|
|
|
foreach n {define name version release description prep setup build install post postun clean files defattr changelog doc} {
|
|
lappend keyWord $n
|
|
}
|
|
# add comment #
|
|
if {[string range [string trim $line] 0 0] == "#"} {
|
|
$text tag add comments $lineNumber.0 $lineNumber.end
|
|
return 0
|
|
}
|
|
|
|
set a ""
|
|
regexp "^( |\t|\%)*(\[a-z\]|\[A-Z\]|\[0-9\]|_|:|~|\\.|/)+" $line a
|
|
if {$a != ""} {
|
|
# gets name
|
|
set b ""
|
|
regexp "^( |\t|\%)*" $line b
|
|
set nameStart [string length $b]
|
|
set nameEnd [string length $a]
|
|
set name [string range $a [string length $b] end]
|
|
# is it keyword?
|
|
if {[lsearch $keyWord $name] != -1} {
|
|
incr nameStart $startIndex
|
|
incr nameEnd $startIndex
|
|
$text tag add keyWord $lineNumber.$nameStart $lineNumber.$nameEnd
|
|
}
|
|
}
|
|
# variable highlight #
|
|
set startPos 0
|
|
set workLine $line
|
|
while {$workLine != ""} {
|
|
if {[regexp "\\$\[a-zA-Z\\_:\]+" $workLine a]} {
|
|
set start [string first $a $workLine]
|
|
set end $start
|
|
incr end [string length $a]
|
|
set workLine [string range $workLine $end end]
|
|
incr start $startPos
|
|
incr end $startPos
|
|
if {$a != ""} {
|
|
$text tag add variable $lineNumber.$start $lineNumber.$end
|
|
}
|
|
set startPos $end
|
|
} else {
|
|
break
|
|
}
|
|
}
|
|
# string { } highlight
|
|
set startPos 0
|
|
set workLine $line
|
|
while {$workLine != ""} {
|
|
if {[regexp "\{.*?\}" $workLine a b]} {
|
|
set start [string first $a $workLine]
|
|
set end $start
|
|
incr end [string length $a]
|
|
set workLine [string range $workLine $end end]
|
|
incr start $startPos
|
|
incr end $startPos
|
|
$text tag add string $lineNumber.$start $lineNumber.$end
|
|
set startPos $end
|
|
} else {
|
|
break
|
|
}
|
|
}
|
|
# persent % highlight
|
|
set startPos 0
|
|
set workLine $line
|
|
while {$workLine != ""} {
|
|
# if {[regexp "\%.*? " $workLine a b]}
|
|
if {[regexp "\%" $workLine a b]} {
|
|
set start [string first $a $workLine]
|
|
set end $start
|
|
incr end [string length $a]
|
|
set workLine [string range $workLine $end end]
|
|
incr start $startPos
|
|
incr end $startPos
|
|
$text tag add percent $lineNumber.$start $lineNumber.$end
|
|
set startPos $end
|
|
} else {
|
|
break
|
|
}
|
|
}
|
|
#find [
|
|
# set i [string first "\[" $line]
|
|
# if {$i != -1} {
|
|
# incr i
|
|
# set line [string range $line $i end]
|
|
# incr i $startIndex
|
|
# set l [HighLight $text $line $i $node]
|
|
# eval lappend res $l
|
|
# }
|
|
|
|
# return $res
|
|
|
|
}
|
|
|
|
|
|
|