head 1.3; access; symbols; locks mys:1.3; strict; comment @# @; 1.3 date 2000.04.11.21.41.24; author mys; state Exp; branches; next 1.2; 1.2 date 99.11.22.22.30.59; author mys; state Exp; branches; next 1.1; 1.1 date 99.11.09.21.32.05; author mys; state Exp; branches; next ; desc @@ 1.3 log @*** empty log message *** @ text @# Copyright (C) 1999 - Martin Strauss - under terms of GPL ############################################################################### # line breaking proc Line_breaking {E START END} { global line_breaking_chars set imax [lindex [split [$E index "$START.0 lineend"] "."] 1] set spaces "" for {set i 0} {$i<=$imax} {incr i} { if {[string compare [$E get $START.$i] " "] == 0} {set spaces "$spaces "} {break} } for {set i $START} {$i<=$END} {incr i} { if {[lindex [split [$E index "$i.0 lineend"] "."] 1] > 80} { set pos [$E search -backwards -- " " $i.$line_breaking_chars "$i.0"] if {[lindex [split $pos "."] 0] == $i} { if {[string compare [$E get "$pos + 1c"] "\n"] !=0} { $E insert "$pos + 1c" "\n$spaces" incr END } } } } } proc Line_unbreaking {E START END} { for {set i $START} {$i<=$END} {incr i} { if {[string compare [$E get "$i.0 lineend - 1c"] " "] ==0} { if {[string length [$E get "$i.0+1l" "$i.1+1l"]] !=0} { while {[string compare [$E get "$i.0 lineend+1c"] " "] == 0} { $E delete "$i.0 lineend+1c" } $E delete "$i.0 lineend" incr i -1 incr END -1 } } } } proc Line_breaking_switch {E KEY} { switch $KEY all { Line_breaking_switch $E unall Line_breaking $E 1 [lindex [split [$E index end] "."] 0] } unall { Line_unbreaking $E 1 [lindex [split [$E index end] "."] 0] } section { Line_breaking_switch $E unsection set pos1 [lindex [split [$E search -backwards -regexp -- "^$" insert 1.0] "."] 0] set pos2 [lindex [split [$E search -regexp -- "^$" insert end] "."] 0] if {$pos1 == ""} {set pos1 1} if {$pos2 == ""} {set pos2 [lindex [split [$E index end] "."] 0]} Line_breaking $E $pos1 $pos2 } unsection { set pos1 [lindex [split [$E search -backwards -regexp -- "^$" insert 1.0] "."] 0] set pos2 [lindex [split [$E search -regexp -- "^$" insert end] "."] 0] if {$pos1 == ""} {set pos1 1} if {$pos2 == ""} {set pos2 [lindex [split [$E index end] "."] 0]} Line_unbreaking $E $pos1 $pos2 } line { Line_breaking_switch $E unline set ksp [lindex [split [$E index {insert linestart}] "."] 0] if {$ksp != ""} { Line_breaking $E $ksp $ksp } } unline { set pos1 [expr [lindex [split [$E search -backwards -regexp -- "\[^ \]$" insert 1.0] "."] 0] +1] set pos2 [lindex [split [$E search -regexp -- "\[^ \]$" insert end] "."] 0] if {$pos1 == ""} {set pos1 1} if {$pos2 == ""} {set pos2 [lindex [split [$E index end] "."] 0]} Line_unbreaking $E $pos1 $pos2 } } @ 1.2 log @+ Einrueckung beim Zeilenumbruch an die Einrueckung der ersten Zeile angepasst. @ text @d1 69 a69 69 # Copyright (C) 1999 - Martin Strauss - under terms of GPL ############################################################################### # line breaking proc Line_breaking {E START END} { global line_breaking_chars set imax [lindex [split [$E index "$START.0 lineend"] "."] 1] set spaces "" for {set i 0} {$i<=$imax} {incr i} { if {[string compare [$E get $START.$i] " "] == 0} {set spaces "$spaces "} {break} } for {set i $START} {$i<=$END} {incr i} { if {[lindex [split [$E index "$i.0 lineend"] "."] 1] > 80} { set pos [$E search -backwards -- " " $i.$line_breaking_chars "$i.0"] if {[lindex [split $pos "."] 0] == $i} { if {[string compare [$E get "$pos + 1c"] "\n"] !=0} { $E insert "$pos + 1c" "\n$spaces" incr END } } } } } proc Line_unbreaking {E START END} { for {set i $START} {$i<=$END} {incr i} { if {[string compare [$E get "$i.0 lineend - 1c"] " "] ==0} { if {[string length [$E get "$i.0+1l" "$i.1+1l"]] !=0} { while {[string compare [$E get "$i.0 lineend+1c"] " "] == 0} { $E delete "$i.0 lineend+1c" } $E delete "$i.0 lineend" incr i -1 incr END -1 } } } } proc Line_breaking_switch {E KEY} { switch $KEY all { Line_breaking_switch $E unall Line_breaking $E 1 [lindex [split [$E index end] "."] 0] } unall { Line_unbreaking $E 1 [lindex [split [$E index end] "."] 0] } section { Line_breaking_switch $E unsection set pos1 [lindex [split [$E search -backwards -regexp -- "^$" insert 1.0] "."] 0] set pos2 [lindex [split [$E search -regexp -- "^$" insert end] "."] 0] if {$pos1 == ""} {set pos1 1} if {$pos2 == ""} {set pos2 [lindex [split [$E index end] "."] 0]} Line_breaking $E $pos1 $pos2 } unsection { set pos1 [lindex [split [$E search -backwards -regexp -- "^$" insert 1.0] "."] 0] set pos2 [lindex [split [$E search -regexp -- "^$" insert end] "."] 0] if {$pos1 == ""} {set pos1 1} if {$pos2 == ""} {set pos2 [lindex [split [$E index end] "."] 0]} Line_unbreaking $E $pos1 $pos2 } line { Line_breaking_switch $E unline set ksp [lindex [split [$E index {insert linestart}] "."] 0] if {$ksp != ""} { Line_breaking $E $ksp $ksp } } unline { set pos1 [expr [lindex [split [$E search -backwards -regexp -- "\[^ \]$" insert 1.0] "."] 0] +1] set pos2 [lindex [split [$E search -regexp -- "\[^ \]$" insert end] "."] 0] if {$pos1 == ""} {set pos1 1} if {$pos2 == ""} {set pos2 [lindex [split [$E index end] "."] 0]} Line_unbreaking $E $pos1 $pos2 } } @ 1.1 log @Initial revision @ text @d6 5 a10 1 set i 1 d12 7 a18 5 set pos [$E search -- " " $i.$line_breaking_chars "$i.$line_breaking_chars lineend"] if {[lindex [split $pos "."] 0] == $i} { if {[string compare [$E get "$pos + 1c"] "\n"] !=0} { $E insert "$pos + 1c" "\n" incr END a23 1 set i 1 d27 4 a30 1 $E delete "$i.0 lineend" @