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

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

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


Автор: vladvro, Отправлено:10:07 26-09-2008
Bolenic

Цитата:
Нужно "одним махом" привести его к виду:
...
agrxxx@xxxdomen.ua
...

Как верно заметил LittleMeN надо использовать замену с регулярным выражением,
для данного случая шаблоном будет выражение ([\w@\.]+).*, а менять надо на выражение \1

Автор: Bolenic, Отправлено:00:55 27-09-2008
LittleMeN

Цитата:
замену - с регулярными выражениями

Это я понимаю. Что-то у меня сегодня с ними проблема.

vladvro

Спасибо! Как говорится, "на раз!".
Автор: Bolenic, Отправлено:13:23 27-09-2008
А как вот такой вид:

1. imlep@yandex.ru 1
2. tpp@adm.yar.ru 376
3. muka@yaroslavl.ru 1
4. printing@yaroslavl.ru 1
5. yamz@yaroslavl.ru 1
6. boss.yar@bk.ru 1
...

как привести к виду:

imlep@yandex.ru
tpp@adm.yar.ru
muka@yaroslavl.ru
printing@yaroslavl.ru
yamz@yaroslavl.ru
...


Автор: ALeXkRU, Отправлено:23:15 27-09-2008
Bolenic
например, можно так:

Код:
(\d*.\s*)([\w@\.]+).*


Добавлено:
ах, да.. забыл замена:

Код:
\2


Добавлено:
еще добавлю:
Цитата:
Что-то у меня сегодня с ними проблема

погляди вот этот мануальчик (всё, достаточно коротко (590 кб) и доступно)
Автор: Bolenic, Отправлено:00:05 28-09-2008
Отлично работает!
И - спасибо за файл PDF.
Автор: MaximChurchill, Отправлено:13:40 02-10-2008
Вчерась начал пользоваться программой - обалденная вещь, маст хэв всем кодерам. Однако не знаю, как настроить подсветку на C++ третьей группы операторов. В библиотеку вшито использование keywords3.$(file.patterns.cpp) только для документирования (три слэша). А как мне добавить малой кровью еще 2 типа цветогово оформления группы ключеывх слов?

И еще - у меня в компиляторе между директивами препроцессора #asm и #endasm идет вставка ассемблерного кода. Как поправить конфигу, чтоб текст между директивами не интерпретировался как сишный, а показывался цветом директив препроцессора (или каким-то другим настраиваемым).

Заранее сенкс.


Автор: vladvro, Отправлено:14:55 02-10-2008
MaximChurchill

Цитата:
как настроить подсветку на C++ третьей группы операторов. В библиотеку вшито использование keywords3.$(file.patterns.cpp) только для документирования (три слэша). А как мне добавить малой кровью еще 2 типа цветогово оформления группы ключеывх слов?

в оригинальной версии SciTE для С++ есть еще одна группа ключевых слов keywords4, цвет которой задается параметром style.cpp.19,
в редакторе из проекта SciTE-Ru добавлено еще три группы keywords5, keywords6,
keywords7, цвета которых задаются параметрами style.cpp.20, style.cpp.21, style.cpp.22 соответственно.

Цитата:
И еще - у меня в компиляторе между директивами препроцессора #asm и #endasm идет вставка ассемблерного кода. Как поправить конфигу, чтоб текст между директивами не интерпретировался как сишный, а показывался цветом директив препроцессора (или каким-то другим настраиваемым).

Увы правкой конфига этого сделать нельзя. На данный момент это в редакторе не возможно.
Можно оставить пожелание на внедрение этого на сайте проекта, может кого-то это заинтересут и он сделает, или можно самостоятельно реализовать и предложить готовое решение для внедрения.
Автор: MaximChurchill, Отправлено:15:19 02-10-2008
Сенкс за помощь - не ожидал такой оперативности на форуме, молчавшем 2,5 года
Автор: mozers, Отправлено:21:54 02-10-2008
ALeXkRU Bolenic
Мануал, конечно, неплохой, но всетаки регулярные выражения в Perl немного отличаются от регулярных выражений, используемых в диалоге Поиск/Замена.
Я бы посоветовал вначале изучить файл из справки SciTE (тоже вроде не слишком замудрено написано).

MaximChurchill
Цитата:
на форуме, молчавшем 2,5 года
Не понял 104 + 35 = 139 страниц - разве мало натрындели?
Автор: ALeXkRU, Отправлено:02:20 03-10-2008
mozers
одно другому никак не помешает
Автор: frs, Отправлено:03:15 03-10-2008
Кстати, может стоит включить в сборку альтернативные регекспы для lua? Например, lrexlib или ещё какие нибудь.
Имхо с ними будет поудобнее работать. Я, ради интереса, подключил pcre вариант. Попытаюсь поиграться с шаблонами функций в SideBar.
Автор: vladvro, Отправлено:13:01 03-10-2008
frs

Цитата:
Кстати, может стоит включить в сборку альтернативные регекспы для lua? Например, lrexlib или ещё какие нибудь.

В сборку добавлять не стоит, только добавит путаницы, а этого и так хватает (в окне поиска свой синтаксис, в Луа свой, еще и опции на это влияют).
Все равно у каждого будет свое мнение на то, как оно удобнее.
А вот вылжить пример и инструкцию - это было бы полезно, кому-то и правда будет в помощь.
Автор: frs, Отправлено:14:47 03-10-2008

Цитата:
В сборку добавлять не стоит

Угу, согласен. Посмотрел в инете сколько всего дополнительного понаписано для lua, не тащить же всё в сборку.

------------
Краткая инструкция- берем lrexlib с http://luaforge.net/frs/?group_id=63&release_id=1153 .
Мозгов на компиляцию 2.4.0 мне не хватило, поэтому я взял скомпилированную 2.3.0, в файле rex_pcre.51 hex редактором поменял lua51.dll на SciTE.exe, переименовал его в rex_pcre.dll и вместе с pcre.dll закинул в доступное SciTE место.

Ну и начал ставить опыты (доки по употреблению можно посмотреть в зипе с исходниками.)

re=require("rex_pcre")
print(re.match("Abc","A"))
print(re.match("Abc","a"))
print(re.match("Abc","a",1,"i"))
print(re.match("Abc123","\\d{2}"))
print(re.gsub("Abc123","\\d{2}"," -*%1*- "))

и т.д., и т.п.
основное отличие от привычного синтаксиса в том, что приходится удваивать слеши в выражениях для их экранирования в lua - \\d, \\s, \\w ...
Автор: romawkaural, Отправлено:16:41 04-10-2008
Ребята скачал недавно этот редактор и сразу вопросик о_О понял программа супер, начил настраивать поменял фон и т.п. но вот беда сама постветка на php неподходит вот как самому изменить подстветку? т.е. цвет шрифт и где менять? о_О ...за ранее спасибо =)
Автор: Fade_Out, Отправлено:23:37 04-10-2008
Привет всем, обнаружил баг в этой несомненно замечательной программе, решил написать сюда.

Версия 1.76 .57Ru
Apr 14 2008 10:55:37

ОС: Windows XP Professional

Итак...
Скачал текстовик отсюда (99 Кб): http://zcontest.ru/2008.02/files/ZARJ.txt

Открыл. Прокрутил на самый низ...
И после текста

He also receives further instruction from Morpheus on subjects such as "freeing his mind" and Agents. Afte

такое впечатление что дальше буквы наложились друг на друга!
Между прочим открыл текстовик в Bred 3.0.3 и он его прекрасно прочитал без всяких неприятных глюков!
Кстати забавно, файл взят отсюда: http://www.zcontest.ru/2008.02/zarj.php
Интересно почитать условие задачи
Я поставил курсор прямо после последней буквы "e" и счетчик колонок показал "65536".
Кстати данный глюк присущ и Notepad++.
Текст в файле не содержит переносов строк.
Автор: mozers, Отправлено:12:09 05-10-2008
romawkaural
Цитата:
на php неподходит вот как самому изменить подстветку? т.е. цвет шрифт
Параметры style.hypertext.104-127 в html.properties

Fade_Out
У меня повторить твой глюк не получилось - как ни старался... (ты свой SciTEUser.properties временно удали для чистоты эксперемента)
Автор: vladvro, Отправлено:12:47 05-10-2008
romawkaural

Цитата:
как самому изменить подстветку? т.е. цвет шрифт и где менять?

в сборке проекта SciTE-Ru настройки цветов, шрифтов для PHP находятся в
html.properties [строка 453] :
Код:
# PHP
font.php=back:#FFFFFF
# PHP сложные переменные (например "{$_SERVER['SERVER_NAME']}" )
style.hypertext.104
=$(font.php),fore:#714D9D,bold,italics
# Текст по умолчанию (функции, константы и т.д.)
style.hypertext.118
=$(font.php),fore:#000033,eolfilled
# Текст в двойных кавычках #007F00
style.hypertext.119
=$(font.php),fore:#714D9D
# Текст в одинарных кавычках

...

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

Fade_Out

Цитата:
такое впечатление что дальше буквы наложились друг на друга!

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

Цитата:
Кстати данный глюк присущ и Notepad++.

все верно, оба редактора базируются на одном движке Scintilla

Автор: frs, Отправлено:21:37 10-10-2008
Вариация SideBar.lua, не для включения в сборку, а для разглядывания и переноса в SideBar.lua некоторых кусков (если понравятся)
Сделано на базе не самой последней вариации (просто не поспеваю за изменениями )

  • Привинтил pcre регекспы (о привинчивании см. в соседней теме)
  • Соответственно поменялись шаблоны определения функций (для VBScript взял пока от VB, лень вспоминать отличия). Надо еще подумать о виде отображения функции в списке - только имя, с типом функции, с аргументами, теоретически можно завести несколько шаблонов и переключаться
  • Одношаговый undo вставки аббревиатуры
  • Отображение текста аббревиатуры в месте расположения курсора, чтобы решить хочу или не хочу её вставлять. Хотел показывать в районе листа аббревиатур по правому клику, но пока не придумал как
  • Выполнение выделенной в листе функции (наподобие выполнения выделенного в тексте кода по Ctrl+4, вероятно стоит добавить реакцию на текущий лексер-расширение)

SideBar.lua : [more]
Код:
--[[--------------------------------------------------
SideBar.lua
Authors: Frank Wunderlich, mozers™, VladVRO, frs, BioInfo
version 0.95
------------------------------------------------------
Needed gui.dll by Steve Donovan
Connection:
In file SciTEStartup.lua add a line:
dofile (props["SciteDefaultHome"].."\\tools\\SideBar.lua")
Set in a file .properties:
command.checked.17.*=$(sidebar.show)
command.name.17.*=SideBar
command.17.*=show_hide
command.mode.17.*=subsystem:lua,savebefore:no

# Set show(1) or hide(0) to SciTE start
sidebar.show=1
--]]--------------------------------------------------

local current_path = props['FileDir']
local file_path = props['FilePath']
local file_mask = '*.*'
local panel_width = 200
local tab_index = 0
local line_count = 0
local list_fav_table = {}
local file_ext = '*.*'
local fav_select_index = 0
-- you can choose to make it a stand-alone window; just uncomment this line:
-- local win = true

local func_name

re=require("rex_pcre")

local win_height = props['position.height']
if win_height == '' then win_height = 600 end

----------------------------------------------------------
-- Create panels
----------------------------------------------------------
local tab0 = gui.panel(panel_width + 18)

local text_path = gui.memo()
tab0:add(text_path, "top", 22)

local list_dir = gui.list()
local list_dir_height = win_height/2 - 80
tab0:add(list_dir, "top", list_dir_height)

local list_favorites = gui.list(true)
list_favorites:add_column("Favorites", 600)
tab0:client(list_favorites)
-------------------------
local tab1 = gui.panel(panel_width + 18)

local list_func = gui.list(true)
list_func:add_column("Functions/Procedures", 600)
local list_func_height = win_height/2 - 80
tab1:add(list_func, "top", list_func_height)

local list_bookmarks = gui.list(true)
list_bookmarks:add_column("@", 24)
list_bookmarks:add_column("Bookmarks", 600)
tab1:client(list_bookmarks)
-------------------------
local tab2 = gui.panel(panel_width + 18)

local list_abbrev = gui.list(true)
list_abbrev:add_column("Abbrev", 60)
list_abbrev:add_column("Expansion", 600)
tab2:client(list_abbrev)
-------------------------
local win_parent
if win then
win_parent = gui.window "Side Bar"
else
win_parent = gui.panel(panel_width)
end

local
tabs = gui.tabbar(win_parent)
tabs:add_tab("FileMan", tab0)
tabs:add_tab("Func/Bmk", tab1)
tabs:add_tab("Abbrev", tab2)
win_parent:client(tab2)
win_parent:client(tab1)
win_parent:client(tab0)

if tonumber(props['sidebar.show']) == 1 then
if
win then
win_parent:size(panel_width + 24, 600)
win_parent:show()
else
gui.set_panel(win_parent,"right")
end
end

tabs:on_select(function(ind)
tab_index=ind
on_switch()
end)

-- Скрытие / показ панели
function show_hide()
if tonumber(props['sidebar.show']) == 1 then
if
win then
win_parent:hide()
else
gui.set_panel()
end
props['sidebar.show'] = 0
else
if
win then
win_parent:show()
else
gui.set_panel(win_parent,"right")
end
props['sidebar.show'] = 1
end
end

----------------------------------------------------------
-- Tab0: FileManager
----------------------------------------------------------
function all_files()
file_mask = '*.*'
fill_list_dir()
end

function
only_current_ext()
file_mask = file_ext
fill_list_dir()
end

function
f_nil() end -- заглушка для разделителя списка в контекстном меню

function file_copy()
if string.len(dir_or_file) < 2 then return end
local
path_destantion = gui.open_dir_dlg -- Note: There is no. This - the wish.
-- Будет реализовано, когда появится функция выбора каталога
end

function
file_move()
if string.len(dir_or_file) < 2 then return end
local
path_destantion = gui.open_dir_dlg -- Note: There is no. This - the wish.
-- Будет реализовано, когда появится функция выбора каталога
end

function
file_ren()
-- "Порнографический" диалог будет появлятся до той поры, пока не будет реализовано
-- Issue 103: shell.inputbox http://code.google.com/p/scite-ru/issues/detail?id=103
if string.len(dir_or_file) < 2 then return end
local
filename_new = gui.prompt_value("Enter new filename:", dir_or_file)
if filename_new.len ~= 0 and filename_new ~= dir_or_file then
os.rename(current_path..'\\'..dir_or_file, current_path..'\\'..filename_new)
fill_list_dir()
end
end

function
file_del()
if string.len(dir_or_file) < 2 then return end
if
shell.msgbox("Are you sure DELETE file?\n"..dir_or_file, "DELETE", 4+256) == 6 then
-- if gui.message("Are you sure DELETE file?\n"..dir_or_file, "query") then
os.remove(current_path..'\\'..dir_or_file)
fill_list_dir()
end
end

function
file_exec()
local filename = current_path..'\\'..dir_or_file
local ret, descr = shell.exec(filename)
if not ret then
print (">Exec: "..filename)
print ("Error: "..descr)
end
end

function
add_fav()
if attr ~= 'd' then
list_favorites:add_item(dir_or_file, current_path..'\\'..dir_or_file)
table.insert(list_fav_table, current_path..'\\'..dir_or_file)
end
end

function
add_fav_buffer()
list_favorites:add_item(props['FileNameExt'], props['FilePath'])
table.insert(list_fav_table, props['FilePath'])
end

function
del_fav()
list_favorites:delete_item(fav_select_index)
table.remove (list_fav_table, fav_select_index+1)
end

tab0:context_menu {
'Files: Show All|all_files',
'Files: Only current ext|only_current_ext',
'', -- разделитель
'Files: Copy to...|file_copy',
'Files: Move to...|file_move',
'Files: Rename|file_ren',
'Files: Delete|file_del',
'Files: Execute|file_exec',
'Files: Add to Favorites|add_fav',
'', -- разделитель
'Favorites: Add active buffer|add_fav_buffer',
'Favorites: Delete item|del_fav',
}
tab1:context_menu {
'Functions: Execute|func_exec',
'',
'пока несуществующие функции',
'Functions: Sort by name|sort_by_name',
'Functions: Sort by code order|sort_by_app',
}
tab2:context_menu {
abbr
}
----------------------------------------------------------
-- Memo: Path and Mask
----------------------------------------------------------
local function show_path()
local rtf = '{\\rtf{\\fonttbl{\\f0\\fcharset1 Helv;}}{\\colortbl ;\\red0\\green0\\blue255; \\red255\\green0\\blue0;}\\f0\\fs16'
local path = '\\cf1'..string.gsub(current_path, '\\', '\\\\')..'\\\\'
local mask = '\\cf2'..file_mask..'}'
text_path:set_text(rtf..path..mask)
end

----------------------------------------------------------
-- List: Folders and Files
----------------------------------------------------------
local function open_file(filename)
if filename:match(".session$") ~= nil then
filename = filename:gsub('\\','\\\\')
scite.Perform ("loadsession:"..filename)
else
scite.Open(filename)
end
editor.Focus = true
end

function
fill_list_dir()
list_dir:clear()
local folders = gui.files(current_path..'\\*', true)
list_dir:add_item ('[..]', {'..','d'})
for i, d in ipairs(folders) do
list_dir:add_item('['..d..']', {d,'d'})
end
local
files = gui.files(current_path..'\\'..file_mask)
if files then
for
i, filename in ipairs(files) do
list_dir:add_item(filename, {filename})
end
end
list_dir:set_selected_item(0)
show_path()
end

local function
list_dir_openitem()
if attr == 'd' then
gui.chdir(dir_or_file)
if dir_or_file == '..' then
current_path = string.gsub(current_path,"(.*)\\.*$", "%1")
else
current_path = current_path..'\\'..dir_or_file
end
fill_list_dir()
else
open_file(current_path..'\\'..dir_or_file)
end
end

local function
list_dir_select(idx)
if idx ~= -1 then
local
data = list_dir:get_item_data(idx)
dir_or_file = data[1]
attr = data[2]
file_ext = '*.'..dir_or_file:gsub('.+%.','')
end
end

list_dir:on_double_click(function(idx)
if idx ~= -1 then
list_dir_openitem()
end
end
)

list_dir:on_key(function(key)
local idx = list_dir:get_selected_item()
if idx == -1 then return end
if
key == 13 then -- Enter
list_dir_select(idx)
list_dir_openitem()
elseif key == 8 then -- BackSpace
list_dir:set_selected_item(0)
list_dir_select(0)
list_dir_openitem()
elseif key == 46 then -- Delele
list_dir_select(idx)
file_del()
end
end
)

list_dir:on_select(function(idx)
list_dir_select(idx)
end)

----------------------------------------------------------
-- List: Favorites
----------------------------------------------------------
local favorites_filename = props['SciteUserHome']..'\\favorites.lst'

list_favorites:on_select(function(idx)
if idx ~= -1 then
fav_select_index = idx
end
end
)

list_favorites:on_double_click(function(idx)
if idx ~= -1 then
open_file(list_favorites:get_item_data(idx))
end
end
)

list_favorites:on_key(function(key)
local idx = list_favorites:get_selected_item()
if idx == -1 then return end
if
key == 46 then -- Delele
fav_select_index = idx
del_fav()
end
end
)

local function fill_list_favorites()
local favorites_file = io.open(favorites_filename)
if favorites_file then
for
line in favorites_file:lines() do
if
line.len ~= 0 then
local
caption = line:gsub('.+\\','')
list_favorites:add_item(caption, line)
table.insert(list_fav_table, line)
end
end
favorites_file:close()
end
end

fill_list_favorites()

local function save_list_favorites()
io.output(favorites_filename)
local list_string = table.concat(list_fav_table,'\n')
io.write(list_string)
io.close()
end

---------------------------------------------------------
-- List: Functions/Procedures
----------------------------------------------------------
list_func:on_double_click(function(idx)
local pos = list_func:get_item_data(idx)
if pos then
editor:GotoLine(pos)
editor.Focus = true
end
end
)

local function list_func_select(idx)
if idx ~= -1 then
func_name = list_func:get_item_text(idx)
end
end

list_func:on_select(function(idx)
list_func_select(idx)
end)

function func_exec()
dostring(func_name)
end

function
fill_list_func()
list_func:clear()

local findRegExp1 = {
cpp="(?im)[^.,<>=\\n]*?[ :]([^.,<>=\\n\\s]+\\([^.<>=)]*?\\))[\\s\\/}]*?{" ,
js="(?im)^[^,<>\\n]*?function[^(]*?\\(.*?\\))[^{]*?{",
vb="(?im)^\\s*(?:Private|Public|Friend)*\\s*(?:Function|Sub| Property)\\s+((?:Get|Let|Set)?\\s*([a-z]?[a-z0-9_.]*))\\s*?(?:\\([^)]\ 92;))?",
vbscript="(?im)^\\s*(?:Private|Public|Friend)*\\s*(?:Function|Sub| Property)\\s+((?:Get|Let|Set)?\\s*([a-z]?[a-z0-9_.]*))\\s*?(?:\\([^)]\ 92;))?",
css="([\\w.#-_]+)[\\s}]*?{}",
pascal="(?im)^\\s*(?:procedure|function)\\s+(.*?\\(.*?\\).*?);\& #92;s*$",
python="(?im)^\\s*(?:def|cla)\\s*.*):",
asm = "(?im)^\\s*(?|(?:proc)\\s+(\\w+)|(\\w+)\\s+(?: proc|frame))"
}

local findPattern = findRegExp1 [editor.LexerLanguage]
if findPattern == nil then
findPattern = "(?im)^(?:local\\s+)?(?:sub|function|func)\\s+(\\w+)\\s *\\(.*?\\)"
end
local
textAll = editor:GetText()
local startPos, endPos, findString
startPos = 1
r=re.new(findPattern)
while true do
startPos, endPos, findStr=r:exec(textAll,startPos)
if startPos == nil then break end
findString=r:match(textAll,startPos)
findString = findString:gsub("^%s*", ""):gsub("[\r\n]*", ""):gsub("%s+", " ")
local line_number = editor:LineFromPosition(startPos+2)
list_func:add_item(findString, line_number)
startPos = endPos + 1
end
end

----------------------------------------------------------
-- List: Bookmarks
----------------------------------------------------------
function list_bookmark_add(line_number)
local line_text = editor:GetLine(line_number):gsub('%s+', ' '):gsub('^%s+', '')
list_bookmarks:add_item({props['BufferNumber'], line_text}, {file_path, line_number})
end

local function
list_bookmark_delete(line_number)
for i = 0, list_bookmarks:count() - 1 do
local
bookmark = list_bookmarks:get_item_data(i)
if bookmark[1] == file_path and bookmark[2] == line_number then
list_bookmarks:delete_item(i)
break
end
end
end

local function
list_bookmark_delete_all()
for i = list_bookmarks:count()-1, 0, -1 do
local
bookmark = list_bookmarks:get_item_data(i)
if bookmark[1] == file_path then
list_bookmarks:delete_item(i)
end
end
end

list_bookmarks:on_double_click(function(idx)
if idx ~= -1 then
local
pos = list_bookmarks:get_item_data(idx)
if pos then
scite.Open(pos[1])
editor:GotoLine(pos[2])
editor.Focus = true
end
end
end
)

----------------------------------------------------------
-- List: Abbreviations
----------------------------------------------------------
function fill_list_abbrev()
function read_abbrev(file)
local abbrev_file = io.open(file)
if abbrev_file then
for
line in abbrev_file:lines() do
if
string.len(line) ~= 0 then
local
_abr, _exp = string.match(line, '(.-)=(.+)')
if _abr ~= nil then
list_abbrev:add_item ({_abr, _exp},_exp)
else
local
import_file = string.match(line, '^import%s+(.+)')
if import_file ~= nil then
read_abbrev(string.match(file, '.+\\')..import_file)
end
end
end
end
abbrev_file:close()
end
end

list_abbrev:clear()
local abbrev_filename = props['AbbrevPath']
read_abbrev(abbrev_filename)
end

list_abbrev:on_double_click(function(idx)
if idx~=-1 then
local
abbrev = list_abbrev:get_item_text(idx)
local ss,se = editor.SelectionStart,editor.SelectionEnd
local len = abbrev:len()
editor:BeginUndoAction()
editor:InsertText(ss, abbrev)
editor:SetSel(se+len, ss+len)
scite.MenuCommand(IDM_ABBREV)
editor:EndUndoAction()
editor.Focus = true
end
end
)

list_abbrev:on_select(function(idx,abbr)
if idx~=-1 then
local
abbrev = list_abbrev:get_item_text(idx)
local len = abbrev:len()
abbr=list_abbrev:get_item_data(idx)
abbr=string.gsub(abbr,'\\r\\n','\n')
abbr=string.gsub(abbr,'\\r','\r')
abbr=string.gsub(abbr,'\\n','\n')
abb=string.gsub(abbr,'\\t','\t')
pos=editor.CurrentPos
editor:CallTipShow(pos,abb)
end
end
)
----------------------------------------------------------
-- Events
----------------------------------------------------------
function on_switch()
if tab_index == 0 then
local
path = props['FileDir']
file_path = props['FilePath']
if path == '' then return end
if
path ~= current_path then
current_path = path
fill_list_dir()
end
elseif
tab_index == 1 then
fill_list_func()
elseif tab_index == 2 then
fill_list_abbrev()
end
end

-- Add user event handler OnSwitchFile
local old_OnSwitchFile = OnSwitchFile
function OnSwitchFile(file)
local result
if old_OnSwitchFile then result = old_OnSwitchFile(file) end
on_switch()
return result
end

-- Add user event handler OnOpen
local old_OnOpen = OnOpen
function OnOpen(file)
local result
if old_OnOpen then result = old_OnOpen(file) end
on_switch()
return result
end

-- Add user event handler OnUpdateUI (Call function fill_list_func)
local old_OnUpdateUI = OnUpdateUI
function OnUpdateUI()
local result
if old_OnUpdateUI then result = old_OnUpdateUI() end
if
tab_index == 1 then
local
line_count_new = editor.LineCount
if line_count_new ~= line_count then
fill_list_func()
line_count = line_count_new
end
end
return
result
end

-- Add user event handler OnSendEditor
local old_OnSendEditor = OnSendEditor
function OnSendEditor(id_msg, wp, lp)
local result
if old_OnSendEditor then result = old_OnSendEditor(id_msg, wp, lp) end
if
id_msg == SCI_MARKERADD then
if
lp == 1 then list_bookmark_add(wp) end
elseif
id_msg == SCI_MARKERDELETE then
if
lp == 1 then list_bookmark_delete(wp) end
elseif
id_msg == SCI_MARKERDELETEALL then
if
wp == 1 then list_bookmark_delete_all() end
end
return
result
end

-- Add user event handler OnFinalise
local old_OnFinalise = OnFinalise
function OnFinalise()
local result
if old_OnFinalise then result = old_OnFinalise() end
save_list_favorites()
return result
end
[/more]
Автор: mozers, Отправлено:01:14 12-10-2008

Цитата:
New Revision: 783
Modified:
SideBar.lua
Log:
-chg: SideBar.lua: Abbreviations: Добавлено отображение содержимого
аббревиатуры и возможность отменить вставку одной командой Undo (Crtl+Z) (Доработка frs)

frs
Цитата:
Привинтил pcre регекспы (о привинчивании см. в соседней теме)
Существующий алгоритм скрипта уже не может удовлетворить возрастающих потребностей. Для части языков просто невозможно создать универсальный шаблон, извлекающий все функции (слишком по-разному они задаются).
Если pcre регекспы позволяют создавать конструкции, типа шаблон1|шаблон2|шаблон3 (т.е. обрабатывать текст одновременно несколькими, совершенно разными, регсепами) - тогда будем осваивать pcre.
Если - нет, то проблему надо решать каким то другим путем...

Цитата:
Выполнение выделенной в листе функции
Сработает только для глобальных lua функций без параметров. Т.е. в 99% случаев команда будет выдавать одни ошибки.

Цитата:
просто не поспеваю за изменениями
Не обязательно то и дело открывать history чтобы быть в курсе последних событий. Достаточно подписаться на рассылку и все изменения будут падать в Ваш почтовый ящик сами

Автор: frs, Отправлено:02:58 12-10-2008
pcre - поддерживает альтернативы, ignore case, именованные сохранения, несохраняющие скобки и т.д и т.п. см. например шаблоны для vb, vbscript, asm.
Вот кстати шаблоны посвежее для моей версии - избавился от двойных слешей, поправил шаблоны vb и vbscript.
Untitled4.lua [строка 1] :
Код:
local findRegExp1 = {
cpp=[[(?im)[^.,<>=\n]*?[ :]([^.,<>=\n\s]+\([^.<>=)]*?\))[\s\/}]*?{",--.*?}]],
js=[[(?im)^[^,<>\n]*?function[^(]*?\(.*?\))[^{]*?{]],
vb=[[(?im)^\s*(?:Private|Public|Friend)?\s*(?:Static\s+)?(?:Function|Sub 0124;Property)\s+((?:Get|Let|Set)?\s*([a-z]?[a-z0-9_.]*))\s*?(?:\([^)]\))?]]< font color="#FF0000">,
vbscript=[[(?im)^\s*(?:Private|Public(?:\s+Default)?)*\s*(?:Function|Sub|Property)& #92;s+((?:Get|Let|Set)?\s*([a-z]?[a-z0-9_.]*))\s*?(?:\([^)]\))?]],
css=[[([\w.#-_]+)[\s}]*?{}]],
pascal=[[(?im)^\s*(?:procedure|function)\s+(.*?\(.*?\).*?);\s*$]],
python=[[(?im)^\s*(?:def|cla)\s*.*):]],
asm = [[(?im)^\s*(?|(?:proc)\s+(\w+)|(\w+)\s+(?:proc|frame))]]
}


Цитата:
в 99% случаев команда будет выдавать одни ошибки
так же как и с исполнением выделенного кода по Ctrl+4 если выделить неправильный кусок кода, всё на совести пользователя. В текущей реализации выполнение функции будет работать только в тех случаях, когда в список выдается только имя функции, без типа и параметров, т.е. функция действительно сыровата

не поспеваю за изменениями - в том смысле, что не успеваю сливать вместе новые доработки со своими версиями файлов, а svn у меня почти всё время свежий через TortouseSVN



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