다음을 통해 공유


inactive 구문 colorize 하기 ....

아.. 어제 밤새도록 이 버그를 고쳤는데..... 흐.. 결국 안 사용하기로 결정 났다 ㅡ.ㅡ 흐 엄청 허무하다 ㅋㅋ 밤까지 새가며 열심히 만들었건만 ... 쯧쯧...

버그의 요점은... C# IDE에서

#if true

#elif SOMETHING

#else

#endif

처럼 preprocessor를 이용해서 code path를 여러 부분으로 나눌때, 경우에 따라서 colorize가 제대로 되지 않는다는거다.

흐.. 결코 간단하지 않은 버그다. 이유는 colorizer가 우리 language service에 현재 포지션에 대한 color를 물어 볼때, 아직 lex data가 up-to-date 되지 않았을 경우가 많기 때문이다.

lex data가 up-to-date 되지 않았을 경우 그 라인과 현 라인의 윗 라인의 state에 따라 현재 라인에 대한 정보를 추측해야 하는데, 문제는 lex data가 없으면 현재 span이 active한 부분인지 inactive 한 부분인지 알길이 없다는거다.

내가 만들려고 한 픽스는 colorizer lexer에 preprocessor에 대한 lex 부분을 추가로 넣고 activeOrInactive라는 새로운 state을 넣는거였는데.. ㅋㅋ 팀의 결론은 알고리즘만 졸라 복잡해 지고, 어차피 lex data 가 up-to-date가 되기 전에는 정확한 state을 알길이 없기 때문에, 드는 노력에 비해 얻는게 없다는거다 ㅡ.ㅡ

하여간, 어제 하루 종일 저 버그 하나만 매달렸는데, 엄청 허무하게도 그전으로 revert 시켜 버렸다 ㅋㅋ.

그냥 넉두리 ㅋㅋ 수고!!

Comments

  • Anonymous
    December 18, 2005
    ^^