June McEnroe
da1b943fcc
Share a cut buffer between all edit buffers
2022-02-20 16:20:33 -05:00
June McEnroe
c8b6e331de
Assert return values in edit tests
2022-02-20 16:05:24 -05:00
June McEnroe
e39bba1a8a
Move mbs out of struct Edit, use a global buffer
...
This saves 4K in the edit buffers, not to mention all the heap
allocations for the separate mbs buffers!
There might be a way to be more clever about capacities, but I don't
think it's worth it.
2022-02-20 15:42:24 -05:00
June McEnroe
8065fcabc3
Make sure new cap is actually larger than new length
2022-02-20 12:24:54 -05:00
June McEnroe
157be8a8d7
Remove unused mbs.len field from struct Edit
2022-02-20 11:54:06 -05:00
June McEnroe
a2a118c857
Fix edit.[ch] license notice additional permissions
2022-02-19 14:51:26 -05:00
June McEnroe
1a2477ef7a
Implement new line editing "library"
...
Losing tab complete and text macros, for now.
This new implementation works on an instance of a struct and does
not interact with the rest of catgirl, making it possible to copy
into another project. Unlike existing line editing libraries, this
one is entirely abstract and can be rendered externally.
My goal with this library is to be able to implement vi mode. Since
it operates on struct instances rather than globals, it might also
be possible to give catgirl separate line editing buffers for each
window, which would be a nice UX improvement.
2022-02-18 23:47:11 -05:00
June McEnroe
0036e6e9f0
Fix M-f ordering
2022-02-18 22:40:16 -05:00
June McEnroe
9c384de6db
Treat any amount of space and punctuation as word boundaries
...
This matches behaviour of, e.g. zsh -o emacs.
2022-02-09 17:55:33 -05:00
C. McEnroe
9c1b241c17
Cycle between adding colon suffix and not in tab complete
...
Allows completing a nick at the beginning of a message without a
colon by continuing to press tab, as well as after another nick
already followed by a colon without turning it into a comma-separated
list of nicks all followed by a colon. For example, tab can be used
to cycle between the following pairs:
nick1: |
nick1 |
nick1, nick2: |
nick1: nick2 |
2021-11-19 14:44:16 -05:00
C. McEnroe
56139227a4
Use (bright) red for \com text macro
2021-07-26 18:25:05 -04:00
C. McEnroe
60ff44cf4e
Stop at previous \ when expanding macros
...
There was no reason to ever require whitespace before the macro
name.
2021-06-24 14:10:49 -04:00
C. McEnroe
e18c585701
Add \com text macro
2021-06-14 14:29:16 -04:00
C. McEnroe
3b9e778dac
Don't insert wchar_t if it can't be converted to mbs
...
Otherwise it could hit the assertion in editBuffer while converting
to mbs for consumption by the rest of the program.
It's possibly to trigger this with LC_ALL=C and typing C-z C-v M-a,
for example.
2021-02-15 19:15:38 -05:00
C. McEnroe
a92f1260ea
Don't expand macro if it can't be converted to mbs
...
Otherwise expanding a macro could hit the assertion in editBuffer
while converting to mbs for consumption by the rest of the program.
2021-02-15 18:41:46 -05:00
C. McEnroe
a1dece3df9
Use wmemcpy/wmemmove
2020-11-08 16:21:34 -05:00
C. McEnroe
1891c77535
Preserve colon from previous tab-complete
...
This fixes the case when pinging multiple nicks and one of them needs to
be cycled through.
2020-08-18 10:09:54 -04:00
C. McEnroe
814c36223a
Say "OpenSSL" in additional permission notices
...
LibreSSL is "a modified version of that library".
2020-08-04 12:19:14 -04:00
C. McEnroe
9bd10d768d
Add \banhammer macro
...
From the Textual extras command /banhammer.
2020-08-02 18:08:08 -04:00
C. McEnroe
3e03b7502b
Add current topic to tab-complete so it can edited
2020-07-13 10:22:33 -04:00
C. McEnroe
721c3a9ee6
Add additional permission for linking with LibreSSL
...
https://www.gnu.org/licenses/gpl-faq.en.html#GPLIncompatibleLibs
2020-06-08 17:48:07 -04:00
C. McEnroe
e3f7362241
Add M-q to collapse whitespace
2020-04-07 10:48:44 -04:00
C. McEnroe
8495d12216
Fix multi-mention tab completion condition
...
I don't know why I ever programmed it this way. It was really annoying
when trying to write "some phrase, nick".
2020-04-01 14:42:07 -04:00
C. McEnroe
77a7c02435
Pass correct length to mbstowcs
...
Too used to sizeof being the right thing for regular strings.
2020-04-01 12:15:44 -04:00
C. McEnroe
84f661ab05
Add \blush
2020-03-31 20:12:04 -04:00
C. McEnroe
13ae7cec59
Add \bear, \cool, \hug, \unflip, \wave
2020-03-31 10:50:42 -04:00
C. McEnroe
a0dde10cb6
Add text macros
2020-03-30 14:56:26 -04:00
C. McEnroe
407eaf9dbf
Tab complete from last iswspace
2020-03-30 13:27:35 -04:00
C. McEnroe
7ea1a416a1
Bump edit buffer cap to 1024
...
With message splitting it's reasonable to allow this to be larger.
2020-03-23 13:45:28 -04:00
C. McEnroe
700b5d5870
Replace small integers in size_t with uint
2020-02-15 22:19:55 -05:00
C. McEnroe
eb3a92c99e
Don't copy into cut buffer during tab complete
2020-02-14 04:04:07 -05:00
C. McEnroe
456713e561
Simplify transpose swap
2020-02-12 01:19:07 -05:00
C. McEnroe
14ae13f781
Add C-t transpose
...
Also in emacs, weechat.
2020-02-12 01:16:40 -05:00
C. McEnroe
0dd8ac36f4
Avoid VLAs in tab complete
2020-02-09 14:17:04 -05:00
C. McEnroe
02ca8e972b
Use iswspace for word movement
2020-02-09 07:32:35 -05:00
C. McEnroe
2aa2005339
Add C-y
...
This is weechat's binding for it.
2020-02-09 07:09:56 -05:00
C. McEnroe
5e637324c9
Add C-w and M-d
2020-02-09 04:32:32 -05:00
C. McEnroe
3cd830681e
Rename kill ops
2020-02-09 04:22:41 -05:00
C. McEnroe
b08c2d03ef
Add M-b and M-f
2020-02-09 04:20:07 -05:00
C. McEnroe
d7c96fc81b
Add C-k
...
Also rename all the edit ops to something consistent.
2020-02-09 03:58:13 -05:00
C. McEnroe
282de9af30
Add C-d
2020-02-09 03:45:44 -05:00
C. McEnroe
40e362f505
Hook up tab-complete
2020-02-09 02:33:53 -05:00
C. McEnroe
2d62ea9e30
Simplify edit buffer conversion and input rendering
2020-02-09 01:28:24 -05:00
C. McEnroe
fe5fd89705
Populate completion with commands
2020-02-07 21:39:56 -05:00
C. McEnroe
af244ad3cd
Add some real line editing operations
2020-02-07 01:56:23 -05:00
C. McEnroe
4cce893eab
Add extremely basic editing and message sending
2020-02-05 00:20:39 -05:00
C. McEnroe
0df8bd51aa
Convert editHead and editTail from wchar_t
2020-02-04 21:27:52 -05:00
C. McEnroe
9944dc484b
Split showing style codes and word wrapping
2020-02-04 20:23:55 -05:00