Подсветка синтаксиса конфигурационных файлов TC
Модераторы: Моторокер, Avada, CaptainFlint, Nik, d-view
yozhik
Нет, не знал. Спасибо инфу. Мне еще понравилось описание в вашем профиле - читал как на иголках. Одна строчка, а словно триллер качественный посмотрел )
Нет, не знал. Спасибо инфу. Мне еще понравилось описание в вашем профиле - читал как на иголках. Одна строчка, а словно триллер качественный посмотрел )
yozhik
Боюсь, что эпопея с CodeFold еще не закончена и, вероятно, еще долго будет длиться.
После такой функции следующие за ней функции вкладываются:
В другом модуле вкладываение начинается после такой строчки:
Боюсь, что эпопея с CodeFold еще не закончена и, вероятно, еще долго будет длиться.
После такой функции следующие за ней функции вкладываются:
Код: Выделить всё
Func WdxFieldType(ft_num)
Local s
Switch ft_num
Case 0
s = "ft_nomorefields"
Case 1
s = "ft_numeric_32"
Case 2
s = "ft_numeric_64"
Case 3
s = "ft_numeric_floating"
Case 4
s = "ft_date"
Case 5
s = "ft_time"
Case 6
s = "ft_boolean"
Case 7
s = "ft_multiplechoice"
Case 8
s = "ft_string"
Case 9
s = "ft_fulltext"
Case 10
s = "ft_datetime"
Case 11
s = "ft_stringw"
Case 12
s = "ft_fulltextw"
EndSwitch
Return s
EndFuncКод: Выделить всё
If bkg1 = -1 Then bkg1 = 1*255 + 256*255 + 65536*255yozhik
Да, я давно заметил, что ему именно Case..EndSwitch не "заходит". Взял исправленный .coder, проблема ушла, но частично. Теперь другие функции ниже WdxFieldType вкладываются. Надо бы все модули перетряхнуть, раз уж взялся, но вы пока посмотрите пару моментов.
1) Пример из справки. За DateDiff функции вкладываются:
2) Проблема действительно была не в If..Then, а в том, что выше по телу функции есть такое:
Видимо ему не нравится имя функции SwitchColors:
Добавлено спустя 7 минут:
После этой функции тоже вкладываются:
Добавлено спустя 11 минут:
Еще одна от Loopback:
Да, я давно заметил, что ему именно Case..EndSwitch не "заходит". Взял исправленный .coder, проблема ушла, но частично. Теперь другие функции ниже WdxFieldType вкладываются. Надо бы все модули перетряхнуть, раз уж взялся, но вы пока посмотрите пару моментов.
1) Пример из справки. За DateDiff функции вкладываются:
Код: Выделить всё
Func DateDiff(DateTime1, DateTime2, Unit)
Local TS1 = IsInt(DateTime1) ? DateTime1 : ToDateTime(DateTime1)
Local TS2 = IsInt(DateTime2) ? DateTime2 : ToDateTime(DateTime2)
Local Diff = (TS1 - TS2) / 10000000
Switch Unit
Case "M"
Return Floor(Diff / 60)
Case "H"
Return Floor(Diff / 3600)
Case "D"
Return Floor(Diff / 86400)
Else
Return Diff
EndSwitch
EndFuncКод: Выделить всё
If lParam = 1 And IsPressed(0x5B) Then
SwitchColors(1)
Return
EndIfКод: Выделить всё
RegisterCommand 70051 "SwitchColors"
Func SwitchColors(lParam)
EndFuncПосле этой функции тоже вкладываются:
Показать
Код: Выделить всё
Func CreateUwdxBar(Barname)
Local i = 0
Local bar, br2, wdx
# относительный путь к утилите
Local uwdx_dir = REL_UWDX
Local uwdx_exe = "%COMMANDER_PATH%" & uwdx_dir & "uwdx.exe"
Local uwdx_con = "%%COMMANDER_PATH%%" & uwdx_dir & "uwdx.exe"
Local uwdx_obj = "%P%N"
bar = DIR_BARS & barname & ".bar"
br2 = DIR_BARS & barname & ".br2"
ShellExec /SW_HIDE /WAIT:2000 %COMSPEC% "/c del /f /q ""%bar%"""
ShellExec /SW_HIDE /WAIT:2000 %COMSPEC% "/c del /f /q ""%br2%"""
If FileExist(bar) Then
MsgBox("Ошибка удаления " & bar, "uwdx")
Return 0
Endif
IniWrite %bar% "Buttonbar" "Buttoncount" "0"
If ERROR = 1 Then
MsgBox("Ошибка создания " & bar, "uwdx")
Return 0
EndIf
While i < 100
IniRead /R wdx %COMMANDER_INI% "ContentPlugins" %"i" "stop"
If wdx="stop" Then Break
wdx = StrTrim(StrRight(wdx, StrLen(wdx)-StrPos(wdx, "\", -1)))
IniWrite %bar% "Buttonbar" %"'Button' & i+1" %uwdx_exe%
IniWrite %bar% "Buttonbar" %"'Menu' & i+1" %wdx%
IniWrite /EV- %bar% "Buttonbar" %"'Cmd' & i+1" "%COMSPEC% /k"
Switch Barname
Case "Auto_uwdxa"
IniWrite %bar% "Buttonbar" %"'Param' & i+1" '"""%uwdx_con%""" /I %wdx% ""%uwdx_obj%""'
Case "Auto_uwdxe"
IniWrite %bar% "Buttonbar" %"'Param' & i+1" '"""%uwdx_con%""" /E /I %wdx% ""%uwdx_obj%""'
Else
IniWrite %bar% "Buttonbar" %"'Param' & i+1" '"""%uwdx_con%""" /I "%wdx%"'
EndSwitch
i = i + 1
Wend
IniWrite %bar% "Buttonbar" "Buttoncount" %i%
Return 1
EndFuncЕще одна от Loopback:
Показать
Код: Выделить всё
Func FindSelectedAndClear(hMenu, bRight)
Local nCount = DllCall("GetMenuItemCount", "handle", hMenu)
If nCount = 0 Then Return 0
Local Result = 0
Static lpmii = Buffer(AUTORUN_TCARCH = 64 ? 80 : 48)
lpmii.Zero()
lpmii.SetNum(0, "uint", lpmii.size, "uint", 1) # MIIM_STATE
For i = nCount - 1 to 0 Step -1
DllCall("GetMenuItemInfoW", "handle", hMenu, "uint", i, "bool", 1, "ptr", lpmii.ptr)
If lpmii.GetNum(12) = 0x8 Then # MFS_CHECKED
Switch i
Case 0
Result = bRight ? 201 : 101
Case 1
Result = bRight ? 202 : 102
Case 2
Result = bRight ? 200 : 100
Case 3
Result = bRight ? 169 : 69
Else
Result = 70 + i - 7
If Result < 100 Then
If bRight Then Result += 100
Else
Result += (bRight ? 7030 : 6530) - 100
EndIf
EndSwitch
EndIf
DllCall("RemoveMenu", "handle", hMenu, "uint", i, "uint", 0x400)
Next
Return Result
EndFuncOrion9
Путаницу Else..EndSwitch с Else..EndIf пока поборол.
Для разграничения Switch и Switch... пока соорудил костыль. Все последние примеры обрабатываются сейчас корректно. По идее не должно было так произойти, чтобы SwitchColor прокатил вместо Switch, плагин должен проверять разделитель (пробел) справа от Switch. Или я, как обычно, недопонял чего
Написал пока на форуме AkelPad, поглядим что скажут.
Путаницу Else..EndSwitch с Else..EndIf пока поборол.
Для разграничения Switch и Switch... пока соорудил костыль. Все последние примеры обрабатываются сейчас корректно. По идее не должно было так произойти, чтобы SwitchColor прокатил вместо Switch, плагин должен проверять разделитель (пробел) справа от Switch. Или я, как обычно, недопонял чего
Amo ergo sum
yozhik
Смутило, что в версии 0.15.6 появилась надпись в заголовке: This file must be encoded in UTF-16 LE. Я спросонья начал переводить mnu в юникод. Убил ТС. Хотелось-бы, чтобы эта надпись исчезла. Ни к чему она. И так понятно, что файлы кодера должны быть в юникоде. А кому не понятно. они вообще не будут в этот файл заглядывать.
Смутило, что в версии 0.15.6 появилась надпись в заголовке: This file must be encoded in UTF-16 LE. Я спросонья начал переводить mnu в юникод. Убил ТС. Хотелось-бы, чтобы эта надпись исчезла. Ни к чему она. И так понятно, что файлы кодера должны быть в юникоде. А кому не понятно. они вообще не будут в этот файл заглядывать.
AkulaBig
Ух, вон как бывает, я бы и не подумал даже.
Я бы лучше заменил на «Coder-file must be encoded...», чтобы исключить двусмысленность. Идёт?
Если честно, совсем убирать как-то душа не лежит
Потому что если кодировка другая, то AkelPad просто тихо игнорирует файл. Если бы он ругался, тогда ладно. Но он вот именно что тихо, ничего не сообщает, и ломай потом голову почему у тебя подсветка не работает.
Ух, вон как бывает, я бы и не подумал даже.
Я бы лучше заменил на «Coder-file must be encoded...», чтобы исключить двусмысленность. Идёт?
Если честно, совсем убирать как-то душа не лежит
Amo ergo sum
Это понятно. Но кто будет делать этот файл в другой кодировке? В поставляемых с AkelPad файлах кодировки нет никаких упоминаний про юникод. И получается разночтение. У Андрея Аверина тоже нет. Получается только у вас есть.yozhik писал(а):если кодировка другая, то AkelPad просто тихо игнорирует файл
AkulaBig
Про UTF-16LE было известно ещё давно, но автор так и не указал это в справке
https://akelpad.sourceforge.net/forum/v ... 6LE#p21954
Про UTF-16LE было известно ещё давно, но автор так и не указал это в справке
https://akelpad.sourceforge.net/forum/v ... 6LE#p21954
TC 11.58 combo, Windows 11 x64
jentoso
Вот, значит, проблема есть, не надумана. Хотя в «справке» я это уже указал:
https://github.com/yozhic/AkelPad-coder ... ER.TXT#L12
Вы как считаете, удалить комментарий «Coder-file must be encoded in UTF-16 LE» из coder-файлов или оставить?
Вот, значит, проблема есть, не надумана. Хотя в «справке» я это уже указал:
https://github.com/yozhic/AkelPad-coder ... ER.TXT#L12
Вы как считаете, удалить комментарий «Coder-file must be encoded in UTF-16 LE» из coder-файлов или оставить?
Amo ergo sum