Релиз AkelPad 4.8.3

Russian main discussion
  • Author
  • Message
Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

[Yustas.NeO] wrote:...но может у кого есть идеи более элегантного решения?
Можно по аналогии с вариантом от Andrey_A_A использовать поиск по кругу:

Code: Select all

AkelPad.TextFind(0, pArgLine.substr(5), 0x08000001 /*FRF_DOWN|FRF_CYCLESEARCH*/);
Andrey_A_A wrote:If .IsOldWindows() Then TCHAR = "A" Else TCHAR = "W" End If
Недавно появился vbTCHAR.

FeyFre
В данном случае должен помочь перенос по словам.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Instructor, тут вопрос в следующем: почему при обычном запуске АР(восстановление документов из сессии) такого зацикливания не происходит(в т.ч. при стократном переключении на вкладку и обратно), а при запуске с этим файлом в качестве аргумента зацикливается? Вроде бы особо ничего не меняется?

Да, попробовал включил перенос по словам. Перенеслось. Но закрытие AP превращается в ту же самую процедуру ожидания и накаливания CPU. После принудительного убивания процесса, последующий обычный запуск АР(без аргумента, просто загружается сессия) также зацикливается на этом файле(не зацикливался). Да и просто: очистить сессию, открыть пустой АР, открыть файл - висяк(при выключенном переносе открывалось мгновенно). В общем не помогло :) А отключать CodeFold из автозапуска не хочется.

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

FeyFre
Coder::Settings -> CodeFold1 -> Показывать список -> Авто + Лимит блоков поставить, например, "10000".

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Instructor, попробовал. Открытие файла тепер шустрое :)
Но теперь вылезла такая странность:
1. Открыт этот файл. Закрыл его(нет открытых файлов, PMDI). Закрыл АР. Всё норма.
2. Открываю файл по F4. Открылось шустро. :)
3. Закрываю АР. Т.е. плагин сессий его ещё помнит.
4. Открываю файл по F4 опять. Опять наблюдаю процедуру накала CPU. :(
Естесвенно лими на кол-во волдов стоит. Похоже палгин сессий тут вмешивается? Что интересно, если в п.4. открывать дургой файл то тоже всё шустро(наверное не обрабатывает тот большой файл). В MDI режиме впринципе та же ситуация.

DV
Offline
Posts: 1250
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

FeyFre,
я бы всё-таки предложил собрать отладочные версии AkelPad, Coder и Sessions и посмотреть под отладкой, что происходит. (хотя сам я часто ленюсь так делать)

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

DV, ну дык АР и собран, и эти плаги тоже перестроил только-что :) С отлад. инфой, с символами, и студийный отладичк корректно подхватывает исходники, и даже настроил всасывание отлад.инфы системных библиотек с серверов MS. Вижу что циклится оно в связном списке фолдов, или в списке отслеживаемых точек(AE_StackPointInsert), ну в общем в коде связанном с этими точками. Да и строя с отл. инфой(/ZI компилятору, /DEBUG линкеру) приходится убирать оптимизацию(/O1 не совместим с /ZI, откзывается строится), а это опять таки влияет на результат. В общем как-то я с ходу не соерентируюсь что к чему. Многовато наверное 10000 фолдов. И 1000 много. И 100 много. И 10.
Instructor
Coder::Settings -> CodeFold1 -> Показывать список -> Авто + Лимит блоков поставить, например, "10000".
Я только сообразил что оно у меня стояло None. Да и не долго музыка играла. Зависает при каждом удобном случае.
В общем воздержусь я пока от открытия того файла :)

Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

Недавно появился vbTCHAR.
Спасибо Instructor, видел, ещё не тестировал, вставлю обязательно...

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »


Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Во, теперь летает, в в числе и при выключенном переносе строк :) И замена ">" ">\n" в этом файле не подвешивает :)

DV
Offline
Posts: 1250
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

Обнаружил некоторую странность при поиске с регулярными выражениями.
Есть текст:

Code: Select all

#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
Ищется std.+f

В зависимости от положения каретки, выделяется либо
#include <stdio.h>
#include <stdlib.h>
#include <stddef
.h>
либо
#include <stdio.h>
#include <stdlib.h>
#include <stddef
.h>
либо
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>

При поиске с начала файла выделяется всегда первый вариант.
Поиск std.+?f приводит к тем же результатам.
А как же добиться более, на мой взгляд, логичного результата поиска, выделяющего всегда только минимальную совпадающую часть - stddef.h ?

Offline
Posts: 874
Joined: Sat Jan 16, 2010 2:03 pm

Post by opk44 »

DV
Меня сбивает с толку буква "f" в поисковом шаблоне. Расширение ".h" нужно цеплять или нет?.
Итак, возможно я не вполне вник в суть проблемы, потому начнем с очевидного:
Точка = любой символ (буквально ЛЮБОЙ, т.е. со всеми "чудесами" в виде скобочек, пробелов и переводов строк).
Плюс = один или больше. Поэтому результат поиска совершенно логичен.
Теперь, что мы хотим? Если найти любое слово начинающееся на "std.....", тогда можно просто снабдить Вашу поисковую конструкцию ограничителем границы слова: "\b", т.е. вот так: std.+\b
Если найти любое слово начинающееся на "std" и заканчивающеся на "f" ("std....f"), тогда отказываемся от "любого символа" и переходим к "любым БУКВАМ" вот так: std[a-z]+f
Если нужно цеплять и расширение ("std....f.h"), то наверное так: std[a-z]+f\.h
Если "f" в слове не принципиально, тогда std[a-z]+\.h или так std[a-z\.]+h или даже так std\S+h (последнее весьма не надежно, поскольку "h" может встретиться и в самом слове, а не обязательно в расширении)

UPD.
В случае с использованием в поисковом шаблоне точки (т.е. "любых символов") чтобы решить проблему слишком длинных совпадений, можно еще воспользоваться вместо плюса принудительным ограничением макимального числа "повторов".
Например, "не более восьми любых символов": std.{,8}f
Last edited by opk44 on Mon May 27, 2013 7:39 am, edited 1 time in total.

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

DV
Для конкретного примера можно еще std[^\n]+f
Post Reply