Ru-Board.club
← Вернуться в раздел «Программы»

» SciTE - Open Source Text Editor for Windows & Linux

Автор: mozers
Дата сообщения: 20.10.2009 09:40
JawsIk
Цитата:
новый файл снова создаётся в кодировке win-1251, и при этом портиться текущий
Перемести код скрипта в конец SciTEStartup.lua.
Убери BOM из SciTEStartup.lua (он уже туда, очевидно, успел записаться).
Замени IDM_ENCODING_UTF8 на IDM_ENCODING_UCOOKIE.

Цитата:
А почему нельзя это дело просто сделать в настройках.
Можно просто поставить code.page=65001.

Цитата:
Я так ждал обновлений, думал, что в версии 2 это исправят
Все давно есть. Никто ничего исправлять не будет.

The_S
Я частенько редактирую hta-файлы с внедренными в них JS скриптами и хотя в лексере hypertext есть встроенная подсветка для js предпочитаю вручную переключится с Hypertext на JavaScript. Тем самым я не только обеспечиваю корректную вставку комментария, но и все остальные фичи (автоподстановка, сокращения, подсказки и пр.) начинают работать корректно, применительно к JS. Так что комментарии тут - такая мелочь, что и заморачиваться на эту тему неохота.
А сделать чтоб редактор автоматически определял язык вставки и переключался к нему, я думаю - можно, вот только думать надо и подводных камней тут - море...
Автор: Kastermight
Дата сообщения: 20.10.2009 11:04
Всем привет.
Как сделать так, чтобы редактор не переключал слово/команды в верхний регистр, пока не будет выбрана какой либо вариант из предложенных?
У меня, например, так:
Пользуемый язык подсветки - AutoIt
При наборе, скажем, #include редактор после ввода in переводит его в uppercase, получается In.
Так же, со всякими там Is, As и т.д.
Автор: mozers
Дата сообщения: 20.10.2009 13:13
Kastermight
C первым постом!
Решение - простое. Закомментировать строчку
Код: dofile (props["SciteDefaultHome"].."\\tools\\AutocompleteObject.lua")
Автор: Kastermight
Дата сообщения: 20.10.2009 13:25

Цитата:
C первым постом!

Спасибо

Цитата:
Код:
dofile (props["SciteDefaultHome"].."\\tools\\AutocompleteObject.lua")

Еще раз спасибо, наконец-то можно не рвать на себе волосы
mozers, подскажи пож-та, с чего начать изучать для того, чтобы создать свою конфигурацию подсветки? У меня есть рабочие файлы DATA, хочу на это расширение подвесить свою собственную подсветку. Список ключевых слов для различных стилей и folding/unfolding'а есть.
Спасибо
Автор: mozers
Дата сообщения: 20.10.2009 15:39
Kastermight
Я бы снял все комменты с #~ import languages\ и раскомментировал все пункты меню "Подсветка" menu.language.
Открыл бы этот твой файл и помотрел при каком пункте меню "Подсветка" он будет выглядеть наиболее адекватно (при этом на приятность цвета надо меньше всего обращать внимание).
После этого, выбранный файл .properties копируем в новый data.properties и подключаем его как все остальные.
После этого, начинаем его курежить - заменять ключевые слова на наши, подбирать цвета и пр. (что означают те, или иные параметры ПОДРОБНО расписано в документации).
Если из имеющейся тучи лексеров вообще ничего не подойдет, то тогда - бухайся в ноги к программерам и оъясняй им чего тебе надо. Только писать лексер для одного человека вряд ли кто будет...
Автор: Kastermight
Дата сообщения: 20.10.2009 17:22
ок. думаю разберусь
вот еще вопрос, почему при открытии нового файла у него автоматом появляется расширение открытого файла? и как это изменить?
извини, если ответы на все эти вопросы уже содержатся в этой теме, просто кол-во страниц пугает. Сей редактор поставил всего лишь пару дней назад, до этого нещадно юзал/юзаю np++. хотя и на основе Scintilla, все же отличается. к примеру, для того чтобы сделать свою подсветку, мне пришлось всего лишь вбить все ключевые слова разбив их по блокам по значимости в файл lang.xml. жаль что тут нет такой простоты, и нужно обращаться к помощи программистам. но все равно превосходство ощущается конечно, Scite перед np++
Автор: mozers
Дата сообщения: 20.10.2009 18:29
Kastermight
Цитата:
почему при открытии нового файла у него автоматом появляется расширение открытого файла? и как это изменить?
Если это не кажется тебе удобным, то закомментируй строчку в SciTEStartup.lua
Код: dofile (props["SciteDefaultHome"].."\\tools\\new_file.lua")
Автор: Redisych
Дата сообщения: 23.10.2009 14:58
Не нашёл в топике...
В "Поиск" не отмечен чекбокс "Учитывать регистр". Однако поиск регистрозависимый для кириллицы.
Автор: Coment
Дата сообщения: 23.10.2009 19:26
Здраствуйте. Я понимаю, что скореей всего подобный вопрос задавался, но на дайл-апе физически нету возможности пересмотреть весь форум. Скажите, плизззз, что за проблема. Подключил брландовский компилятор к SciTE-у вот так:

cc=C:\BCC55\BIN\bcc32 -v- -w -O1 $(FileNameExt)
...
command.compile.$(file.patterns.cplusplus)=$(cc)

и выдает при компиляции:
Error E2133: Unable to execute command 'ilink32.exe'

Борланд компилит нормально программу, а вот SciTE не хочет ((( Хотя если выполнят заранее скомпилированую програму, то SciTE выдает результат ее действия.

Подскажите пожалуйста, что сделать. Очень нужно.
Автор: mozers
Дата сообщения: 23.10.2009 19:46
Redisych
В SciTE-Ru имется доработка на эту тему LowerUpperCase но что то после версии 2.0 работать перестала
Авторы! Молим о помощи!

Coment
С первым постом!
Цитата:
Борланд компилит нормально программу
Приведи полностью ком. строку с которой компилит Борланд.
С ком. строки
Код: C:\BCC55\BIN\bcc32 -v- -w -O1 имя_компилируемого_файла
Автор: Coment
Дата сообщения: 23.10.2009 19:48
>C:\BCC55\BIN\bcc32 -v- -w -O1 1.cpp
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
1.cpp:
Error E2133: Unable to execute command 'ilink32.exe'
>Exit code: 1

Не через Скайта компилится нормально.
Автор: mozers
Дата сообщения: 24.10.2009 10:11
Coment
Т.е. эта же ком. строка запущенная из того же каталога компилит 1.cpp без ошибок? И только если запускать ее из SciTE возникает ошибка?
Такого не может быть, поскольку не может быть никогда!
Вообще зачастую откомпилить один файл из проекта попросту невозможно и компиляция осуществляется с помощью make файла в котором указаны все необходимые параметры.
Подключение компилятора Borland C++ 5.5 и компиляция SciTE рассматривались давно. (Новый код SciTE в борланде уже не компилится)
Автор: RizaR
Дата сообщения: 24.10.2009 16:15
здраствуйте.
Вопрос по бекапам файлов.
Не совсем понимаю, где это может находится?

Цитата:

#backup.path=$(TEMP)\$$$SciTE.tmp
#~ backup.path=_bak_

Это куда он будет сохранять?

Цитата:

backup.files=1

# ключ определяет кол-во сохраняемых вариантов. Отсутствие ключа или 0 - отказ от создания резервной копии

Это как понять? сделает 20 копий, а потом прекратит? Или будет затирать более старые?

Возможно ли каким-то образом, чтобы при сохранении бекапа, бекапный файл был вида дата-имяфайла.bak ?

Заранее благодарен за помощь
Автор: mozers
Дата сообщения: 24.10.2009 17:20
RizaR
Цитата:
backup.path=$(TEMP)
В каталоге, определяемом переменной окружения TEMP (выполни команду SET с коммандной строки - увидишь все переменные окружения).

Код: backup.path=_bak_
Автор: Coment
Дата сообщения: 24.10.2009 18:59
Значит дело в чем - запускаю Борланд и компилирую программу. Все проходит упешно, программа запускается и пишет "Hello world" =) Открываю Скайт, который подключил к Борланду. Открываю файл с программой и нажимаю кнопку "компилировать". После этого Скайт выдает те строки, что я написал постом выше. Если нажимаю кнопку GO, то он выполняет ранее скомпилированую Борландом программу, но сам компилировать не хочет и выдает ошибку "ilink32.exe". Замечю, что годом раньше, я уже делал подобную связку Скайта и Борланда и все работало, а теперья просто в ступоре, что за ошибка и как ее обойти. Вот. Можна конечно дальшеюзать просто Борланд, но так хочется комфорта, который дает Скайт. Грустно. =)))
Автор: RizaR
Дата сообщения: 24.10.2009 19:29
Спасибо за помощь
Отличная штуковина таки

Но мне бы хотя бы для начала альтернативным вариантом воспользоваться как-нибудь.
выставляю
backup.path=_bak_
и хрен... ничего не создается, ничего не бекапится.
Убираю, все бекапится в дирректорию с файлом. auto_backup.lua не правил.
В глобальном конфиге следующее:

Цитата:

# Автоматическое создание резервного *.bak файла (auto_backup.lua)
# ключ определяет кол-во сохраняемых вариантов. Отсутствие ключа или 0 - отказ от создания резервной копии
backup.files=20
# Каталог для сохранения резервных копий (возможно использование переменных окружения)
# При отсутствии параметра резервные копии сохраняются рядом с исходным файлом
backup.path=_bak_


Папка создается, а вот бекап файла в ней не имеется

UPD. Все разобрался. Проблема в пробелах заключалась
Автор: mozers
Дата сообщения: 25.10.2009 10:42
Coment
Цитата:
Значит дело в чем - запускаю Борланд и компилирую программу. Все проходит упешно
Пока ты не выяснишь какой командной строкой Борланд компилит твою программу, пока ты не сделаешь обычный bat файл для компиляции, про SciTE даже не заикайся - он тут СОВЕРШЕННО ни при чем!
Вероятнее всего что в твоей ком.строке просто не хватает путей к ilink32.exe. Надо либо задавать их явно, либо задавать в PATH. Но обсуждение этой темы - явный оффтоп.
Автор: Redisych
Дата сообщения: 26.10.2009 09:06
Прошу помочь в вопросе выбора формата записи для оптимального использования возможностей подсветки синтаксиса.


По SciTE. Нужна кнопка "Поверх всех окон" в панели инструментов. Возможно?
Автор: Kastermight
Дата сообщения: 29.10.2009 19:14
Всем привет.
Возмжна ли такая красота как на скрине? (скрин сделан с NP++)
Автор: Erendir
Дата сообщения: 29.10.2009 19:30
есть не совсем такая красота, а только выделение маркером ключевых слов, открывающих и закрывающих блоки текста.
На данный момент полностью работает только с Луа и Си, но там всё довольно просто настраивается (таблица 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
Дата сообщения: 30.10.2009 01:36
Kastermight
Чесноговоря не понял что есть на скрине такого чего нет в SciTE
Пунктирная линия между парными скобочками? Так это - indentation.guides
Автор: Kastermight
Дата сообщения: 02.11.2009 20:56

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

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

Автор: Kastermight
Дата сообщения: 03.11.2009 11:38
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
Дата сообщения: 05.11.2009 21:37
Kastermight
А в автоите отступы вообще дозволяются? Приведи пример валидного кода.
По второму вопросу - смотри (Alt+V) чему у тебя равны твои переменные $(autoit3dir) и $(au3). Похоже, что пустоте.
Автор: Kastermight
Дата сообщения: 06.11.2009 22:43
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
Дата сообщения: 06.11.2009 23:41
Kastermight
В привиденном тобой коде вертикальные направляющие не подсвечиваются ни в Notepad++ ни в Scite4AutoIt, потому что лексер au3, видимо, слабоват для этого дела.

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

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

Автор: Kastermight
Дата сообщения: 07.11.2009 15:35

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

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

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

ну так я про то и говорю. что не подсвечивается. подсвечивается только открывающие и закрывающие скобки, типа {} в cpp.
а мне бы хотелось, чтобы подсвечивалась любая вертикальная полоска, если навести на нее мышкой .
Автор: Nekt
Дата сообщения: 08.11.2009 12:56
Можно-ли заставить программу выполнять lua код, в файле?
Можно-ли сделать маленький крестик на табе или в под главным крестиком в блокноте?
Кстати да, подсвечиваются только скобки... а вот как в блокноте, не делается.
Хотя делал поправки в файле конфигурации.
Автор: mozers
Дата сообщения: 09.11.2009 10:29
Kastermight
Цитата:
эта строчка была в файле, но Alt+V упорно твердила что значения нет
Чудес - не бывает. Значит эта переменная была переопределена ниже.

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

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

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

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

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: Universal Share Downloader


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.