Добавлена подсветка скобок
This commit is contained in:
parent
c04af4d909
commit
b1d3d2b75c
|
@ -60,4 +60,6 @@
|
||||||
- Added About dialog
|
- Added About dialog
|
||||||
- Fixed read structure (procedure names like Proc:Name)
|
- Fixed read structure (procedure names like Proc:Name)
|
||||||
|
|
||||||
|
15/08/2022
|
||||||
|
- Added open/close braces highlight
|
||||||
|
|
||||||
|
|
6
COPYING
6
COPYING
|
@ -1,6 +0,0 @@
|
||||||
######################################################
|
|
||||||
# Tcl/Tk Project manager 2.0
|
|
||||||
# Distributed under GNU Public License
|
|
||||||
# Author: Sergey Kalinin svk@nuk-svl.ru
|
|
||||||
# Home page: https://nuk-svk.ru
|
|
||||||
######################################################
|
|
|
@ -297,6 +297,7 @@ namespace eval Editor {
|
||||||
}
|
}
|
||||||
proc ReleaseKey {k txt} {
|
proc ReleaseKey {k txt} {
|
||||||
set pos [$txt index insert]
|
set pos [$txt index insert]
|
||||||
|
SearchBrackets $txt
|
||||||
switch $k {
|
switch $k {
|
||||||
Return {
|
Return {
|
||||||
set lineNum [lindex [split $pos "."] 0]
|
set lineNum [lindex [split $pos "."] 0]
|
||||||
|
@ -391,7 +392,8 @@ namespace eval Editor {
|
||||||
#bind . <Control-m> PageTab
|
#bind . <Control-m> PageTab
|
||||||
#bind . <Control-udiaeresis> PageTab
|
#bind . <Control-udiaeresis> PageTab
|
||||||
bind $txt <Insert> {OverWrite}
|
bind $txt <Insert> {OverWrite}
|
||||||
bind $txt <ButtonRelease-1> []
|
bind $txt <ButtonRelease-1> "Editor::SearchBrackets $txt"
|
||||||
|
# bind <Button-1> [bind sysAfter <Any-Key>]
|
||||||
# bind $txt <Button-3> {catch [PopupMenuEditor %X %Y]}
|
# bind $txt <Button-3> {catch [PopupMenuEditor %X %Y]}
|
||||||
# bind $txt <Button-4> "%W yview scroll -3 units"
|
# bind $txt <Button-4> "%W yview scroll -3 units"
|
||||||
# bind $txt <Button-5> "%W yview scroll 3 units"
|
# bind $txt <Button-5> "%W yview scroll 3 units"
|
||||||
|
@ -400,6 +402,26 @@ namespace eval Editor {
|
||||||
bind $txt <<Modified>> "SetModifiedFlag $w"
|
bind $txt <<Modified>> "SetModifiedFlag $w"
|
||||||
bind $txt <<Selection>> "Editor::SelectionGet $txt"
|
bind $txt <<Selection>> "Editor::SelectionGet $txt"
|
||||||
bind $txt <Control-i> ImageBase64Encode
|
bind $txt <Control-i> ImageBase64Encode
|
||||||
|
bind $txt <Control-u> "Editor::SearchBrackets %W"
|
||||||
|
}
|
||||||
|
|
||||||
|
proc SearchBrackets {txt} {
|
||||||
|
set i -1
|
||||||
|
catch {
|
||||||
|
switch -- [$txt get "insert - 1 chars"] {
|
||||||
|
\{ {set i [Editor::_searchCloseBracket $txt \{ \} insert end]}
|
||||||
|
\[ {set i [Editor::_searchCloseBracket $txt \[ \] insert end]}
|
||||||
|
( {set i [Editor::_searchCloseBracket $txt ( ) insert end]}
|
||||||
|
\} {set i [Editor::_searchOpenBracket $txt \{ \} insert 1.0]}
|
||||||
|
\] {set i [Editor::_searchOpenBracket $txt \[ \] insert 1.0]}
|
||||||
|
) {set i [Editor::_searchOpenBracket $txt ( ) insert 1.0]}
|
||||||
|
} ;# switch
|
||||||
|
catch { $txt tag remove lightBracket 1.0 end }
|
||||||
|
if { $i != -1 } {
|
||||||
|
# puts $i
|
||||||
|
$txt tag add lightBracket "$i - 1 chars" $i
|
||||||
|
};#if
|
||||||
|
};#catch
|
||||||
}
|
}
|
||||||
|
|
||||||
proc QuotSelection {txt symbol} {
|
proc QuotSelection {txt symbol} {
|
||||||
|
@ -458,7 +480,7 @@ namespace eval Editor {
|
||||||
for {set lineNumber 0} {$lineNumber <= [$txt count -lines 0.0 end]} {incr lineNumber} {
|
for {set lineNumber 0} {$lineNumber <= [$txt count -lines 0.0 end]} {incr lineNumber} {
|
||||||
set line [$txt get $lineNumber.0 $lineNumber.end]
|
set line [$txt get $lineNumber.0 $lineNumber.end]
|
||||||
# TCL procedure
|
# TCL procedure
|
||||||
if {[regexp -nocase -all -- {^\s*?(proc) (::|)(\w+)(::|:|)(\w+)\s*?(\{|\()(.*)(\}|\)) \{} $line match v1 v2 v3 v4 v5 v6 params v8]} {
|
if {[regexp -nocase -all -- {^\s*?(proc) (::|_|)(\w+)(::|:|_|)(\w+)\s*?(\{|\()(.*)(\}|\)) \{} $line match v1 v2 v3 v4 v5 v6 params v8]} {
|
||||||
set procName "$v2$v3$v4$v5"
|
set procName "$v2$v3$v4$v5"
|
||||||
# lappend procList($activeProject) [list $procName [string trim $params]]
|
# lappend procList($activeProject) [list $procName [string trim $params]]
|
||||||
# puts "$treeItemName proc $procName $params"
|
# puts "$treeItemName proc $procName $params"
|
||||||
|
@ -511,6 +533,52 @@ namespace eval Editor {
|
||||||
# Position
|
# Position
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
# "Alexander Dederer (aka Korwin)
|
||||||
|
## Search close bracket in editor widget
|
||||||
|
proc _searchCloseBracket { widget o_bracket c_bracket start_pos end_pos } {
|
||||||
|
# puts "_searchCloseBracket: $widget $o_bracket $c_bracket $start_pos $end_pos"
|
||||||
|
set o_count 1
|
||||||
|
set c_count 0
|
||||||
|
set found 0
|
||||||
|
set pattern "\[\\$o_bracket\\$c_bracket\]"
|
||||||
|
set pos [$widget search -regexp -- $pattern $start_pos $end_pos]
|
||||||
|
while { ! [string equal $pos {}] } {
|
||||||
|
set char [$widget get $pos]
|
||||||
|
#tk_messageBox -title $pattern -message "char: $char; $pos; o_count=$o_count; c_count=$c_count"
|
||||||
|
if {[string equal $char $o_bracket]} {incr o_count ; set found 1}
|
||||||
|
if {[string equal $char $c_bracket]} {incr c_count ; set found 1}
|
||||||
|
if {($found == 1) && ($o_count == $c_count) } { return [$widget index "$pos + 1 chars"] }
|
||||||
|
set found 0
|
||||||
|
set start_pos "$pos + 1 chars"
|
||||||
|
set pos [$widget search -regexp -- $pattern $start_pos $end_pos]
|
||||||
|
} ;# while search
|
||||||
|
|
||||||
|
return -1
|
||||||
|
} ;# proc _searchCloseBracket
|
||||||
|
|
||||||
|
# "Alexander Dederer (aka Korwin)
|
||||||
|
## Search open bracket in editor widget
|
||||||
|
proc _searchOpenBracket { widget o_bracket c_bracket start_pos end_pos } {
|
||||||
|
# puts "_searchOpenBracket: $widget $o_bracket $c_bracket $start_pos $end_pos"
|
||||||
|
set o_count 0
|
||||||
|
set c_count 1
|
||||||
|
set found 0
|
||||||
|
set pattern "\[\\$o_bracket\\$c_bracket\]"
|
||||||
|
set pos [$widget search -backward -regexp -- $pattern "$start_pos - 1 chars" $end_pos]
|
||||||
|
# puts "$pos"
|
||||||
|
while { ! [string equal $pos {}] } {
|
||||||
|
set char [$widget get $pos]
|
||||||
|
# tk_messageBox -title $pattern -message "char: $char; $pos; o_count=$o_count; c_count=$c_count"
|
||||||
|
if {[string equal $char $o_bracket]} {incr o_count ; set found 1}
|
||||||
|
if {[string equal $char $c_bracket]} {incr c_count ; set found 1}
|
||||||
|
if {($found == 1) && ($o_count == $c_count) } { return [$widget index "$pos + 1 chars"] }
|
||||||
|
set found 0
|
||||||
|
set start_pos "$pos - 0 chars"
|
||||||
|
set pos [$widget search -backward -regexp -- $pattern $start_pos $end_pos]
|
||||||
|
} ;# while search
|
||||||
|
return -1
|
||||||
|
} ;# proc _searchOpenBracket
|
||||||
|
|
||||||
|
|
||||||
proc Editor {fileFullPath nb itemName} {
|
proc Editor {fileFullPath nb itemName} {
|
||||||
global cfgVariables
|
global cfgVariables
|
||||||
|
@ -539,6 +607,7 @@ namespace eval Editor {
|
||||||
if {$cfgVariables(lineNumberShow) eq "false"} {
|
if {$cfgVariables(lineNumberShow) eq "false"} {
|
||||||
$txt configure -linemap 0
|
$txt configure -linemap 0
|
||||||
}
|
}
|
||||||
|
$txt tag configure lightBracket -background #000000 -foreground #00ffff
|
||||||
set fileType [string toupper [string trimleft [file extension $fileFullPath] "."]]
|
set fileType [string toupper [string trimleft [file extension $fileFullPath] "."]]
|
||||||
if {$fileType eq ""} {set fileType "Unknown"}
|
if {$fileType eq ""} {set fileType "Unknown"}
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ exec wish "$0" -- "$@"
|
||||||
######################################################
|
######################################################
|
||||||
# Version: 2.0.0
|
# Version: 2.0.0
|
||||||
# Release: alpha
|
# Release: alpha
|
||||||
# Build: 12082022153746
|
# Build: 15082022110520
|
||||||
######################################################
|
######################################################
|
||||||
|
|
||||||
# определим текущую версию, релиз и т.д.
|
# определим текущую версию, релиз и т.д.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user