Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Pouze tento týden sleva až 80 % na e-learning týkající se C a C++. Zároveň využij akce až 80 % zdarma při nákupu e-learningu - více informací.
c++ week
Avatar
Neaktivní uživatel:20.5.2016 16:54

Ahojte, potřeboval bych poradit princip / návrh, pokud chci implementovat zabarvování syntaxe (klíčových slov a dalších), dále nějaké ty drobnosti typu "napíšu složenou závorku, připíše to druhou, a pokud stisknu Enter, pěkně se to odsadí a přesune se kursor", a taky ještě jak byste implementovali intelisense jako ve VS. Je nato nějaký dobrá návrh, nebo se to dá "zbastlit jen tak od boku"? Nevím moc jak začít.

Odpovědět
20.5.2016 16:54
Neaktivní uživatelský účet
Avatar
VitekST
Člen
Avatar
VitekST:20.5.2016 20:55

Zkusil bych si upravit RichTextBox, je na to spousta článků.
Třeba jeden zde: http://www.codeproject.com/…-RichTextBox

Jinak, mrkni na "FastColoredTex­tBox", ten pomocí regexů už kód zabarvuje přímo (ukládá si text ve formě tokenů = třída se znakem, pozicí, a barvou, co jsem tak pochytil)

Editováno 20.5.2016 20:56
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět
20.5.2016 20:55
Avatar
Odpovídá na VitekST
Neaktivní uživatel:21.5.2016 10:13

Díky ti. Zrovna na tvojem webu jsem našel tvoje vlastní IDE a chtěl jsem taky umět zbastlit něco podobného :-)
Jinak ještě se barví zelenou třídy, struktury atd. To máš jak pořešené? Já bych si udělal List, a do něho vytáhl ze všech referencovaných knihoven reflexí, a potom tam přidával to, co vyrobíš v tom konkrétním projektu samotném, ale je to dobrý nápad?

Nahoru Odpovědět
21.5.2016 10:13
Neaktivní uživatelský účet
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
VitekST
Člen
Avatar
Odpovídá na Neaktivní uživatel
VitekST:21.5.2016 10:18

No problem, m8. :)

Právě ten můj SandboxSharp je založen na FastColoredTextBox, jen jsem k němu pochytil pár regexů.
To, že to zabarvuje třídy je jenom díky tomu regexu, není za tím žádná reflexe.

Kdybych to ale já měl zabarvovat na základě metadat vytáhlých z knihoven, udělal bych to opačným směrem, zkoumal bych regexem možné názvy, které by mohly být zabarveny, a v případě existence toho názvu bych ho zabarvil.

Protože teď si představ, jak ten tebou zmíněný List bude obrovský, když tam napráskáš názvy všeho, co existuje.

Editováno 21.5.2016 10:20
 
Nahoru Odpovědět
21.5.2016 10:18
Avatar
Odpovídá na VitekST
Neaktivní uživatel:21.5.2016 10:43

No právě List by byl obrovský, ale jak v tom případě funguje Intellisense ? Ve VS siskneš Crl + Space, a vyletí nabídka snad úplně všeho, tak odkud to tahá?

Nahoru Odpovědět
21.5.2016 10:43
Neaktivní uživatelský účet
Avatar
VitekST
Člen
Avatar
Odpovídá na Neaktivní uživatel
VitekST:21.5.2016 10:49

Tak... Nějaký seznam to určitě bude, ale bude určitě optimalizovanější než seznam klasický.
Ne, jinak.

O reflexi napsaného kódu a knihoven se ve VSku stará knihovna Microsoft CTP ("Roslyn"), která si nějaká ta metadata vybuduje, ale ten seznam není přístupný přímo, je přístupný pomocí metody.

Ta kolekce těch metadat je sice velká, ale určitě je optimalizovaná.

Ale ve chvíli, když ty vytáhneš seznam všech přístupných členů, musíš ho někam uložit, tudíž alokuješ další místo v paměti.

Je tedy lepší se ptát na existenci nějakého člena, než procházet obří seznam.

 
Nahoru Odpovědět
21.5.2016 10:49
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.