Line Numbers Line numbers can be displayed in the left margin of the code window. This seemed to nicely reflect the structure of the code in a shallowly hierarchical way.
My problem is that I can't find a way to make the Prism syntax highlighter work inside my text editor iframe would have the same problem with any syntax highlighter. On the subject of Internet Explorer's tag soup, here is an interesting anecdote: They say "I don't think I really want to learn this, so I'll make up some silly reason to condemn it.
That seemed a little slow.
You only get a popup message from time to time reminding you to purchase a license for continued use. Create an object pointing to the nodes at the start and end of the selection, and the offset within those nodes.
Fortunately I could fix this by capturing the enter presses and manually inserting a br tag at the cursor. Inside the parser, three kinds of context are stored. I'm amazed how often issues that seem hopeless do turn out to be avoidable, even if it takes hours of screwing around and some truly non-obvious ideas.
You can move their endpoints by a given number of characters, which is useful when trying to set a cursor at the Nth character of a textarea, but in this context, newlines are not considered to be characters, so you'll always end up one character too far for every newline you passed.
That brought me to the idea of doing a serious parse on the code. It does, however, not give you much of a clue on where the selection is located in the document.
In Internet Explorer, it is extemely hard to get a good view on what nodes the user has selected. Not all text editors are great for programming, like the aforementioned Notepad, since it does nothing to ease or automate the editing of source code.
The plan was not ridiculously ambitious. It worked like this: That seemed to work, but when resetting the selection after modifying the content of the textarea I ran into another interesting feature of these TextRanges: This information is used for indentation. The first lines of scanNode extend the continuation with the task of scanning the next node, if there is a next node.
Vim is open source and free to use. Although it is relatively young compared to other popular editors, having just been released init has improved in leaps and bounds over the years. Note that you can enable either Virtual Space or Word Wrap, but not both. Since the DOM transformation generally does not change the position of things, storing the pixel offsets of the selection makes it possible to restore that same selection, never mind what happened to the underlying DOM structure.
When dealing with lists of arguments or the content of array and object literals there are two possible models. Stuff that binds variables, var, function, and catch to be precise, is treated with more care, because the parser wants to know about local variables. Updates are not frequent as used to in the past.
Finding workarounds for browser bugs can be a terribly nonlinear process. Next I tried a series of div elements, one per line, with span elements inside them. This is a parser that does not run through a whole document at once, but parses on-demand, a little bit at a time.
After some experimentation I managed to work out an elaborate method for getting something similar to the selectionStart and selectionEnd values in other browsers. Which is probably not realistically going to happen anytime soon. The second kind of context is the lexical context, this keeps track of whether we are inside a statement, block, or list.
Next I tried a series of div elements, one per line, with span elements inside them. When scanning backwards through code one has to take string values, comments, and regular expressions which are delimited by slashes into account, because braces and semicolons and such are not significant when they appear inside them.
They also have a style, which is used later by the highlighter to give their span elements a class name the parser will still adjust this in some cases.
In the W3C model this is rather easy, you have to do some creative parent- and sibling-pointer following to arrive at the correct top-level node, but nothing weird. Again get the length of the text in the first object.
But one can't help wondering how much easier things like preventing the user from pasting pictures in his source code would be on another platform.A lightweight Text/Code Editor (Like NotePad ++ for Windows) is a way more practical way to create simple proyects or make light modifications to code.
I even took notes at the university on NotePad ++ and use it everyday not just for coding. Syntax highlighting for multiple programming and scripting languages is one of the most useful tools in any text editor, and autocomplete is a welcome addition as well.
I am building a text editor using an iframe as the editor. I'm working on a menu item that when clicked, allows the user to write a block of code that is then styled using the Prism syntax highlighter, and added inside the iframe with the rest of the text content.
Therefore, I am bound to use an existing rich text editor, but it is important that it has the ability to add code snippets.