about summary refs log tree commit diff stats
Commit message (Collapse)AuthorAgeFilesLines
* make page-up/page-down smart to hidden itemsKartik K. Agaram2021-10-091-368/+49
| | | | | | | | In the process we eliminate a whole bunch of duplication and give item navigation a single source of truth. Page-up isn't quite _identical_ to how it used to be before. Let's see if it bothers us.
* standardize argument orderKartik K. Agaram2021-10-091-10/+10
|
* bugfixKartik K. Agaram2021-10-091-7/+25
| | | | | | | new test: hit enter, go to thread view, hit enter again, go into thread view again. No crash. Just bite the bullet and make item-index robust to single-thread tabs.
* bugfix: skip hidden items when moving cursorKartik K. Agaram2021-10-091-14/+74
| | | | | | | | | | Tests to create when I start creating tests: hide an item. Cursor moves to a new item. hide an item that's not the bottom-most item, hit down arrow. Cursor moves to a new item. hide an item that's not the top-most item, hit up arrow. Cursor moves to a new item. hide top-most item. Cursor on new item. Hit up arrow. No change. Scroll down. New item. hide bottom-most item. Cursor on new item. Hit down arrow. No change. Scroll up. New item. open a thread. Hit down arrow. No crash (item-index not called).
* slack: hide threads from the global viewKartik K. Agaram2021-10-091-1/+153
| | | | | | | | | | | | | | | To hide all comments from the same thread as the item at cursor, press ctrl-h. To later unhide everything, press ctrl-u. Currently ctrl-u works by creating a whole new tab (that you can back out of using Esc). That gives a way to undo it. Still some rough edges: update number of items in view when hiding a thread avoid clipping menu in channel view undo a single hide without giving up previous ones
* slack: start work on hiding single threadsKartik K. Agaram2021-10-091-1/+1
|
* .Kartik K. Agaram2021-10-091-2/+2
|
* .Kartik K. Agaram2021-10-091-2/+2
|
* .Kartik K. Agaram2021-10-032-2/+1
|
* .Kartik K. Agaram2021-09-211-4/+7
|
* .Kartik K. Agaram2021-09-131-3/+5
|
* support arrow keys in apps/ex7.muKartik K. Agaram2021-09-041-4/+4
|
* fix apps/ex7.muKartik K. Agaram2021-09-042-2/+8
| | | | I'm increasingly missing CI.
* .Kartik K. Agaram2021-09-031-1/+2
|
* a tamil example (that I can't read)Kartik K. Agaram2021-09-031-5/+19
|
* audit remaining calls to render-code-pointKartik K. Agaram2021-09-023-8/+63
| | | | By definition that function can't support combining characters.
* support combining characters in streams of textKartik K. Agaram2021-09-024-10/+134
| | | | Fake screens can't handle them yet.
* .Kartik K. Agaram2021-09-021-5/+3
|
* .Kartik K. Agaram2021-09-021-11/+12
|
* .Kartik K. Agaram2021-09-021-3/+3
| | | | A more common hindi vowel.
* .Kartik K. Agaram2021-09-021-4/+20
| | | | | Inline render-code-point in one of its call-sites before we add support for combining characters.
* .Kartik K. Agaram2021-09-021-1/+1
|
* .Kartik K. Agaram2021-09-011-0/+1
|
* a few more examples of combining charactersKartik K. Agaram2021-09-011-2/+45
|
* .Kartik Agaram2021-09-0116-10431/+14919
|
* rendering code-points with combining charactersKartik K. Agaram2021-09-014-24/+95
| | | | | | | There's a new example app showing this ability. Still to go: support for combining characters when rendering text and streams.
* tag combining character code-pointsKartik K. Agaram2021-08-311-727/+727
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Unfortunately the Unicode database doesn't actually provide obvious metadata for combining characters. The process I followed is as follows. I noticed that GNU Unifont provides the following files for download: - unifont-13.0.06.hex: All Plane 0 glyphs - unifont_sample-13.0.06.hex: The above .hex file with combining circles added Downloading and diffing the two yields all code-points with combining circles. I assume they are exactly the combining characters I care about. One mechanical difficulty is cross-correlating the above files that include the code-point in each line with font.subx which does not. I got things to work by modifying the above files in place until they have the same format as font.subx, using the following Vim commands on each file: :%s|.\{64\}|10/size^M00/is-combine^M&| :%s|^.\{32\}$|08/size^M00/is-combine^M&00000000000000000000000000000000| :%s|..|& |g :%s|10 /s iz e|10/size| :%s|08 /s iz e|08/size| :%s|00 /i s- co mb in e|00/is-combine| Now I can update the metadata with a Vim macro which jumps to the next hunk and increments /is-combine on the previous line.
* start hacky experiment to support combining charsKartik K. Agaram2021-08-315-6/+4384
| | | | | | | | | | | https://en.wikipedia.org/wiki/Combining_character The plan: just draw the combining character in the same space as the previous character. This will almost certainly not work for some Unicode blocks (tibetan?) This commit only changes the data/memory/disk model to make some space. As always in Mu, we avoid bit-mask tricks even if that wastes memory.
* .Kartik K. Agaram2021-08-312-2/+2
|
* fix a typo from commit a479f0d0837Kartik K. Agaram2021-08-311-1/+1
| | | | | | | | Yet another gnarly reason to start checking all arg metadata in linux/pack.subx or something like that. With this bug most of my programs (including browser-slack!) were working even though the instruction stream was almost certainly misdecoded halfway through every attempt to draw glyphs.
* slack: start rendering unicodeKartik K. Agaram2021-08-301-24/+25
|
* .Kartik Agaram2021-08-3061-6942/+16397
|
* .Kartik K. Agaram2021-08-302-5/+5
| | | | Open question fixed.
* first rendering of non-latin scriptKartik K. Agaram2021-08-302-2/+127
| | | | | Open question: why does column 0 get cropped? The spacing also seems excessive. Are we taking up 3 grid points?
* .Kartik K. Agaram2021-08-301-1/+63
|
* fix bad terminology: grapheme -> code pointKartik K. Agaram2021-08-2915-193/+210
| | | | | | | | | | Unix text-mode terminals transparently support utf-8 these days, and so I treat utf-8 sequences (which I call graphemes in Mu) as fundamental. I then blindly carried over this state of affairs to bare-metal Mu, where it makes no sense. If you don't have a terminal handling font-rendering for you, fonts are most often indexed by code points and not utf-8 sequences.
* .Kartik K. Agaram2021-08-292-8/+8
|
* .Kartik K. Agaram2021-08-293-8/+12
|
* load Font in a non-contiguous area of memoryKartik K. Agaram2021-08-295-13/+44
|
* .Kartik K. Agaram2021-08-2913-26/+3
|
* .Kartik K. Agaram2021-08-291-1/+1
|
* .Kartik K. Agaram2021-08-291-3/+3
|
* improve translation scriptsKartik K. Agaram2021-08-292-8/+38
|
* .Kartik K. Agaram2021-08-291-2217/+2217
|
* inline SubX translationKartik K. Agaram2021-08-294-132/+98
| | | | | We can't really translate purely SubX code anyway at the top-level. Stop exposing those scripts.
* retreat to 640KBKartik K. Agaram2021-08-293-17/+5
|
* build still brokenKartik K. Agaram2021-08-293-2/+30
| | | | | Now we load all the code, but it overwrites the extended BIOS area. 640KB is no longer enough. Need to rethink loading strategy.
* import a few more unicode blocks from UnifontKartik K. Agaram2021-08-292-6/+8527
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | shell/ is currently broken; we've overflowed available contiguous space for code. Block names based on https://www.compart.com/en/unicode/block: 0x0000 - 0x007f Basic Latin 128 0x0080 - 0x00ff Latin-1 Supplement 128 0x0100 - 0x017f Latin Extended-A 128 0x0180 - 0x024f Latin Extended-B 208 0x0250 - 0x02af IPA Extensions 96 0x02b0 - 0x02ff Spacing Modifier Letters 80 0x0300 - 0x036f Combining Diacritical Marks 112 0x0370 - 0x03ff Greek and Coptic 135 0x0400 - 0x04ff Cyrillic 256 0x0500 - 0x052f Cyrillic Supplement 48 0x0530 - 0x058f Armenian 91 0x0590 - 0x05ff Hebrew 88 0x0600 - 0x06ff Arabic 255 0x0700 - 0x074f Syriac 77 0x0750 - 0x077f Arabic Supplement 48 0x0780 - 0x07bf Thaana 50 0x07c0 - 0x07ff NKo 62 0x0800 - 0x083f Samaritan 61 0x0840 - 0x085f Mandaic 29 0x0860 - 0x086f Syriac Supplement 11 0x08a0 - 0x08ff Arabic Extended-A 84 0x0900 - 0x097f Devanagari 128 0x0980 - 0x09ff Bengali 96 0x0a00 - 0x0a7f Gurmukhi 80 0x0a80 - 0x0aff Gujarati 91 0x0b00 - 0x0b7f Oriya 91 0x0b80 - 0x0bff Tamil 72 0x0c00 - 0x0c7f Telugu 98 0x0c80 - 0x0cff Kannada 89 0x0d00 - 0x0d7f Malayalam 118 0x0d80 - 0x0dff Sinhala 91 0x0e00 - 0x0e7f Thai 87 0x0e80 - 0x0eff Lao 82 0x0f00 - 0x0fff Tibetan 211 0x1000 - 0x109f Myanmar 160 0x10a0 - 0x10ff Georgian 88 But don't trust the block sizes above. Thanks to gdb[1] for this helper: define z print 2 * (0x$arg1 - 0x$arg0 + 1) end e.g: (gdb) z 10a0 10ff 192 [1] https://sourceware.org/gdb/current/onlinedocs/gdb/Define.html
* render wide glyphs in the fontKartik K. Agaram2021-08-292-5/+36
|
* bugfix in commit 8e182e394Kartik K. Agaram2021-08-291-1/+3
| | | | | Any command in shell that rendered the screen resulted in an infinite loop. But it took me forever to even realize it was an infinite loop.