сделать стартовой  |  добавить в избранное

   SciTE - редактор кода для программистов

Архив SciTE-форума


Автор: Redisych, Отправлено:10:06 26-10-2009
Прошу помочь в вопросе выбора формата записи для оптимального использования возможностей подсветки синтаксиса.


По SciTE. Нужна кнопка "Поверх всех окон" в панели инструментов. Возможно?
Автор: Kastermight, Отправлено:20:14 29-10-2009
Всем привет.
Возмжна ли такая красота как на скрине? (скрин сделан с NP++)

Автор: Erendir, Отправлено:20:30 29-10-2009
есть не совсем такая красота, а только выделение маркером ключевых слов, открывающих и закрывающих блоки текста.
На данный момент полностью работает только с Луа и Си, но там всё довольно просто настраивается (таблица keywords, стр. 34-42)
[more=Собсно скрипт]
--[[--------------------------------------------------
HighlightFoldingKeywords.lua
Authors: TymurGubayev
Version: 1.0
------------------------------------------------------
Description:
marks folding keywords with find.mark.MNr
tested only with lua (other languages require customization)
may work OOB correct with C
------------------------------------------------------
Installation:
* add the script to SciTEStartup.lua
* add find.mark.6=#CC00FF,@50 to your properties
(or find.mark.6=#FFFFFF,plain or something else on your choice)
* modify the tables of keywords, if needed (it should work good with Lua and C out of the box)
* make a look at constants section
--]]--------------------------------------------------

-- shortcuts
local editor = editor
----------------------------------------------------------------------------------
-- constants
local NEWLINELENGTH = 2 -- is it possible to get this from editor propertys?..
local MNr = 6 -- Mark style Nr used in the script
----------------------------------------------------------------------------------


local trunk = 2^4 -- only 4 bits are used to define level of line
local function GetLevel ( index )
    return (editor.FoldLevel[ index ])%trunk
end -- GetLevel


local keywords = {}
    keywords.foldstart = { 'if', 'local function', 'function', 'repeat', 'while', 'for', 'do', '{', '('}
    keywords.foldend = { 'end', 'until', '}', ')' } --@todo: brackets dont work really correct

    keywords.foldmid = {
        ['if'] = {'then','elseif','else'},
        ['while'] = {'do'},
        ['for'] = {'do'},
    }
local function MarkKeywordInLine ( lineNr, keywords )
local line = editor:GetLine(lineNr)
    if not line then return end -- in case of EOF

    local keyword, _start, _end
for _, k in ipairs( keywords ) do
        _start, _end = line:find( k, 1, true)
        if _start then
            keyword = k
            break
        end
end --for
    if not keyword then
        --error("No keyword found?!! It's impossible!!!")
        return
    end

    local pos = editor:PositionFromLine(lineNr)
    EditorMarkText( pos+_start-1, #keyword, MNr )
    return keyword, pos
end -- MarkKeywordInLine

local function MarkKeywordsInBlock ( midkeywords, blockstart, blockend )
    if not midkeywords then return end

    local level = GetLevel( editor:LineFromPosition(blockstart) )
    for i = 1, #midkeywords do
        local keyword = midkeywords[ i ]
        local searchstart = blockstart
        local _start = editor:findtext( keyword, SCFIND_WHOLEWORD, searchstart, blockend )
        while _start do
            if not IsComment(_start) then
                local linelvl = GetLevel( editor:LineFromPosition(_start) )
                if linelvl == level then
                    EditorMarkText( _start, #keyword, MNr )
                elseif linelvl == level+1 then -- process 'elseif'-case
                    local lineNr = editor:LineFromPosition(_start)
                    local linestart = editor:PositionFromLine(lineNr)
                    local _, linelength = editor:GetLine(lineNr)
                    -- is the line with keyword start of a new block?
                    local hasstartblockkey = false
                    for k, _ in pairs( keywords.foldmid ) do
                        if editor:findtext( k, SCFIND_WHOLEWORD, linestart, linestart+linelength ) then
                            hasstartblockkey = true
                            break
                        end
                    end --for
                    
                    if not hasstartblockkey then
                        EditorMarkText( _start, #keyword, MNr )
                    end --if
                end
            end -- if
            
            searchstart = _start + #keyword
            _start = editor:findtext( keyword, SCFIND_WHOLEWORD, searchstart, blockend )
        end
    end -- for
    
end -- MarkKeywordsInBlock

local function Update( lineNr )
EditorClearMarks(MNr)
    lineNr = lineNr or editor:GetLine()
-- local lineNr = 25

local foldstart = editor.FoldParent[ lineNr ] + 1
if foldstart == 0 then return end

local level = GetLevel( lineNr )

local foldend = lineNr
while GetLevel( foldend ) >= level do
     foldend = foldend + 1
end

    local keyword, _start = MarkKeywordInLine( foldstart-1, keywords.foldstart )
    local _, _end = MarkKeywordInLine( foldend-1, keywords.foldend )
    if _end then
        MarkKeywordsInBlock( keywords.foldmid[keyword], _start, _end )
    end
end

-- Add user event handler OnUpdateUI
local old_OnUpdateUI = OnUpdateUI
function OnUpdateUI ()
    local result
    if old_OnUpdateUI then result = old_OnUpdateUI() end
    if props['FileName'] ~= '' then
        Update(editor:LineFromPosition(editor.CurrentPos))
    end
    return result
end

[/more]
Автор: mozers, Отправлено:02:36 30-10-2009
Kastermight
Чесноговоря не понял что есть на скрине такого чего нет в SciTE
Пунктирная линия между парными скобочками? Так это - indentation.guides
Автор: Kastermight, Отправлено:21:56 02-11-2009

Цитата:
Пунктирная линия между парными скобочками?

не сама линия, а именно подсвечивание при наведении мышкой. удобно выделять открывающие и закрывающие слова.
а по поводу indentation.guides буду смотреть. спасибо
Автор: mozers, Отправлено:10:51 03-11-2009
Ну и я про то же говорю:


Автор: Kastermight, Отправлено:12:38 03-11-2009
mozers
у меня не так
хотя все флаги стоят так, как в ссылке что ты указал. язык - Autoit3

А еще у меня не получается добавить свои хоткеии
Например, я хочу по нажатию Ctrl+F5 поставить проверку синтаксиса скрипта, добавляю в au3.properties

Код:

command.3.$(au3)=$(autoit3dir)\au3check.exe "$(FilePath)"
command.name.3.$(au3)=SyntaxCheck
command.shortcut.3.$(au3)=Ctrl+F5
command.save.before.3.$(au3)=1

но не работает все равно
Автор: mozers, Отправлено:22:37 05-11-2009
Kastermight
А в автоите отступы вообще дозволяются? Приведи пример валидного кода.
По второму вопросу - смотри (Alt+V) чему у тебя равны твои переменные $(autoit3dir) и $(au3). Похоже, что пустоте.

Автор: Kastermight, Отправлено:23:43 06-11-2009
mozers

Цитата:
А в автоите отступы вообще дозволяются?

Эм... не знаю, что конкретно ты имеешь в виду, но как правило, в автоите (но это исключительно правило хорошего тона) участок кода между fold/unfold ключами отступает на таб. Таким образом появляется вертикальная полоска. Но она не подсвечивается при наведении мышкой.
По поводу переменных, первое не пустое, а второе пустое. Хотя в au3.properties - явно указано что такое $(au3). самое интересное, что этот кусок properties взят с другой сборки Scite - Scite4AutoIt с офсайта AutoIt, и там все нормально работает.
PS: Вот кусок кода

Код:
While 1
$msg = GUIGetMsg()
Switch $msg
Case $hSlider
$k
= GUICtrlRead($hSlider)
$path = $s7Z & ' e "' & $sArc & '" -o"' & $sTmp & '" ' & $k & '.bmp' & ' -y'
FileDelete($filepath)
$filepath = $sTmp & '\' & $k & '.bmp'
RunWait($path, '', @SW_HIDE)
GUICtrlDelete($hPIC)
$hPIC = GUICtrlCreatePic($filepath, 10, 10, 256, 256)
GUICtrlSetCursor(-1, 3)
Case $hPIC
$iX
= MouseGetPos(0)
$iY = MouseGetPos(1)
$col = PixelGetColor($iX, $iY)
GUICtrlSetData($hEdit, '0x' & Hex($col, 6))
GUICtrlSetBkColor($hBox, $col)
Case $hButton
$col
= GUICtrlRead($hEdit)
$col = StringRight($col, 6)
;MsgBox(0, '', $col)
GUICtrlSetBkColor($hBox, Dec($col))
Case $GUI_EVENT_CLOSE
GUIDelete($hGUI)
DirRemove($sTmp, 1)
ExitLoop
EndSwitch
WEnd


Добавлено:
Вобщем, ты был прав mozers, вместо переменной $(au3) поставил явное значение. Все заработало. Не мог ты объяснить, что означают цифры

Код:
command.name.12.*.au3
и т.п.
Автор: mozers, Отправлено:00:41 07-11-2009
Kastermight
В привиденном тобой коде вертикальные направляющие не подсвечиваются ни в Notepad++ ни в Scite4AutoIt, потому что лексер au3, видимо, слабоват для этого дела.

Цитата:
вместо переменной $(au3) поставил явное значение
А можно было бы строчкой выше задать это значение au3=*.au3 и все.

Цитата:
что означают цифры
Номер команды в меню Tools (должен быть уникальным).


Автор: Kastermight, Отправлено:16:35 07-11-2009

Цитата:
А можно было бы строчкой выше задать это значение au3=*.au3 и все.

так об чем и речь, эта строчка была в файле, но Alt+V упорно твердила что значения нет

Цитата:
В привиденном тобой коде вертикальные направляющие не подсвечиваются ни в Notepad++ ни в Scite4AutoIt

ну так я про то и говорю. что не подсвечивается. подсвечивается только открывающие и закрывающие скобки, типа {} в cpp.
а мне бы хотелось, чтобы подсвечивалась любая вертикальная полоска, если навести на нее мышкой .

Автор: Nekt, Отправлено:13:56 08-11-2009
Можно-ли заставить программу выполнять lua код, в файле?
Можно-ли сделать маленький крестик на табе или в под главным крестиком в блокноте?
Кстати да, подсвечиваются только скобки... а вот как в блокноте, не делается.
Хотя делал поправки в файле конфигурации.
Автор: mozers, Отправлено:11:29 09-11-2009
Kastermight
Цитата:
эта строчка была в файле, но Alt+V упорно твердила что значения нет
Чудес - не бывает. Значит эта переменная была переопределена ниже.

Цитата:
подсвечивается только открывающие и закрывающие скобки
Совершенно верно. Более того что уже есть вряд ли когда будет.

Цитата:
а мне бы хотелось, чтобы подсвечивалась любая вертикальная полоска, если навести на нее мышкой
Мечтать, конечно - не вредно, но я очень сомневаюсь что это кто то будет реализовывать, поскольку такого функционала нет ни у одного редактора на планете Земля и от этой несправедливости еще никто, кроме тебя, пока не страдал.

Nekt
Цитата:
Можно-ли заставить программу выполнять lua код, в файле?
lua код выполняется движком lua. Поэтому либо ставь Lua на комп либо выполняй код из SciTE (в него этот движок встроен).

Цитата:
Можно-ли сделать маленький крестик на табе или в под главным крестиком в блокноте?
Ты не представляешь сколько эта х-ня потребует дополнительного кода.

Автор: Kastermight, Отправлено:12:27 09-11-2009
mozers
Спасибо за ответы

Цитата:
Чудес - не бывает. Значит эта переменная была переопределена ниже.

Ну уже не важно. Главное что теперь работает.

Цитата:
Совершенно верно. Более того что уже есть вряд ли когда будет.

На нет и суда нет

Цитата:
Мечтать, конечно - не вредно, но я очень сомневаюсь что это кто то будет реализовывать, поскольку такого функционала нет ни у одного редактора на планете Земля и от этой несправедливости еще никто, кроме тебя, пока не страдал.

Я тоже не страдаю. Просто увидел красивую штуку, подумал можно ли еще где-либо это прикрутить. Отрицательный ответ тоже ответ. А про ни один редактор, бла бла бла, и прочая лирика, так ведь Scite супер-пупер настраиваемый, хоть цвет глаз мне перенастроит, ан нет Шутки шутками, но это, конечно же, уровня и функционала редактора никак не умоляет. Поэтому у меня теперь два редактора живут на компе, и ничего
Еще раз спасибо, mozers
Автор: neo_max, Отправлено:21:18 10-11-2009
Nekt

Цитата:

Цитата:
Можно-ли сделать маленький крестик на табе или в под главным крестиком в блокноте?
Ты не представляешь сколько эта х-ня потребует дополнительного кода.

В качестве удобной альтернативы можно закрывать табы даблкликом или центральной кнопкой мыши по табу.
Автор: Oaklet, Отправлено:13:59 16-11-2009
В описании еще к версии 1.74 написано:
"Caret may be displayed as a block - курсор может отображаться в виде блока ..."
подскажите пожалуйста, как называется данное свойство курсора в SciTEGLOBAL.properties, или может я его не там ищу?
Автор: avaris, Отправлено:15:03 16-11-2009
А возможна ли сборка под Linux от ru-Board?
Автор: ALeXkRU, Отправлено:15:11 16-11-2009
avaris
угу. только с сильно урезанными возможностями: так и не нашлось энтузиаста, который портировал бы фичи под linux... по топику (поиском по версии для печати) можно поискать: несколько раз поднимался вопрос и даже что-то уже делали... можно с авторами связаться, узнать на каком этапе находится...
Автор: mozers, Отправлено:16:48 17-11-2009
Oaklet
Цитата:
Caret may be displayed as a block
Да, в History такой пункт имеется. Но я не нашел ни параметр, ни какого либо упоминания о нем в текущих исходниках SciTE.
То ли фичу незаметно похерили (сколько версий то уже сменилось) то ли я плохо искал...

avaris
ALeXkRU - прав

Автор: Orion_76, Отправлено:18:17 17-11-2009
аффигеть! кто спрашивал про работу Scite через FTP?
берем FTPDrive v3.5 Ссылка

подключаем FTP как локальный диск и работаем..

пробовал редактировать файлик, пописАл...Ctrl+S и Готово...

Не превычно только что нет индикатора загрузки как в Notepad++.
Хотя FTPDrive пишет лог в файлик...Если каким нибуди скриптиком выводить последние записи лога в консоль Scite... ВААБЩЕ будет замечательно!!-))



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 / 55 / 56 / 57 / 58 / 59 / 60 / 61 / 62 / 63 / 64 / 65 / 66 / 67 / 68 / 69 / 70 / 71 / 72 / 73 / 74 / 75 / 76 / 77 / 78 / 79 / 80 / 81 / 82 / 83 / 84 / 85 / 86 / 87 / 88 / 89 / 90 / 91 / 92 / 93 / 94 / 95 / 96 / 97 / 98 / 99 / 100 / 101 / 102 / 103 / 104 / 105 / 106 / 107 / 108 / 109 / 110 / 111 / 112 / 113 / 114 / 115 / 116 / 117 / 118 / 119 / 120 / 121 / 122 / 123 / 124 / 125 / 126 / 127 / 128 / 129 / 130 / 131 / 132 / 133 / 134 / 135 / 136 / 137 / 138 / 139 / 140 / 141 / 142 / 143 / 144 / 145 / 146 / 147 / 148 / 149 / 150 / 151 / 152 / 153 / 154 / 155 / 156 / 157 / 158 / 159 / 160 / 161 / 162 / 163 / 164 / 165 / 166 / 167 / 168 / 169 / 170 / 171 / 172 / 173 / 174 / 175 / 176 / 177 / 178 / 179 / 180 / 181 / 182 / 183 / 184 / 185 / 186 / 187 / 188 / 189 / 190 / 191 / 192 / 193 / 194 / 195 / 196 / 197 / 198 / 199 / 200 / 201 / 202 / 203 / 204 / 205 / 206 / 207 / 208 / 209 / 210 / 211 / 212 / 213 /
SciTE © 2004 - 2011