Age | Commit message (Collapse) | Author |
|
|
|
This reverts commit f6439789db9c02216baabb197017c7a79a63ba04.
Oops, I committed unrelated changes here, let me clean that up..
|
|
|
|
This action should not be enabled when there is only one editor open,
since you are not allowed to be editor-less.
|
|
Note that you are not allowed to remove the very last editor.
These keybinds are all temporary while I figure out what the right ones
should be. I'm not exactly sure how, but it'll reveal itself. :^)
|
|
|
|
We also now start out with a single editor, instead of two. :^)
|
|
|
|
|
|
This fixes the bug seen in my monthly OS update video, where we'd look
through a stale copy of each file, instead of the potentially edited
version in the GTextDocument.
Search results are now also represented as a full GTextRange, and when
you jump to a search result, we select the whole matching range. :^)
|
|
TextDocument was not the right name, and got even more confusing with
the addition of GTextDocument in LibGUI.
|
|
When hovering over a C++ token that we have a man page for, we now show
the man page in a tooltip window.
This feels rather bulky at the moment, but the basic mechanism is quite
neat and just needs a bunch of tuning.
|
|
This makes it easier to tell them apart in locator suggestions. :^)
|
|
|
|
|
|
|
|
Pressing Ctrl+K will now open the little locator command line at the
bottom of the window. Right now it can only be used to jump quickly
to a file.
|
|
|
|
Also make the editor filename label bold only for the current editor.
|
|
Hey, it actually works! You can now edit the same file in both editors
and even the C++ highlighting updates correctly in both of them. :^)
|
|
The idea here is to decouple the document from the editor widget so you
could have multiple editors being views onto the same document.
This doesn't work yet, since the document and editor are coupled in
various ways still (including a per-line back-pointer to the editor.)
|
|
This is very hackish and should be done differently, but the feature
feels pretty nice and does work for now.
|
|
|
|
This patch adds Editor (subclass of GTextEditor) and EditorWrapper.
An EditorWrapper is a composite widget that adds a little statusbar
above an Editor widget. The statusbar is used for showing the filename
and the current cursor position. More things can definitely be added.
To get to the currently active editor, call current_editor().
You can also get to the current editor's wrapper by calling..
current_editor_wrapper(). Which editor is current is determined by
which was was last focused by the user.
|
|
On second thought, let's not have bold identifiers, as this ended up
making most of the code bold. :^)
|
|
|
|
|
|
You can now press Ctrl+N to create and add a new file to the project!
|
|
A GTextRange is really just two GTextPositions (start and end) anyway.
This way we can say nice things like "if (range.contains(position))"
|
|
By "hide" I really mean collapse them down to 24px height. We grow them
to a normal size when they're needed. The user is also free to resize
them at will.
This keeps them out of the way when you just want to do editing. :^)
|
|
|
|
Add a list of hard-coded standard types (including AK types) and show
them in a different style.
Rehighligt the file whenever it changes. (This is very inefficient but
makes it much easier to experiment.)
Also keep tweaking the colors. :^)
|
|
Now that we can specify the font of a GTextEditor::Span, use this to
make C++ keywords show up in bold text. Also tweak colors a bit.
|
|
Also fix broken "/* */" comment handling.
|
|
When we open a file whose name ends in ".cpp", we now pass the contents
through CppLexer, which produces a CppToken stream.
Those CppTokens are then converted into GTextEditor::Spans and handed
over to GTextEditor which then colorizes the source code accordingly.
This is pretty neat. :^)
|
|
These are infinitely more useful than raw indices into the input text.
|
|
|
|
I broke this when factoring out the find-in-files widget into its own
class. This patch adds a main_editor() global getter for grabbing at
the main GTextEditor from wherever you are.
|
|
This looks a bit less janky when hiding/unhiding.. :^)
|
|
We most likely want to see what comes out on the console when starting
one of these actions.
|
|
|
|
|
|
This is the closest I could figure out how to get to what's actively
running on the terminal view at the moment.
Perhaps we can bundle up every process with the same tty and sum it
all up somehow. I'm not sure.
|
|
We now have a little widget that sits above the terminal view in the
build/application console. When a child process is running, we show its
PID, name, scheduling counter, and amount of resident memory in a live
little overview.
This is not working right just yet, since we don't know how to get to
the actually active PID on the TTY. Or, well, we find the active PID by
looking at the PGID of our fork()ed child.
This manages to find children spawned by Shell, but not children
spawned by make, for instance. I need to figure out how to find those.
|
|
Instead of clogging up main.cpp with find-in-files functionality,
put it in a FindInFilesWidget class in a separate file.
|
|
Have Ctrl+Shift+F open the find-in-files widget and focus the text box
so you can start entering text right away.
Also make it do a search when you press the return key.
|
|
Projects now contain a set of TextDocument objects. Each TextDocument
represents a member file in the project. TextDocuments may not have
their file contents loaded at all times, but they will be loaded on
demand when calling TextDocument::contents().
"Find in files" works by iterating over the documents in the project
and calling find(needle) on each one. The return value from find() is
a vector of line numbers where the needle was found.
This is obviously going to need a bunch more work. :^)
|
|
This will make it straightforward to add more things at this level.
|
|
Pressing Ctrl+S now saves the currently open file to disk.
|
|
Ctrl+R will now execute "make run" in the project directory. :^)
|