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

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

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


Автор: mirk, Отправлено:12:19 21-06-2006

Цитата:

Release 1.70
Released on 20 June 2006.
On GTK+, character set conversion is performed using an option that allows approximate conversions rather than failures when a character can not be converted. This may lead to similar characters being inserted or when no similar character is available a '?' may be inserted.
On GTK+, the internationalised IM (Input Method) feature is used for all typed input for all character sets.
Scintilla has new margin types SC_MARGIN_BACK and SC_MARGIN_FORE that use the default style's background and foreground colours (normally white and black) as the background to the margin.
Scintilla/GTK+ allows file drops on Windows when drop is of type DROPFILES_DND as well as text/uri-list.
Code page can only be set to one of the listed valid values.
Text wrapping fixed for cases where insertion was not wide enough to trigger wrapping before being styled but was after styling.
SciTE find marks are removed before printing or exporting to avoid producing incorrect styles.

Автор: gansA, Отправлено:12:19 21-06-2006
Neil Hodgson | 20 Jun 16:02

SciTE 1.70 released
SciTE 1.70 is now available from the scintilla.org web site.

SciTE 1.70 is a minor enhancement and bug fix release with an
emphasis on internationalisation. On GTK+, approximate character set
conversions are used for pasting and other actions and internationalised
keyboard input is used at all times. Only valid code pages may be set.

A detailed list of changes is available on the history page.

Thanks to the contributors of code and documentation and to the testers.

http://scintilla.sourceforge.net/SciTEDownload.html
Автор: dB6, Отправлено:13:14 21-06-2006

Цитата:
Code page can only be set to one of the listed valid values.

Немного пугающая строка, но проверил и успокоился. Переключение DOS866|win1251 работает.
Автор: ALeXkRU, Отправлено:06:01 22-06-2006
как обычно - переложение history:

Release 1.70 , релиз от 20 июня 2006.

В GTK+ преобразование кодировки выполняется с использованием опции которая разрешает приблизительное преобразование с заменой наиболее похожим символом, если символ не может быть преобразован. Это может приводить к вставке подобных символов или символа '?' при их отсутствии.

В GTK+ используется интернациональный метод ввода (IM) при вводе всех типов символов для всех кодировок.

В Scintilla добавлены новые типы для границы (поля) SC_MARGIN_BACK и SC_MARGIN_FORE, которые используют по-умолчанию цвета фона и шрифта стиля (обычно белый и черный) в качестве фона границы (поля).

Scintilla/GTK+ разрешает перетаскивание файлов в окна если приемник имеет тип DROPFILES_DND схожий со списком text/uri.

Для кодовой страницы может быть установлено только одно из перечисленных верных значений.

Перенос текста фиксировался в случае, если вставка не расширилась достаточно для изменения переключателя (триггера) переноса перед изменением стиля, но стала достаточно широка после модификации.

SciTE обнаруживает отметки, которые были удалены перед печатью или экспортом в некорректный стиль сторонних продуктов.

(некоторые фразы подкорректировал)
Автор: mozers, Отправлено:09:12 22-06-2006
Русская корректировка (Source) и откомпилированное ядро SciTE 1.70

К сожалению, код mimir-а (расширяющий функциональность abbrev) мне внедрить не удалось
Мой Borland C++ Compiler 5.5 выдает ошибки...
А mimir опять куда то пропал... Может кто поможет засунуть этот код в SciTEBase.cxx ?

ALeXkRU
оперативно (только подкорректировать действительно можно)

Автор: mirk, Отправлено:09:35 22-06-2006
ALeXkRU, Mozers, шустрые какие, за вами не поспеешь
Автор: mirk, Отправлено:22:05 27-06-2006
Статистика посещаемости сайта за прошлую неделю:

Чтение RSS каналов - 1201 раз
Скачивание сборки - 168 раза
Скачивание исходников сборки - 21 раз

Дата Хосты Хиты [главная страница]
19.06.2006 335 1122 [ 388 ]
20.06.2006 318 1137 [ 215 ]
21.06.2006 205 764 [ 77 ]
22.06.2006 121 708 [ 96 ]
23.06.2006 110 528 [ 128 ]
24.06.2006 210 471 [ 55 ]
25.06.2006 72 416 [ 99 ]


Цифры прыгают так сильно потому, что я переодически размещаю ссылку на сайт в комментах подходящих по тематике постов nnm.ru.

P.S. Защитил диплом на 4... счастья полные штаны
Перед защитой не спал толком неделю
Счас буду пьянствовать, гулять, отсыпаться...


Автор: mozers, Отправлено:16:06 01-07-2006
Посвящается тем, кто выжил в этой отупляющей жаре
Код:
-- Вставка спецсимволов (©,®,§,±,…) из раскрывающегося списка (для HTML вставляются их обозначения)
-- mozers™ icq#256106175
-- Для подключения добавьте в свой файл .properties следующие строки:
-- command.name.21.*=Вставить спецсимвол (©, ®, §, ±,…)
-- command.21.*=SpecialChar
-- command.mode.21.*=subsystem:lua,savebefore:no
-----------------------------------------------------------------------

function SpecialChar()
local sep = ';'
local user_list = ' '..sep..'™'..sep..'©'..sep..'®'..sep..'§'..sep..'«'..sep..'»'..sep.. '“'..sep..'”'..sep..'‘'..sep..'’'..sep..'±'..sep..'•'..sep..'¤& #39;..sep..'°'
editor.AutoCSeparator = string.byte(sep)
editor:UserListShow(12,user_list)
editor.AutoCSeparator = string.byte(' ')
end

local char2html = {[' ']=" ",['™']="™",['©']="©",['®']=& quot;®",['§']="§",['«']="«",['»']="& ;raquo;",['“']="“",['”']="”",['‘']="&lsquo ;",['’']="’",['±']="±",['•']="& middot;",['¤']="¤",['°']="°"}

function OnUserListSelection(tp,sel_value)
if tp == 12 then
local pos = editor.CurrentPos
if editor.Lexer == SCLEX_HTML then
sel_value = char2html[sel_value]
end
editor:InsertText(pos, sel_value)
pos = pos + string.len(sel_value)
editor:SetSel(pos, pos)
end
end

Я думаю, что данный скрипт будет интересен и для тех, кто никогда спецсимволы не вставляет. Просто таким образом можно очень удобно оранизовывать пользовательские контекстные меню для решения самых разнообразных задач.


Все никак не могу довести до ума еще один, более интересный скрипт для автодополнения. Ну, чтобы работало нормально как у солидных редакторов, а не так как сейчас.
Т.е. пишем имя объекта, ставим точку - сразу возникает список его свойств и методов (берется из api-файла). Выбираем , допустим, один из методов, ставим точку - опять возникает список свойств и методов но уже того, что выбрали ранее. Например, так:
Код:
self.document.body.createTextRange
Тыкаюсь как слепой кутенок, не зная толком LUA. Все операторы списываю с чужих кодов и тестирую отдельно - чтобы врубится как тот или иной работает.
Зависаю по нескольку дней над решением монументальных проблем - "Как заменить нужный текст если этот текст не выделен?", "Как узнать имя подключенного в данный момент api-файла?", "Как вставить текст и одновременно передвинуть курсор в конец этой вставки?",... ну и т.п....

P.S. mirk
Поздравляю
Не слишком много отсыпайся - у нас делов....

Автор: mozers, Отправлено:23:08 01-07-2006
Выкладываю скрипт для автодополнения:
[more]
Код:
-- Автодополнение объектов их методами и свойствами
-- Точка после имени объекта вызывает список его методов/свойств (берутся из соответствующего api файла)
-- Пробел, скобка или точка изменяют регистр символов в имени объекта в соответствии с записью в api файле
-- (например "ucase" при вводе автоматически заменяется на "UCase")
-- mozers™ icq#256106175
-- version 0.8

function AutocompleteObject(char)
if not (char == "." or char == ":" or char == " " or char == "(") then
return false
end

-- get api file (not use pattern in prop!
local api_filename = props['api.*.'..props['FileExt']]
local api_file = io.open(api_filename)
if not api_file then
return false
end

-- get object name
local object = GetWordLeft()
local len_obj = string.len(object)
if len_obj == 0 then
return false
end

-- find methods and properties object's in api file (create UserList)
local object_api = ''
local user_list = {}
for line in api_file:lines() do
local api_object = string.sub(line,1,len_obj+1)
if string.upper(api_object) == string.upper(object)..char then
object_api = string.sub(api_object,1,len_obj)
if not (char == " " or char == "(") then
local str_method = string.sub(line,len_obj+2)
local end_str = string.find(str_method,'[^a-zA-Z]')
if end_str ~= nil then
str_method = string.sub(str_method, 1, end_str-1)
end
table.insert (user_list,str_method)
end
end
end
api_file:close()

-- correct register of symbols (sample: wscript -> WScript)
if object_api ~= '' then
local s = pos - 1 - len_obj
editor:SetSel(s, pos - 1)
editor:ReplaceSel(object_api)
editor:CharRight()
end

-- show UserList
local list_count = table.getn(user_list)
if list_count > 0 then
table.sort(user_list)
local s = table.concat(user_list, " ")
editor:UserListShow(10, s)
return true
else
return false
end
end

function GetWordLeft()
pos = editor.CurrentPos
editor:CharLeft()
editor:WordLeftExtend()
local sel_text = editor:GetSelText()
editor:CharRight()
editor:CharRight()
sel_text = string.gsub(sel_text, ".*[.:]", '')
return sel_text
end

function InsertProp(tp,sel_value)
if tp == 10 then
local pos_new = editor.CurrentPos
if pos_new ~= pos then
editor:SetSel(pos, pos_new)
editor:DeleteBack()
end
editor:InsertText(-1, sel_value)
pos = pos + string.len(sel_value)
editor.CurrentPos = pos
editor:CharRight()
return true
else
return false
end
end

-- ======================================================
-- Стандартные события SciTE, обработку которых выполняют расположенные выше скрипты

function OnChar(charAdded)
local ret = AutocompleteObject(charAdded)
return ret
end

function OnUserListSelection(tp,sel_value)
InsertProp(tp,sel_value)
end

Для обеспечения работоспособности надо добавить в соответствующие .properties строку типа:
Код:
api.*.vbs=$(SciteDefaultHome)\api\vbscript.api

Паттерны скрипт не понимает поэтому для каждого расширения надо создавать отдельную строку:
Код:
api.*.js=$(SciteDefaultHome)\api\jscript.api
api.*.lua=$(SciteDefaultHome)\api\lualib5_annot_scite.api

Естественно, соответствующие api файлы должны у вас быть (если нет - скачайте нашу сборку).
Ну а теперь создайте пустой файл test.vbs и поробуйте написать в нем что нибудь типа:
Код:
wscript.arguments.count
Ну как - понравилось?
Кстати, и прежний способ автодополнения (по Ctrl+Enter) так же работает
[/more]
Конечно, мастера LUA сразу обнаружат в этом скрипте кучу нерациональных решений (да я и сам уже думаю как его отрехтовать) но по большому счету, довел меня Нейл до этого сочинительства
Почему Скайт ИЗНАЧАЛЬНО не работает именно так?
Может быть наши программеры все таки поправят это дело ???


Автор: mozers, Отправлено:18:32 05-07-2006
Народ, помогите!!!
Ну подскажите кто нить как отследить нажата клавиша Ctrl или нет, при обработке события OnDoubleClick ???
mimir знает. Он же сказал:
Цитата:
Я сделал по Ctrl+DoubleClick. Меня это полнустью устраивает.
Попозже если надо пришлю исправления.
и пропал ((
Я уже все доки перерыл ну нигде этого нету
Ну неужели кроме mimir-а никто этого не знает???


Че то никто на мой чудесный скрипт для атоматической вставки свойств/методов объекта и внимания не обратил А я прям балдею - как удобно
Код в своем посте раз 5 исправлял - все лучшее и лучшее делаю...
Правда опыта lua-писательства у меня никакого, поэтому и надеялся я что старшие товарищи поправят мою реализацию...
Однако - тишина

Тут как то даавно ктото вопрос задавал, про то, как сделать всплывающие подсказки в 2 строки (ну некоторые длинные очень - на экран не влазят).
Можно выйти из положения так:

Код:
style.*.38=font:MS Sans Serif,size:8
(назначить маленький фонт)
можно в *.api эту подсказку записать в несколько строк:
Код:
parseInt(string strInt,int numberBase)
parseInt Converts a string argument to a number in a specified number base(2,8,10,16...)

а можно использовать оба метода
Автор: unreal666, Отправлено:20:19 05-07-2006
Какая версия Lua используется в SciTE ? Точнее в каких версиях скайта какие версии Lua используются?
Автор: mozers, Отправлено:10:27 06-07-2006
unreal666
Мне кажется и вопрос не совсем корректен и мой ответ - тоже:
В Скайт встроена поддержка LUA. Т.е. с одной стороны в lua скриптах для SciTE можно использовать операторы LUA5, + доступна куча расширений от самого Скайта. С другой стороны некоторые методы LUA вообще недоступны и на офф-форуме периодически обсуждается стоит их добавлять или нет.

Вот api-файл со всеми (как мне кажется) доступными операторами, методами и свойствами. (Правда добавить описания на них у меня терпения не хватило
В комплекте с предыдущим скриптом работает просто великолепно - lua - скрипты может писать любой их впервые увидевший
Автор: unreal666, Отправлено:14:31 06-07-2006
mozers

Цитата:
Вот api-файл со всеми (как мне кажется)

Ссылка на c:/TEMP/SciTELua_api.zip
Автор: mozers, Отправлено:16:53 06-07-2006
unreal666
Почтовую рассылку с форума читаешь? Я ссылу то сразу же подрехтовал

И чтобы мой пост не был таким неинформативным - маленький скрипт (изуродовал вариант mirk - теперь он корректно работает с переводами строк, ну и кода поменьше):
SciTEStartup.lua:
Код:
function sort_text(i)
local sel_text = editor:GetSelText()
local lines = {}
local one_line = ''
for one_line in string.gfind(sel_text, "[^\n]+") do
table.insert(lines, one_line)
end
if i == '' then
table.sort(lines)
else
table.sort(lines, function(a, b) return a > b end)
end
local out_text = table.concat(lines, "\n").."\n"
editor:ReplaceSel(out_text)
end

.properties:
Код:
command.name.21.*=Сортировка текста
command.21.*=sort_text
command.mode.21.*=subsystem:lua,savebefore:no

command.name.22.*=Обратная сортировка текста
command.22.*=sort_text reverse
command.mode.22.*=subsystem:lua,savebefore:no

Автор: mozers, Отправлено:15:27 07-07-2006
Как (LUA) определить имя используемого в данный момент Скайтом api-файла?
Есть какие то
Код:
editor:GetProperty (string)
editor:GetPropertyExpanded (string)
editor.Property
editor.PropertyInt
только как их пользовать - вообще непонятно
Всю башку сломал

Автор: mozers, Отправлено:22:20 08-07-2006
Изучаю LUA потихоньку... Вот такой скрипт сляпал:
IndentTabToSpace.lua
Код:
-- Замена отступов в виде табуляторов на пробелы и наоборот
-- соответствие количества пробелов заменяющих знак табуляции берется из ваших установок в .properties
-- mozers™ icq#256106175

local indent_char = nil
editor:BeginUndoAction()
for line_num = 0, editor.LineCount-1 do
local line = editor:GetLine (line_num)
if line ~= nil then
local len = editor.LineIndentation[line_num]
if len ~= 0 then
if indent_char == nil then
indent_char = string.sub(line, 1, 1)
end
if indent_char == "\t" then
indent = string.rep (" ", len)
else
indent = string.rep ("\t", len/editor.Indent + 0.5)
end
editor.TargetStart = editor:PositionFromLine(line_num)
editor.TargetEnd = editor.LineIndentPosition[line_num]
editor:ReplaceTarget(indent)
end
end
end
editor.Indent = props["indent.size"]
editor:EndUndoAction()

.properties
Код:
command.name.23.*=Заменить отступы (TAB <-> Пробелы)
command.23.*=dofile $(SciteDefaultHome)\tools\IndentTabToSpace.lua
command.mode.23.*=subsystem:lua,savebefore:no

Идея - не нова. Что отличает от остальных: полный автоматизм, маленький код

unreal666
2 уточнения:
1. Если выполнить такой код из Скайта:
Код:
print(_VERSION)
то получим
Код:
Lua 5.0.2

2. Повозился над SciTELua.api Вот теперь там действительно ВСЕ Вроде как...
Подключать лучше так:
Код:
# Подключение файла автодополнения и всплывающих подсказок по синтаксису
api.$(file.patterns.lua)=$(SciteDefaultHome)\api\SciTELua.api
# Необходимо для работы скрипта вывода подсказки по методам/свойствам объекта (сам скрипт - в SciTEStartup.lua)
api.*.lua=$(SciteDefaultHome)\api\SciTELua.api

# Символы, после ввода которых возникает подсказка
calltip.lua.parameters.start= ([
# Символы - разделители параметров
calltip.lua.parameters.separators=,
# Символы, из которых строятся операторы языка (используется для всплывающей подсказки)
calltip.lua.word.characters=$(chars.alpha)$(chars.numeric)_-:.

# Символ, после которого включается автодополнение
autocomplete.lua.start.characters=.:



Автор: mozers, Отправлено:13:31 09-07-2006
Возможно, что все про это уже знают (я про Shift+F8), а для меня это было открытием:

Код:
1=Сколько
2=еще нам
3=откроется
4=неизвестного?
command.name.35.*=Test
command.35.*=print $(1) $(2) $(3) $(4)
command.mode.35.*=subsystem:lua,savebefore:no

Теперь думаю куда бы это приспособить для себя...
Автор: ALeXkRU, Отправлено:14:11 09-07-2006
mozers

Цитата:
чудесный скрипт для атоматической вставки свойств/методов объекта

не подскажешь, почему-то странно работает: окошко всплывает, а собственно свойства\методы не вставляются ни по энтеру ни мышой
Автор: mozers, Отправлено:21:35 09-07-2006
ALeXkRU
Билин, виноват
Во время очередной правки забыл добавить вызов InsertProp (она должна вызываться из Скайтового события OnUserListSelection). Вот поэтому список формируется, а при выборе ничего и не вставляется.
Ща исправил (попутно там много чего другого поменялось)...

Вот еще скрипт сочинил:
Код:
-- Вывод списка функций / процедур, имеющихся в коде
-- mozers™ icq#256106175
-- Идея и первый вариант: Grisper <http://forum.ru-board.com/topic.cgi?forum=5&topic=3215&start=700#4>

function find (str, pattern)
for p in string.gfind(str, pattern) do
return p
end
return ""
end

local FOLDSTART = 1024 -- level to start folding (from 1024)
editor:Colourise(0, -1) -- update doc's folding info
local count = 0
trace("> Список функций: \n")
for line_num = 0, editor.LineCount-1 do
local foldRaw = editor.FoldLevel[line_num]
local foldLvl = math.mod(foldRaw, 4096)
local foldHdr = math.mod(math.floor(foldRaw / 8192), 2) == 1
if foldHdr and foldLvl == FOLDSTART then
local line = editor:GetLine (line_num)
line = string.gsub (line, "^[^%a]*([^{\n]*).*", "%1")
if line ~= "" then
if find (line, "[(].*[)]") ~= "" then
print (":"..(line_num + 1)..":\t"..line)
count = count + 1
end
end
end
end
if count > 0 then
trace("> Найдено: "..count.." функций / процедур\nДвойной щелчок на строке с результатом\nустановит курсор на оригинальную строку")
else
trace("> Функций / процедур не найдено!")
end

Скажите с каким языком программирования не работает - поправим

Автор: ALeXkRU, Отправлено:23:31 09-07-2006
mozers

Цитата:
Ща исправил (попутно там много чего другого поменялось)...

теперь работает. Еще бы туда регистронезависимость добавить - и совсем хорошо будет
а то этот

Код:
wscript.arguments.count

на самом деле не работает нужно вводить "WScript.Arguments.Count"

Добавлено:

Цитата:
еще скрипт сочинил

пока мало где работает из 5 тестовых файлов нашлись функции хорошо только в SciTEStartup.lua а в четырех остальных - или ничего не находили (прога на Delphi то бишь Pascal) или находит конструкции типа

Код:
if (Args(1))


Код:
If len(sText) > 1 then

до возможностей команды из Менеджера проекта - пока далеко

Добавлено:
кстати, а что с исходниками Менеджера? вроде как кто-то говорил что удалось их заполучить - и тишина



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