aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-11-11fix(fmt): incorrect dispatch handlingHEADmasterNicholas
2021-11-11chore: split up base library into individual files for smaller binariesNicholas Noll
2021-11-11feat: libfmt prototype added from plan9Nicholas Noll
2021-11-11chore: update desktopNicholas Noll
2021-11-11chore: updated old copy of mkrunewidthNicholas
2021-11-11chore: forgot to move old generatorsNicholas
2021-11-11feat: added libfmtNicholas
2021-11-11chore: libunicode -> libutfNicholas
2021-11-08feat(rc): added back functionality of prompt, now unicode awareNicholas Noll
2021-11-04Feat: input readline now unicode awareNicholas Noll
Updated our assumptions of readline to handle valid unicode input. This required integrating with an explicit library to handle unicode knowledge.
2021-10-29fix(unicode): emoji widths and readline now moves in a more unicode aware mannerNicholas Noll
2021-10-29checkinNicholas Noll
2021-10-29implemented functionality to compute rune widths from unicode dataNicholas Noll
2021-10-29chore: stop tracking auto-gen fileNicholas Noll
2021-10-29Prototype of unicode readline supportNicholas Noll
The readline functionality operated on the assumption that 1 byte = 1 character. This is obviously wrong if you input a non-ascii character. This commit temporarily removes a lot of functionality but parses input bytes in a unicode-aware manner. The outstanding problem now is 1 unicode rune != 1 column. There are double wide characters, as well as zero width runes, that further break our assumption that 1 rune = 1 character = 1 column. This is the next iteration.
2021-10-29Exposed some unicode values to library users.Nicholas Noll
I was hiding too many important constants. This commit moves them to the main exported header.
2021-10-28Feat(libunicode): cleaned up decode/encodeNicholas Noll
Additionally, decode can now apply backwards on a byte string.
2021-10-26fix(unicode): renamed functions to be easier to understand their functionsNicholas Noll
2021-10-26Feat(libunicode): Added an explicit unicode libraryNicholas Noll
Refactored code to pull out utf8 functions from base into a standalone library. Also left the required function inside arg.c so that code that calls ARG_BEGIN doesn't have to link to libunicode.
2021-10-26fix(rc): prompt during command entryNicholas Noll
2021-10-26feat(rc): keywords now recognized. for and while loopNicholas Noll
Prototypes for loops sketched. This required recognizing keywords and returning from yylex. Debugging/testing will be required.
2021-10-26chore: spaceNicholas Noll
2021-10-26chore(rename): libn -> baseNicholas Noll
2021-10-26proto(rc): control structuresNicholas Noll
2021-10-26feat(rc): added index operationsNicholas Noll
2021-10-21feat(rc): added a few builtinsNicholas Noll
2021-10-21feat(rc): added andand and oror operatorsNicholas Noll
2021-10-21Fix: attempted to access stale memory upon exec failure.Nicholas Noll
Now correctly prints out argv[1]
2021-10-21feat(rc): string join operatorNicholas Noll
2021-10-21feat(rc): string concatenation worksNicholas Noll
2021-10-21feat(rc): expanded tree printingNicholas Noll
2021-10-21feat(rc): vi mode fleshed outNicholas Noll
2021-10-20Feat: now execs instead of exec + fork if going to exit.Nicholas Noll
One quick solution to the lack of tracking deep into the command line is to note that the pattern of code emitted for an async is: Xasync |__ child (command) |__ parent (continues) The child creates a process group, as described before. If the child is a simple command, we will now "exec" as it will exit immediately after the command. This gives us the correct behavior, at least for simple cases. This also fixed pipes. However, if child has to be forked, i.e. can't be immediately execed, then I don't think this process works...
2021-10-20Refactored interactivity to track with thread.Nicholas Noll
Hit a bit of a stopping point. Specifically, the way XAsync runs currently is by forking the execution context and having the child run the async code while the parent runs the remainder. The problem with this architecture is it doesn't interact well with job control. When we fork, we create a new process group. Thus the Xasync fork becomes the new leader. In short, our traversal of the parse tree as to be less "preorder" and more "in order", i.e. from the leaves up. The "left" command of the pipeline should be the "leader" of the process group.
2021-10-19Feat(rc): added subshell commands and cd builtinNicholas Noll
Slowly chipping away at a decent feature list. Subshell commands are executed by @{ ... }.
2021-10-19feat(rc): prototype of async jobsNicholas Noll
2021-10-19Feat: word operators and more robust crashingNicholas Noll
Added the length and concatenate operators. Slightly improved the robustness on syntax errors.
2021-10-19feat(rc): cleaner process watching for each jobNicholas Noll
2021-10-18feat(rc): job control prototype working for basic commandsNicholas Noll
2021-10-15feat(rc): working prototype of input->compile->print loopNicholas Noll
2021-10-13RM(rc): old code. too many assumptions baked inNicholas Noll
2021-10-13Feat(rc): working(ish) version of rc shellNicholas Noll
Removed compile commands
2021-10-13feat(vendor): remove dependence on readline and ncursesNicholas Noll
2021-10-13feat(rc): added unix port of rc with linenoiseNicholas Noll
2021-10-13fix(email): bytes error. updated vendoringNicholas Noll
2021-10-09chore(font): comment out makefileNicholas Noll
2021-10-09fix(term): forgot harfbuzz fileNicholas Noll
2021-10-09feat(rc): added shellNicholas Noll
2021-10-08fix(tmux): regex to correctly deal with suspended nvimNicholas Noll
2021-10-08feat(email): allowed for markdown inside emailsNicholas Noll