mozers
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору zvyagaaa Не надо никого "умолять". Сделай сам путную раскраску, api, abbrev для своего Паскаля - и выкладывай сюда. Удачно получится - добавим в сборку. Неудачно - кто нить поможет поправить. Лично я в Паскале не пишу. В чем пишу (JS, VBS, BAS, LUA) - то и модернизирую потихоньку... Вот новый скрипт выкладываю: Код: -- Вывод списка функций / процедур, имеющихся в коде -- mozers™ icq#256106175 (выполняя пожелание ALeXkRU при активном тестировании mimir) -- Использованы идеи: Grisper и gansA ----------------------------------------------------------------------- -- паттерны для разных языков программирования (корректируйте, дополняйте) -- шлите ваши варианты на <mozers@mail.ru> local findRegExp = { --~ ['cxx']="\n[^,.<>=\n]-([^%s,.<>=\n]+[(][^.<>=\n)]-[)])%s-%b{}", ['cxx']="([^.,<>=\n]-[ :][^.,<>=\n%s]+[(][^.<>=)]-[)])[%s\/}]-%b{}", ['h']="([^.,<>=\n]-[ :][^.,<>=\n%s]+[(][^.<>=)]-[)])[%s\/}]-%b{}", --~ ['pas']="\nprocedure ([^(]*%b()).-\n%bb;" ['pas']="\nprocedure ([^(;]-)[;(].-\n%bb;" } local findPattern = findRegExp [props["FileExt"]] if findPattern == nil then -- универсальный паттерн для всех остальных языков программирования findPattern = "\n[SsFf][Uu][BbNn][^ ]* ([^(]*%b())" end -- дальше - банальный поиск заданнго паттерна по всему тексту output:ClearAll() editor:MarkerDeleteAll(1) local textAll = editor:GetText() local startPos, endPos, findString local count = 0 startPos = 1 print("> Список функций / процедур:") while true do startPos, endPos, findString = string.find(textAll, findPattern, startPos) if startPos == nil then break end -- убираем переводы строк и лишние пробелы findString = string.gsub (findString, "\r\n", "") findString = string.gsub (findString, "%s+", " ") local style = editor.StyleAt[startPos] -- если функция не закомментирована, то выводим ее в список if not (style == 1 or style == 2) then local line = editor:LineFromPosition(startPos) editor:MarkerAdd(line,1) print(props['FileNameExt']..':'..(line+1)..':\t'..findString) end count = count + 1 startPos = endPos + 1 end if count > 0 then trace("> Найдено: "..count.." функций / процедур\nДвойной щелчок на строке с результатом установит курсор на оригинальную строку") else trace("> Функций / процедур не найдено!") end | Вот теперь он действительно ВСЕ языки понимает. Ну если не поймет где - то всех делов - паттерн добавить. Была мысль сделать чтобы он результат в раскрывающийся список выводил... Подумал трезво - "А оно надо???". Прикольнее? - ДА, удобнее? - НЕТ. | Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 16:02 12-07-2006 | Исправлено: mozers, 11:50 21-07-2006 |
|