Compare commits
10 Commits
7d0b40d651
...
c_support
| Author | SHA1 | Date | |
|---|---|---|---|
| 0f9d6e9214 | |||
| 40ceb04bf8 | |||
| b12381dbce | |||
| 3d0ae84dc2 | |||
| afa368c519 | |||
| 118638e42e | |||
| 723426b1d6 | |||
| c8547ec45b | |||
| e83507eb9b | |||
| 382e62df95 |
@@ -17,6 +17,7 @@ Highlightning and source code navigation:
|
|||||||
* Markdown
|
* Markdown
|
||||||
* YAML (Ansible support)
|
* YAML (Ansible support)
|
||||||
* Lua
|
* Lua
|
||||||
|
* C
|
||||||
|
|
||||||
Highlightning:
|
Highlightning:
|
||||||
|
|
||||||
|
|||||||
15
debian/changelog
vendored
15
debian/changelog
vendored
@@ -1,3 +1,17 @@
|
|||||||
|
projman (2.0.0-beta4) stable; urgency=medium
|
||||||
|
|
||||||
|
* Исправлено регулярное выражение для поиска переменных в коде на С.
|
||||||
|
* Добавил экранирование '*' в имени функции для поиска.
|
||||||
|
* Подкрректировал регулярки для работы с С.
|
||||||
|
* Исиправил закрытие вкладки при отпускании кнопки мыши при нажатии на крестик.
|
||||||
|
* Добавил иконки для 'c' и 'h'. Добавил сочитание Alt-R в русской раскладке
|
||||||
|
* Добавил поддержку С подсветка
|
||||||
|
* Добавил копирование готовых пакетов
|
||||||
|
* Откорректировал сборку рпм
|
||||||
|
* Добавил сборку rpm. Исправил changelog-и
|
||||||
|
|
||||||
|
-- svk <svk@nuk-svk.ru> Fri, 6 Feb 2026 14:07:53 +0300
|
||||||
|
|
||||||
projman (2.0.0-beta3) stable; urgency=medium
|
projman (2.0.0-beta3) stable; urgency=medium
|
||||||
|
|
||||||
* changelog-gen: сделал вывод изменения в формате rpm.spec
|
* changelog-gen: сделал вывод изменения в формате rpm.spec
|
||||||
@@ -497,3 +511,4 @@ projman (2.0.0-alfa0) stable; urgency=medium
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -681,7 +681,7 @@ namespace eval Editor {
|
|||||||
bind $txt <Control-Cyrillic_em> "Editor::SelectionPaste $txt"
|
bind $txt <Control-Cyrillic_em> "Editor::SelectionPaste $txt"
|
||||||
bind $txt <Control-l> "SearchVariable $txt; break"
|
bind $txt <Control-l> "SearchVariable $txt; break"
|
||||||
bind $txt <Control-Cyrillic_de> "SearchVariable $txt; break"
|
bind $txt <Control-Cyrillic_de> "SearchVariable $txt; break"
|
||||||
bind $txt <Control-i> "ImageBase64Encode $txt"
|
bind $txt <Control-i> "ImageBase64Encode"
|
||||||
bind $txt <Control-Cyrillic_sha> "ImageBase64Encode $txt"
|
bind $txt <Control-Cyrillic_sha> "ImageBase64Encode $txt"
|
||||||
bind $txt <Control-bracketleft> "Editor::InsertTabular $txt"
|
bind $txt <Control-bracketleft> "Editor::InsertTabular $txt"
|
||||||
bind $txt <Control-bracketright> "Editor::DeleteTabular $txt"
|
bind $txt <Control-bracketright> "Editor::DeleteTabular $txt"
|
||||||
@@ -702,6 +702,7 @@ namespace eval Editor {
|
|||||||
bind $txt <Alt-odiaeresis> "$txt delete {insert wordstart} {insert wordend}"
|
bind $txt <Alt-odiaeresis> "$txt delete {insert wordstart} {insert wordend}"
|
||||||
bind $txt <Alt-Cyrillic_tse> "$txt delete {insert wordstart} {insert wordend}"
|
bind $txt <Alt-Cyrillic_tse> "$txt delete {insert wordstart} {insert wordend}"
|
||||||
bind $txt <Alt-r> "$txt delete {insert linestart} {insert lineend + 1char}"
|
bind $txt <Alt-r> "$txt delete {insert linestart} {insert lineend + 1char}"
|
||||||
|
bind $txt <Alt-Cyrillic_ka> "$txt delete {insert linestart} {insert lineend + 1char}"
|
||||||
bind $txt <Alt-ecircumflex> "$txt delete {insert linestart} {insert lineend + 1char}"
|
bind $txt <Alt-ecircumflex> "$txt delete {insert linestart} {insert lineend + 1char}"
|
||||||
bind $txt <Alt-Cyrillic_er> "$txt delete {insert linestart} {insert lineend + 1char}"
|
bind $txt <Alt-Cyrillic_er> "$txt delete {insert linestart} {insert lineend + 1char}"
|
||||||
bind $txt <Alt-b> "$txt delete {insert linestart} insert"
|
bind $txt <Alt-b> "$txt delete {insert linestart} insert"
|
||||||
@@ -876,9 +877,15 @@ 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]
|
||||||
# Выбираем процедуры (функции, классы и т.д.)
|
# Выбираем процедуры (функции, классы и т.д.)
|
||||||
|
# DebugPuts "Editor::RedaStructure: file type $fileType"
|
||||||
|
|
||||||
if {[dict exists $lexers $fileType procRegexpCommand] != 0 } {
|
if {[dict exists $lexers $fileType procRegexpCommand] != 0 } {
|
||||||
|
# regexp -nocase -all -line -- {^\s*(?:(\w+)\s+)+(\w+)\s*\((.*?)\)\s*(?:;|\{)} $line match returns procName params
|
||||||
|
# regexp -nocase -all -line -lineanchor -linestop -- {^\s*(?:(\w+)\s+)+(\w+)\s*\((.*?)(,|\))} $line match v1 v2 v3 v4
|
||||||
if {[eval [dict get $lexers $fileType procRegexpCommand]]} {
|
if {[eval [dict get $lexers $fileType procRegexpCommand]]} {
|
||||||
|
DebugPuts "Editor::RedaStructure: regexp = [dict get $lexers $fileType procRegexpCommand]"
|
||||||
set procName_ [string trim $procName]
|
set procName_ [string trim $procName]
|
||||||
|
DebugPuts "Editor::RedaStructure: find the proc $procName_"
|
||||||
if {$treeItemName ne ""} {
|
if {$treeItemName ne ""} {
|
||||||
Tree::InsertItem $tree $treeItemName $procName_ "procedure" "$procName_ ($params)"
|
Tree::InsertItem $tree $treeItemName $procName_ "procedure" "$procName_ ($params)"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -237,7 +237,7 @@ ttk::style layout TNotebook.Tab {
|
|||||||
}
|
}
|
||||||
bind TNotebook <Button-1> "catch {NB::PressTab %W %x %y}\;[bind TNotebook <Button-1>];break"
|
bind TNotebook <Button-1> "catch {NB::PressTab %W %x %y}\;[bind TNotebook <Button-1>];break"
|
||||||
# bind <<NotebookTabChanged>> "NB::PressTab %W %x %y"
|
# bind <<NotebookTabChanged>> "NB::PressTab %W %x %y"
|
||||||
bind TNotebook <ButtonRelease-1> "NB::PressTab %W %x %y"
|
# bind TNotebook <ButtonRelease-1> "NB::PressTab %W %x %y"
|
||||||
# bind TNotebook <Control-w> FileOper::Close
|
# bind TNotebook <Control-w> FileOper::Close
|
||||||
# bind . <Control-Tab> "NB::NextTab $nbEditor"
|
# bind . <Control-Tab> "NB::NextTab $nbEditor"
|
||||||
bind . <Control-Next> "NB::NextTab $nbEditor 1"
|
bind . <Control-Next> "NB::NextTab $nbEditor 1"
|
||||||
|
|||||||
@@ -210,5 +210,24 @@ namespace eval Highlight {} {
|
|||||||
ctext::addHighlightClass $txt compile_errors #ff5050 {error Error ERROR invalid undefined cannot}
|
ctext::addHighlightClass $txt compile_errors #ff5050 {error Error ERROR invalid undefined cannot}
|
||||||
ctext::addHighlightClassForRegexp $txt url lightblue {\w+://\w.+\w+}
|
ctext::addHighlightClassForRegexp $txt url lightblue {\w+://\w.+\w+}
|
||||||
}
|
}
|
||||||
|
proc C {txt} {
|
||||||
|
global lexers
|
||||||
|
ctext::addHighlightClassForRegexp $txt flags orange {-+[a-zA-Z\-_]+}
|
||||||
|
ctext::addHighlightClassForRegexp $txt arrows orange {(->)|(-<)}
|
||||||
|
ctext::addHighlightClass $txt stackControl #19a2a6 [dict get $lexers C commands]
|
||||||
|
ctext::addHighlightClass $txt types #7187d5 {string int int16 int32 int64 float bool byte size_t void char uint32_t uint32}
|
||||||
|
ctext::addHighlightClassWithOnlyCharStart $txt vars #4471ca "\&"
|
||||||
|
ctext::addHighlightClassWithOnlyCharStart $txt vars #4471ca "\*"
|
||||||
|
# ctext::addHighlightClassForRegexp $txt vars_extended #4471ca {\$\{[a-zA-Z0-9\_\-:\./\$\{\}]+\}}
|
||||||
|
ctext::addHighlightClass $txt variable_funcs gold {var type struct}
|
||||||
|
ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
|
||||||
|
ctext::addHighlightClassForRegexp $txt paths lightblue {\.[a-zA-Z0-9\_\-]+}
|
||||||
|
ctext::addHighlightClassForRegexp $txt comments #666666 {(//|/\*)[^\n\r]*}
|
||||||
|
ctext::addHighlightClassForSpecialChars $txt qoute #b84a0c {"'`}
|
||||||
|
ctext::addHighlightClass $txt bool #3e803b {nil false true NULL TRUE FALSE}
|
||||||
|
ctext::addHighlightClassForRegexp $txt qoute #b84a0c {("|'|`).*?("|'|`)}
|
||||||
|
ctext::addHighlightClassForRegexp $txt macros #f88ffb {#\w+}
|
||||||
|
ctext::addHighlightClassForRegexp $txt include #68ceff {<[\w./_-]+?>}
|
||||||
|
}
|
||||||
|
proc H {txt} {Highlight::C $txt}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1947,3 +1947,24 @@ image create photo settings_24x24 -data {
|
|||||||
3W5MPksIPgdckHTF1XAMeCrpRXAexPT6yYSddEj6eKSJJmk3IcFGqWby51AbSvpeqr+KPjcKC7GT
|
3W5MPksIPgdckHTF1XAMeCrpRXAexPT6yYSddEj6eKSJJmk3IcFGqWby51AbSvpeqr+KPjcKC7GT
|
||||||
hfgXbteIc85F7RUAAAAASUVORK5CYII=
|
hfgXbteIc85F7RUAAAAASUVORK5CYII=
|
||||||
}
|
}
|
||||||
|
image create photo c_16x12 -data {
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAAXNSR0IB2cksfwAAAARnQU1BAACx
|
||||||
|
jwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dE
|
||||||
|
APgAjwD7QQHXygAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+oCBg8YOxzsqLgAAABWSURB
|
||||||
|
VCjPY2AgATDCGFeLi/+jS2r39jJiKIYp1O7tZUDSjKGBCYdtyCbCbWTB5T6oiShOYyHWT7icgRPg
|
||||||
|
VHy1uPg/eggRY/J/YsMZRR0jLlNweZI2AAAzbhnP2WkKCAAAAABJRU5ErkJggg==
|
||||||
|
}
|
||||||
|
image create photo h_16x12 -data {
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAAXNSR0IB2cksfwAAAARnQU1BAACx
|
||||||
|
jwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dE
|
||||||
|
AAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+oCBg8iNd79W8YAAABJSURB
|
||||||
|
VCjPY2AgB1wtLv5/tbj4Pz41TKQYSJJiRmRnYFOg3dvLSLTJyIawYDEJWSGM+Z+BgYGRCY/zGOkX
|
||||||
|
GkwMFID/UExIjDAAAEu2FECKwea9AAAAAElFTkSuQmCC
|
||||||
|
}
|
||||||
|
image create photo cpp_16x12 -data {
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAMAAABIK2QJAAAAAXNSR0IB2cksfwAAAARnQU1BAACx
|
||||||
|
jwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAA9QTFRF
|
||||||
|
AAAAzAAAAAAA////////6rs+vwAAAAF0Uk5TAEDm2GYAAAABYktHRACIBR1IAAAACXBIWXMAAAsT
|
||||||
|
AAALEwEAmpwYAAAAB3RJTUUH6gIGDxU21/OqSAAAADVJREFUCNd9jUEOACAIw7D7/58VmNF4sAco
|
||||||
|
CbCIm5FsBTwsd+kmgVQu87p3OLfg/9AJJPFhAjDkAJmwKBolAAAAAElFTkSuQmCC
|
||||||
|
}
|
||||||
|
|||||||
@@ -104,5 +104,29 @@ dict set lexers LUA procFindString {function\s*?PROCNAME}
|
|||||||
dict set lexers LUA procRegexpCommand {regexp -nocase -all -- {^(local|)\s*?(function)\s([a-zA-Z0-9\-_:]+?)\s+\((.+?)\)} $line match v1 keyWord procName params}
|
dict set lexers LUA procRegexpCommand {regexp -nocase -all -- {^(local|)\s*?(function)\s([a-zA-Z0-9\-_:]+?)\s+\((.+?)\)} $line match v1 keyWord procName params}
|
||||||
dict set lexers LUA varRegexpCommand {regexp -nocase -all -- {^(\s*?)([a-zA-Z0-9\-_\.]+)\s+=\s+(.+?)(\s*$|--)} $line match indent varName varValue lineEnd}
|
dict set lexers LUA varRegexpCommand {regexp -nocase -all -- {^(\s*?)([a-zA-Z0-9\-_\.]+)\s+=\s+(.+?)(\s*$|--)} $line match indent varName varValue lineEnd}
|
||||||
|
|
||||||
|
#--------------------------------------------------
|
||||||
|
# C
|
||||||
|
dict set lexers C commentSymbol {//}
|
||||||
|
dict set lexers C commentMultilineSymbolBegin {/*}
|
||||||
|
dict set lexers C commentMultilineSymbolEnd {*/}
|
||||||
|
dict set lexers C procFindString {(\w+)\s+(PROCNAME)\s*\((.*?)(,|\))(\W|$)}
|
||||||
|
dict set lexers C procRegexpCommand {regexp -nocase -all -line -- {^(?:(\w+)\s+)+(\*\w+|\w+)\s*\((.*?)(,|\))} $line match returns procName params v4}
|
||||||
|
# dict set lexers C procRegexpCommand {regexp -nocase -all -- {\s*?func\s*?(\(\w+\s*?\**?\w+\)|)\s*?(\w+)\((.*?)\)\s+?([a-zA-Z0-9\{\}\[\]\(\)-_.]*?|)\s*?\{} $line match linkName procName params returns}
|
||||||
|
# dict set lexers C varRegexpCommand {regexp -nocase -all -line -- {^\s*?var\s+([a-zA-Z0-9\-_$]+)\s+(.+?)(\s*$)} $line match varName varType lineEnd}
|
||||||
|
dict set lexers C varRegexpCommand {regexp -nocase -all -line -- {^\s*(\w+\s+)+(?:[*\s]+)?(\w+)\s*[=;,\[]} $line match varType varName}
|
||||||
|
dict set lexers C commands {auto break case const continue default do else enum extern for goto if inline int long register restrict return signed sizeof static struct switch typedef typeof typeof_unqual union unsigned void volatile while}
|
||||||
|
|
||||||
|
#--------------------------------------------------
|
||||||
|
# H
|
||||||
|
dict set lexers H commentSymbol {//}
|
||||||
|
dict set lexers H commentMultilineSymbolBegin {/*}
|
||||||
|
dict set lexers H commentMultilineSymbolEnd {*/}
|
||||||
|
# dict set lexers C procFindString {^\s*(?:(\w+)\s+)+(PROCNAME)\s*\((.*?)(,|\))}
|
||||||
|
dict set lexers H procFindString {^\s*(?:(\w+)\s+)+(PROCNAME)\s*\((.*?)(,|\))}
|
||||||
|
dict set lexers H procRegexpCommand {regexp -nocase -all -line -- {^(?:(\w+)\s+)+(\*\w+|\w+)\s*\((.*?)(,|\))} $line match returns procName params v4}
|
||||||
|
# dict set lexers C procRegexpCommand {regexp -nocase -all -- {\s*?func\s*?(\(\w+\s*?\**?\w+\)|)\s*?(\w+)\((.*?)\)\s+?([a-zA-Z0-9\{\}\[\]\(\)-_.]*?|)\s*?\{} $line match linkName procName params returns}
|
||||||
|
dict set lexers C varRegexpCommand {regexp -nocase -all -line -- {^\s*(\w+\s+)+(?:[*\s]+)?(\w+)\s*[=;,\[]} $line match varType varName}
|
||||||
|
dict set lexers H commands {auto break case const continue default do else enum extern for goto if inline int long register restrict return signed sizeof static struct switch typedef typeof typeof_unqual union unsigned void volatile while}
|
||||||
|
|
||||||
# -------------------------------------------------
|
# -------------------------------------------------
|
||||||
dict set lexers ALL varDirectory {variables vars group_vars host_vars defaults}
|
dict set lexers ALL varDirectory {variables vars group_vars host_vars defaults}
|
||||||
|
|||||||
@@ -132,8 +132,10 @@ namespace eval Tree {
|
|||||||
$nbEditor select $nbItem
|
$nbEditor select $nbItem
|
||||||
set txt $nbItem.frmText.t
|
set txt $nbItem.frmText.t
|
||||||
set findString [dict get $lexers [dict get $editors $txt fileType] procFindString]
|
set findString [dict get $lexers [dict get $editors $txt fileType] procFindString]
|
||||||
|
DebugPuts "Tree::PressItem: $findString\n values: $values"
|
||||||
|
regsub -all {\*} $values {\\*} values
|
||||||
regsub -all {PROCNAME} $findString $values str
|
regsub -all {PROCNAME} $findString $values str
|
||||||
|
DebugPuts "Tree::PressItem: $str"
|
||||||
Editor::FindFunction $txt "$str"
|
Editor::FindFunction $txt "$str"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ exec wish8.6 "$0" -- "$@"
|
|||||||
# Home page: https://nuk-svk.ru
|
# Home page: https://nuk-svk.ru
|
||||||
######################################################
|
######################################################
|
||||||
# Version: 2.0.0
|
# Version: 2.0.0
|
||||||
# Release: beta3
|
# Release: beta4
|
||||||
# Build: 06022026135717
|
# Build: 13022026112625
|
||||||
######################################################
|
######################################################
|
||||||
|
|
||||||
# определим текущую версию, релиз и т.д.
|
# определим текущую версию, релиз и т.д.
|
||||||
|
|||||||
@@ -35,10 +35,10 @@ sed -i "s/.*Release:.*/Release:\t${RELEASE}/" ${RPM_BUILD_DIR}/SPECS/projman.spe
|
|||||||
|
|
||||||
fakeroot rpmbuild -ba "${RPM_BUILD_DIR}/SPECS/projman.spec"
|
fakeroot rpmbuild -ba "${RPM_BUILD_DIR}/SPECS/projman.spec"
|
||||||
|
|
||||||
# cp ${RPM_BUILD_DIR}/RPMS/noarch/projman-${VERSION}-${RELEASE}.noarch.rpm /files/
|
cp ${RPM_BUILD_DIR}/RPMS/noarch/projman-${VERSION}-${RELEASE}.noarch.rpm ../
|
||||||
# cp ${RPM_BUILD_DIR}/SRPMS/projman-${VERSION}-${RELEASE}.src.rpm /files/
|
cp ${RPM_BUILD_DIR}/SRPMS/projman-${VERSION}-${RELEASE}.src.rpm ../
|
||||||
|
|
||||||
rm -v projman
|
rm -v projman
|
||||||
rm -r -v ${RPM_BUILD_DIR}/SPECS/projman.spec
|
rm -r -v ${RPM_BUILD_DIR}/SPECS/projman.spec
|
||||||
rm -r -v ${RPM_BUILD_DIR}/SOURCES/projman-${VERSION}-${RELEASE}.tar.gz
|
rm -r -v ${RPM_BUILD_DIR}/SOURCES/projman-${VERSION}-${RELEASE}.tar.gz
|
||||||
rm -r -v ${RPM_BUILD_DIR}/BUILD/projman
|
#rm -r -v ${RPM_BUILD_DIR}/BUILD/projman
|
||||||
|
|||||||
@@ -70,6 +70,21 @@ fi
|
|||||||
%{_iconsdir}/hicolor/48x48/apps/projman.png
|
%{_iconsdir}/hicolor/48x48/apps/projman.png
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Feb 13 2026 svk <svk@nuk-svk.ru> 2.0.0-beta4
|
||||||
|
- Исправлено регулярное выражение для поиска переменных в коде на С.
|
||||||
|
- Добавил экранирование '*' в имени функции для поиска.
|
||||||
|
- Подкрректировал регулярки для работы с С.
|
||||||
|
- Исправил закрытие вкладки при отпускании кнопки мыши при нажатии на крестик.
|
||||||
|
- Добавил иконки для 'c' и 'h'. Добавил сочитание Alt-R в русской раскладке
|
||||||
|
- Добавил поддержку С (подсветка)
|
||||||
|
- Добавил копирование готовых пакетов
|
||||||
|
|
||||||
|
* Fri Feb 6 2026 svk <svk@nuk-svk.ru> 2.0.0-beta3
|
||||||
|
- Откорректировал сборку рпм
|
||||||
|
|
||||||
|
* Fri Feb 6 2026 svk <svk@nuk-svk.ru> 2.0.0-beta3
|
||||||
|
- Добавил сборку rpm. Исправил changelog-и
|
||||||
|
|
||||||
* Fri Feb 6 2026 svk <svk@nuk-svk.ru> 2.0.0-beta3
|
* Fri Feb 6 2026 svk <svk@nuk-svk.ru> 2.0.0-beta3
|
||||||
- changelog-gen: сделал вывод изменения в формате rpm.spec
|
- changelog-gen: сделал вывод изменения в формате rpm.spec
|
||||||
- Исправил смену регистра в заголовках вкладок
|
- Исправил смену регистра в заголовках вкладок
|
||||||
@@ -221,3 +236,6 @@ fi
|
|||||||
- Исправлена подсветка SHELL переменных а YAML файлах (ansible
|
- Исправлена подсветка SHELL переменных а YAML файлах (ansible
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user