171 Commits

Author SHA1 Message Date
ailin-nemui
ad842ea8a6 reorder history add and fixes 2016-01-08 15:42:59 +01:00
ailin-nemui
38720e0ecb Merge pull request #306 from dequis/bracketed-paste
Implement paste detection via the bracketed paste mode 2: bracket pasterer
2015-12-15 00:06:48 +01:00
dequis
ce77842a98 Bracketed paste: fix nitpick from ahf's review
Thanks ahf
2015-12-13 13:56:09 -03:00
dequis
e6fa311590 Bracketed paste: Adjust paste line count if there's text after newlines
With bracketed paste, "a\nb" will result in two lines being pasted,
because it's a single thing, with an end marker which the timeout based
pastes don't have.

Due to the way term_gets() counts lines, that input will have
paste_line_count == 1. This can be misleading.

This code adjusts it by looking at the last character, and increasing
the count if it finds anything that isn't a newline.
2015-12-12 01:49:32 -03:00
dequis
38d372eccb Disable timeout-based paste detection if paste_use_bracketed_mode is on 2015-12-12 01:19:36 -03:00
LemonBoy
50fae4212e Use 'isblank()' instead of a custom macro 2015-11-22 21:33:44 +01:00
Fabian Kurz
011eda7d9e Correct a wrong use of the 'paste_buffer' variable
The function "static void paste_buffer_join_lines(GArray *buf)" in
"src/fe-text/gui-readline.c" is supposed to join lines from the GArray
pointed to by *buf under certain circumstances.

In the code of the function "buf" is actually used for getting the length
of the GArray, but to get a pointer to the data, "paste_buffer->data" is
used; paste_buffer is defined in the scope of the whole file.

This delivers the desired result, because this function is only called
once, with "paste_buffer" as the argument. If paste_buffer_join_lines()
will ever be used with a different argument, it will fail.
2015-11-22 21:24:05 +01:00
dequis
8c98e07eab Merge remote-tracking branch 'origin/master' into bracketed-paste 2015-11-08 14:28:18 -03:00
dequis
58a166484a Add xterm's keypad enter, meta-O-M to "key return" bindings
From the 'kent' terminfo entry. Also applies to putty.

Fixes #327
2015-10-06 06:15:47 -03:00
dequis
7866d2bcd6 Handle empty bracketed pastes (or sequences of those)
Both cases were off-by-one mistakes erring on the side of being too
conservative. This fixes these two harmless issues:

- For a single empty paste, it required another keystroke before
  processing it
- For a sequence of themcase, a single '~' was left in the input
2015-09-27 16:08:07 -03:00
dequis
c721d57688 Handle a paste start marker right after an end one (ignore both)
This actually workarounds a bug with the "st" terminal, for which i've
already submitted a patch, but irssi needs to be able to handle it
decently too.
2015-09-27 16:08:07 -03:00
dequis
7d062a313a Create paste_bracketed_middle() function to handle small pastes
"Small" as in ending in the same sig_input() call where they started
2015-09-27 16:08:07 -03:00
dequis
83f9772e21 Fix some minor style issues 2015-09-27 16:08:07 -03:00
dequis
79987d87f3 Send last line of bracketed paste together with the rest 2015-09-27 16:08:07 -03:00
dequis
3b01198f03 paste_bracketed_end: Fix rest length calculation 2015-09-27 16:08:07 -03:00
dequis
52729ca3da Save the part of the paste buffer after the bp_end marker for later
Also move relevant code to a paste_bracketed_end() function
2015-09-27 16:08:07 -03:00
dequis
9a6b2dedcc Improve bracketed paste start/end detection
- Use a keybinding to detect the start of a bracketed paste
- Iterate over the paste buffer looking for the end marker
2015-09-27 16:08:07 -03:00
LemonBoy
6888fc5fc7 Get rid of the non-portable memmem
The sequences we're after are found at the beginning or at the end of the
buffer, there's no need to scan the whole thing.
2015-09-27 16:08:06 -03:00
LemonBoy
4764b102ff Enable the bracketed paste mode on demand 2015-09-27 16:08:06 -03:00
LemonBoy
15dad291c7 Replace some hairy logic with g_array_remove_range
In the hope it'll do the same under the hood.
2015-09-27 16:08:06 -03:00
LemonBoy
f1eead7b4a Toggles 2015-09-27 16:08:06 -03:00
LemonBoy
72ac27e5a0 Implement the bracketed paste mode
As an alternative method of paste detection, more reliable but might not be
supported by all the VTs.
2015-09-27 16:08:06 -03:00
dequis
f39723f651 Fix FS#905, mangled text when pasted line length exceeds 400
http://bugs.irssi.org/index.php?do=details&task_id=905

Not using the patch from that ticket, the issue turned out to be that
(dest - last_lf_pos) returned number of unichr, not bytes, so that's 4
times less than what the size parameter of memmove() should be.
2015-09-21 17:53:46 -03:00
dequis
f14199d9c1 Change all strcmp() to g_strcmp0() to handle nulls gracefully
Just a string replacement (but i did check every one of them)

    sed -i 's/strcmp(/g_strcmp0(/g' **/*.c
2015-04-07 22:41:05 -03:00
Ailin Nemui
09f23d06b5 Modify escape of ^ key so it can be used as well as Ctrl+^
Fixes FS#721

This makes Ctrl+^ and ^ bindable again as different keys. We do this
by escaping single `^` as `^-`, which is not a valid control character
(unlike `^^`)

The original approach suggested in FS#721 is insufficient, it will
break bindings such as `meta-^` because Irssi is convinced that `^`
introduces a Control-key ("key combo") so it is waiting for what may
follow.
2014-07-28 13:58:13 +02:00
Alexander Færøy
3eea03ccb8 Irssi now detects a paste if it reads at least three bytes in a single read;
subsequent reads are associated to the same paste if they happen before
'paste_detect_time' time since the last read. If no read occurs after
'paste_detect_time' time the paste buffer is flushed; if there is at least one
complete line its content is sent as a paste, otherwise it is processed
normally.

Thanks to Emanuele Giaquinta.



git-svn-id: file:///var/www/svn.irssi.org/SVN/irssi/trunk@5121 dbcabf3a-b0e7-0310-adc4-f8d773084564
2010-02-27 14:57:16 +00:00
Jilles Tjoelker
38306ad488 Allow ctrl+home/ctrl+end to go to the beginning/end of scrollback.
git-svn-id: file:///var/www/svn.irssi.org/SVN/irssi/trunk@5075 dbcabf3a-b0e7-0310-adc4-f8d773084564
2009-05-22 12:48:02 +00:00
Emanuele Giaquinta
ba002bbc13 Revert r4912.
git-svn-id: file:///var/www/svn.irssi.org/SVN/irssi/trunk@4916 dbcabf3a-b0e7-0310-adc4-f8d773084564
2008-11-18 09:21:36 +00:00
Emanuele Giaquinta
ca5f4ec1f9 Simplify sending of the first pasted line.
git-svn-id: file:///var/www/svn.irssi.org/SVN/irssi/trunk@4912 dbcabf3a-b0e7-0310-adc4-f8d773084564
2008-11-16 09:19:27 +00:00
Emanuele Giaquinta
7b529aa530 Remove get_utf8_char/utf16_char_to_utf8 in favour of glib
g_utf8_get_char_validated/g_unichar_to_utf8.


git-svn-id: file:///var/www/svn.irssi.org/SVN/irssi/trunk@4893 dbcabf3a-b0e7-0310-adc4-f8d773084564
2008-11-10 11:59:31 +00:00
Wouter Coekaerts
f9376ec8e7 Improve descriptions of key bind items
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4834 dbcabf3a-b0e7-0310-adc4-f8d773084564
2008-05-18 20:49:20 +00:00
Emanuele Giaquinta
548e5115bb Add 'word_completion_backward' command to scroll backwards in the completion
list, bug #313.


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4830 dbcabf3a-b0e7-0310-adc4-f8d773084564
2008-05-17 13:12:21 +00:00
Emanuele Giaquinta
cad6fb2e19 Refactor code to create a watcher for an fd into a function.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4813 dbcabf3a-b0e7-0310-adc4-f8d773084564
2008-04-25 08:42:47 +00:00
Emanuele Giaquinta
e361d2f498 Remove the need to buffer input by moving the 'gui key pressed' events
generation into term_gets.


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4805 dbcabf3a-b0e7-0310-adc4-f8d773084564
2008-04-16 21:14:05 +00:00
Emanuele Giaquinta
e1713c17cb After last change paste_entry includes the key before the one
that begins the pasting, so do not add the same key to paste_buffer,
otherwise it will show up twice.


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4760 dbcabf3a-b0e7-0310-adc4-f8d773084564
2008-03-12 09:59:35 +00:00
Emanuele Giaquinta
a3526caf41 Make a copy of the entry buffer only when a paste begins rather than
everytime a key is pressed.


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4747 dbcabf3a-b0e7-0310-adc4-f8d773084564
2008-03-10 09:48:02 +00:00
Emanuele Giaquinta
02a10e4f9c Do not buffer keys when waiting for paste confirmation.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4746 dbcabf3a-b0e7-0310-adc4-f8d773084564
2008-03-09 23:57:28 +00:00
Emanuele Giaquinta
37381fe1bc Simplify history handling in key_send_line.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4745 dbcabf3a-b0e7-0310-adc4-f8d773084564
2008-03-09 23:03:45 +00:00
Emanuele Giaquinta
c403b70de4 Remove broken by design /set translation.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4698 dbcabf3a-b0e7-0310-adc4-f8d773084564
2008-02-02 18:36:57 +00:00
Emanuele Giaquinta
3edcc7a611 Reindent.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4675 dbcabf3a-b0e7-0310-adc4-f8d773084564
2008-01-21 15:44:05 +00:00
Emanuele Giaquinta
b9a26388b5 Simplify.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4674 dbcabf3a-b0e7-0310-adc4-f8d773084564
2008-01-21 15:41:12 +00:00
Emanuele Giaquinta
7b08caa814 Remove unneeded resets of paste_keycount (check_pasting will reset it
at the next call).


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4670 dbcabf3a-b0e7-0310-adc4-f8d773084564
2008-01-21 11:06:46 +00:00
Emanuele Giaquinta
f7856f2071 Move code to insert paste prompt into its own function.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4669 dbcabf3a-b0e7-0310-adc4-f8d773084564
2008-01-21 10:50:50 +00:00
Jilles Tjoelker
c5b4e72382 Make alt/meta+arrow keys work in recent versions of xterm.
Bug #496


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4603 dbcabf3a-b0e7-0310-adc4-f8d773084564
2007-08-24 17:13:21 +00:00
Emanuele Giaquinta
8a9da9cf2d Add function to delete the whole cell under the cursor and use it for
delete_character.


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4521 dbcabf3a-b0e7-0310-adc4-f8d773084564
2007-05-25 22:21:39 +00:00
Wouter Coekaerts
9c2d621cc6 Oops. Update address correctly now.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4490 dbcabf3a-b0e7-0310-adc4-f8d773084564
2007-05-08 18:41:10 +00:00
Wouter Coekaerts
023026e12b Update FSF address
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4489 dbcabf3a-b0e7-0310-adc4-f8d773084564
2007-05-08 18:16:58 +00:00
Emanuele Giaquinta
83c178c169 Increment paste_keycount when the key before the one that starts a
possible pasting is not a '\r' or '\n'.


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4467 dbcabf3a-b0e7-0310-adc4-f8d773084564
2007-04-28 11:45:34 +00:00
Emanuele Giaquinta
39d15501c8 Ignore empty lines when pasting.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4466 dbcabf3a-b0e7-0310-adc4-f8d773084564
2007-04-28 10:55:57 +00:00
Emanuele Giaquinta
2f86e39e84 When sending a line as non-pasted reset also paste_entry, bug #405.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4465 dbcabf3a-b0e7-0310-adc4-f8d773084564
2007-04-28 10:52:11 +00:00