summaryrefslogtreecommitdiff
path: root/support/tcltexed/lib/syntax.tcl
blob: 35be1b6db83e18c1b1543db6e68d12b14639a9ef (plain)
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
# Copyright (C) 1999 - Martin Strauss - under terms of GPL
#######################################################
# Farbige Syntax
# ok !
proc Syntax {E START END} {
 global I_befehl syntax_flag
 if $syntax_flag {
  set NEW_syntax [$E search "\\" $START $END]
  if {$NEW_syntax != ""} {
   $E tag remove syntax_green $NEW_syntax $END
   $E tag remove syntax_red $NEW_syntax $END
   $E tag remove syntax_blue $NEW_syntax $END
   set LISTE [array names I_befehl]
   lappend LISTE "$" "\\" "\[" "\]" "\{" "\}" ";" "." "-"
   while {$NEW_syntax != ""} {
    $E mark set syntax $NEW_syntax
    if {[$E get syntax-1c syntax] != "\\"} { 
     set ksp [lsearch -exact $LISTE [$E get syntax+1c {syntax+1c wordend}]]
     if {$ksp == -1} {
      $E tag add syntax_red syntax {syntax+1c wordend}
     } else {
      $E tag add syntax_green syntax {syntax+1c wordend}
     }
    } elseif {[$E get syntax-2c syntax-1c] != "\\"} {
     set ksp [lsearch -exact $LISTE [$E get syntax+1c {syntax+1c wordend}]]
     if {$ksp == -1} {
      $E tag add syntax_red syntax {syntax+1c wordend}
     } else {
      $E tag add syntax_green syntax {syntax+1c wordend}
     }
    }
    set NEW_syntax [$E search "\\" syntax+1c $END]
   }
   set NEW_syntax [$E search "%" $START $END]
   while {$NEW_syntax != ""} {
    $E mark set syntax $NEW_syntax
    if {[$E get syntax-1c syntax] != "\\"} {
     $E tag add syntax_blue syntax {syntax lineend}
     $E tag remove syntax_red syntax {syntax lineend}
    } else {
     $E tag add syntax_green syntax-1c syntax+1c
     $E tag remove syntax_red syntax-1c syntax+1c
    }
    set NEW_syntax [$E search "%" syntax+1c $END]
   }
  
   set NEW_syntax [$E search "$" $START $END]
   while {$NEW_syntax != ""} {
    $E mark set syntax $NEW_syntax
    $E tag add syntax_green syntax syntax+1c
    $E tag remove syntax_red syntax syntax+1c
    set NEW_syntax [$E search "$" syntax+1c $END]
   }
}}}