Code Monkey home page Code Monkey logo

econtrol_alekid's People

Contributors

alekid avatar alexey-t avatar artem3213212 avatar muminjonguru avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

econtrol_alekid's Issues

Last thread fixes

могу влить ваши патчи - но может пока без "раздербанил" или его тоже надо?
до него 2 патча.
хочу сохранить форматирование (вливать руками).
и обновить весь ec_async. делать? @AlekId

need binary search here

function TecParserResults.ParserStateAtPos(TokenIndex: integer): integer;
var i: integer;
begin
   for i := FStateChanges.Count - 1 downto 0 do
     if TRange(FStateChanges[i]).StartPos <= TokenIndex then
       begin
         Result := TRange(FStateChanges[i]).EndPos;
         Exit;
       end;
   Result := 0;
end;

Improve threads

@AlekId
Мое видение..
как ускорить реакцию Куды на печать символов.
можете ли помоч (за плату).

  • удаляем опции куды delayed_parsing, и всегда реагируем на OnEditorChange (без OnEditorIdle)
  • но реагируем по другому. пускаем поток и он парсит от каретки до конца экрана (Ed.LineBottom). не весь файл в ННН кб. после этого делаем перерисовку (она покажет все токены на текущем экране). парсинг одного экрана должен быть быстр наверно.
  • потом поток спит 1 сек (не грузить проц при печати) и продолжает парсинг до конца. и потом уже строит fold ranges. и еще одна перерисовка.

About current EC code

@AlekId
EControl- как оно работает счас.
у EC, у его класса ecClientSyntAnalizer, юзаются два главных метода.
AppendToPos - парсить до нужной позиции - без таймера, просто.
IdleAppend - парсить таймером, видимо до конца.

в "адаптере" ATSynedit_Ex видно это:
atsynedit_adapter_econtrol.pas

procedure TATAdapterEControl.DoAnalize(AEdit: TATSynEdit; AForceAnalizeAll: boolean);
  if AForceAnalizeAll then
  begin
    // этот блок вызывается плагинами через апи- тут без таймера
    AnClient.TextChanged(0);
    AnClient.Analyze;
    AnClient.IdleAppend;
  end
  else
  begin
    // это вызывается едитором при правках - простой парсинг 
    // до нижней строки экрана LineBottom. потом уже таймером до конца.
    NLine:= AEdit.LineBottom;
    if NLine=0 then
      NLine:= AEdit.GetVisibleLines;
    NLine:= Min(NLine, Buffer.Count-1);
    NPos:= Buffer.CaretToStr(Point(0, NLine));
    AnClient.AppendToPos(NPos);
    AnClient.IdleAppend;
  end;

New error from threads

@AlekId
при старте в IDE дает ошибку в ec_regexpr (иногда).
на тех же трех файлах из 2х групп.

Screenshot from 2019-04-30 16-37-21

fix handling of (?r) regex modifier

for this, need to improve IsIdentLetterChar to detect all Unicode letter chars.
to test later: test on Clojure lexer which has (?r) in ID rules.

assertion failed in FBuffer.Setup

@AlekId
Репро юзера:

  • Открыл Python файл. Расцветка есть
  • Вызвал из Command Pallette "plugin: Cuda-Ext: Code Tree: Symbols list..."
  • Ничего не появилось (уже проблема!) ///AT: у меня assertion fail
  • Нажал стрелку - расцветка исчезла

плагин CudaExt ставится из Plugins/ AddonManager/ Install.

Threads: react fast to text input

как ускорить реакцию Куды на печать символов.

  • удаляем опции куды delayed_parsing, и всегда реагируем на OnEditorChange (без OnEditorIdle)
  • но реагируем по другому. пускаем поток и он парсит от каретки до конца экрана (Ed.LineBottom). не весь файл в ННН кб. после этого делаем перерисовку (она покажет все токены на текущем экране). парсинг одного экрана должен быть быстр наверно.
  • потом поток спит 1 сек (не грузить проц при печати) и продолжает парсинг до конца. и потом уже строит fold ranges. и еще одна перерисовка.

threads: after File/Reopen no coloring

@AlekId
после последних правок (econtrol, atsynedit_ex, Cud) с командой File/Reopen такой глюк- то нормально, то нет покраски (после места где был текущий экран- покраска обрывается).

При изменении цвет есть. После след Reopen опять обрыв (чуть дальше)
тестирую на py\cuda_ext\cd_ext.py

unknown

AV after Cuda start

@AlekId
AV на 1й строке

function TecParserResults.WaitTillCoherent(roSync:boolean; timeOut:Cardinal): boolean;
var timeWait:cardinal;
begin
  if not assigned(FWorkerThread)
      or FWorkerThread.TryAcquireSync then exit(true);

  WaitCoherentHarder(roSync);
  result:=true;
end;
         

этот AV-- после старта куды, при пустых вкладках(!!) после 2сек ожидания.

DelayedParsing in adapter

@AlekId
опция куды lexer_delayed_parsing* еще работает? В адаптере это обработка OnEditorIdle. она еще есть.
смысл в "паузе" если есть поток?

Error on compile

function TecParserResults.__UnsafeGetTagPtr(index: integer): PecSyntToken;
begin
result:=FTagList.Get._GetItemPtr(index);
end;

ec_syntaxclient.pas(366,23) Error: Identifier idents no member "_GetItemPtr"
fpc 3.3.1
@AlekId

thread: File/Reopen works bad

на большом .pas file: Cudatext File/Reopen работает плохо

  • нет прогресса парсинга
  • работаает в 3-4 раза дольше, ждал 15 сек (раньше было 5)
    @AlekId

New cudatext, Linux x64

опция user.json
"ui_reopen_session": true,

открыл 3 файла в 2 группах

закрыл куд. открыл куд. криво покрашен файл в группе2. скрин

Screenshot from 2019-04-29 16-10-17

@AlekId

Testing new cudatext.exe win32

Взял 32-релиз
Подменил exe
Перенес настройки+плагины+тему из рабочего Куд
Открыл
CudaText\py\cuda_find_in_files\cd_fi_in_fi.py 145 Kb
Раскраска появилась через несколько минут!

Fix for grammar

@AlekId
на форуме пишут. Что при открытии C# файла имеют
assertion failed (ec_syntgramma.pas, line 775)
поправили это так- max=256 в ф-ции Push.


function TGrammaAnalyzer.ParseRuleFaster(const aFromIndex: integer;
  Rule: TParserRule; Tags: TTokenHolder):integer;
const max=256;

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.