4coder » Forums » What exactly can and can't you do with the customization layer?
boagz57
Jason
87 posts
#17317 What exactly can and can't you do with the customization layer?
1 month, 2 weeks ago Edited by Jason on Feb. 2, 2019, 4:41 p.m. Reason: Initial post

Forgive me if this has been asked already (I couldn't find a similar post at least upon my limited search) but what exactly are the limitations (if any) of the 4coder custom layer? Are there things you cannot really modify through the custom layer?
Mr4thDimention
Allen Webster
463 posts / 2 projects

Heyo

#17318 What exactly can and can't you do with the customization layer?
1 month, 2 weeks ago Edited by Allen Webster on Feb. 2, 2019, 6:23 p.m.

There are a lot of things 4coder can do and a lot of things it can't do, and the line between them moves from version to version. I could answer what my plan for 4coder eventually can and can't do, or what the current version of 4coder can and can't do. I am guessing that you are asking in order to determine if it's worth your time trying to do a specific idea with 4coder, so I'll answer based on what it can do right now. If you want the long term plan let me know and I'll make another list.

4coder is not...
4coder is not a general purpose renderer or general purpose OS abstraction. You couldn't, for instance, build a game in it... unless your game was all text based.

4coder is not a library. You can't pick out just the parts of the system you like and throw out the rest to be replaced by your own system.

4coder is not a fully featured word processor system. The limitations on text rendering and layout are built into the core, they are not powerful enough to support any arbitrary document, and they are baked in and cannot be augmented.

4coder is not a fully featured UI system. The limitations on the UI elements available, and the ways they can be put together into a UI, do not necessarily cover every common UI design, and are baked in and cannot be augmented.

4coder is...
4coder is basically an engine. It runs the main loop and organizes input processing, rendering, and several other core features, and exposes them to you, letting you fill details without forcing you (or allowing you) to construct the entire system.

4coder is optimized for textual operations on "buffers" (as in very long strings). It has built in optimizations for text edit operations. It has built in undo-redo history. It has built in text layout and rending capabilities, for a number of layout configurations. It has built in line ending handling. etc, etc.

4coder is designed to be a generic programming environment. The core does not force any particular editing paradigm onto you, although it does suggest that it prefers emacs style mark and cursor editing, it does nothing to force this onto you. All supported input events can be customized in any context. The core supports piped child processes, allowing you to construct fairly complex systems such as configured build hot keys, command executors; in fact any program you write that takes no input (besides on the command line) and outputs to stdout, can be run in 4coder, meaning you can write programs specifically to take advantage of this. The core supports a carefully optimized lexer and syntax highlighting that is partially customizable, and you can fully customize generic syntax highlighting although you'll lose out on some of the optimizations this way.


Hope that helps! Happy to answer any lingering clarification or elaboration questions you have!

boagz57
Jason
87 posts
#17322 What exactly can and can't you do with the customization layer?
1 month, 2 weeks ago

Thank you so much for the response. You've definitely given me a much clearer picture and I will be purchasing tonight. I must say though you have me curious as to what you plan to add in the future. You don't have to give another detailed post if you don't want to. If you have already laid this out somewhere else you can just point me in that direction and I can just take a look at it.
albatros
33 posts / 1 project

None

#17324 What exactly can and can't you do with the customization layer?
1 month, 2 weeks ago

I already bought 4coder, I'm waiting for two features to be included, or made possible to do :

- Keyboard Macro
- Code snippets (a link for those who would like to know what it looks like)

Just to be sure, those are in the pipeline ?

(I also needed to know if access to the code would be given once development stops and this has been happily clarified to be the case recently)

None
ratchetfreak
435 posts
#17331 What exactly can and can't you do with the customization layer?
1 month, 2 weeks ago

albatros
I already bought 4coder, I'm waiting for two features to be included, or made possible to do :

- Keyboard Macro
- Code snippets (a link for those who would like to know what it looks like)

Just to be sure, those are in the pipeline ?

(I also needed to know if access to the code would be given once development stops and this has been happily clarified to be the case recently)


With the customization layer both are possible

If with macros you mean arbitrary sequence of commands that can run of a single keystroke, that's the original goal of the customization layer. It even allows arbitrary code execution because the customization layer is a dll that gets loaded.

Code snippets seam to be expansion from shorthands to full code, either automatically or triggered by keystroke. That is easy by looking back and matching the text before the cursor with a pattern and then replacing it. I believe there is a built in C parser that will even let you only activate them inside certain contexts (top level, inside function, etc.)
albatros
33 posts / 1 project

None

#17343 What exactly can and can't you do with the customization layer?
1 month, 2 weeks ago

Awesome, I'll look into that :)

None
steughar
10 posts
#20625 What exactly can and can't you do with the customization layer?
3 weeks ago

Can I make my own automated syntax_highlighting? (When I'm introduce typedef macro or new struct I want it highlighted)
Can I make my own semantic analyzer in it? ( I wan't to have ability to go to TAG by F12 or something)