1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-30 06:46:38 +02:00
Commit Graph

930 Commits

Author SHA1 Message Date
Sébastien Helleu 6415c09a07 core: add quotes around paths in CMake files (closes #29) 2023-05-13 11:59:18 +02:00
Sébastien Helleu b8f9b83500 core: add options weechat.color.chat_status_disabled and weechat.color.chat_status_enabled (issue #1820) 2023-05-01 20:12:56 +02:00
Sébastien Helleu e8c48c0a1f core: always allow 256 colors, find nearest color if less colors are available in terminal (issue #1920) 2023-04-26 21:07:26 +02:00
Sébastien Helleu ff402fb6ec core: fix infinite loop on startup when running some gui commands before the switch to core buffer is performed (closes #1917) 2023-04-26 19:11:54 +02:00
Trygve Aaberge 8d430aa2eb core: fix display bug when drawing partially scrolled multiline
If you have a chat line with multiple lines that were scrolled so that
part of it is rendered at the bottom of the chat area, and part of it
falls below the chat area, there was a bug where the prefix_suffix would
be displayed at the end of the last line.

Looks like this happens because the gui_chat_display_prefix_suffix is
called for the line below the last line displayed in the chat area. So
we have to add a check for this so we don't add the prefix_suffix. This
check is copied from gui_chat_display_word which checks for the same.

Fixes #1912
2023-04-26 00:47:02 +02:00
Trygve Aaberge e51ffc1a6e core: add cursor key l to quote focused line
Fixes #1913
2023-04-25 00:11:30 +02:00
Sébastien Helleu 9f5e8efbe0 core: fix update of terminal title in some terminals like suckless terminal (stterm) (closes #1882) 2023-04-23 22:02:33 +02:00
Trygve Aaberge 031bd45e36 core: render newline characters in chat line messages
If a chat line message contains a newline character (\n) it was
previously rendered as J with reverse video. This commit makes it
render as an actual newline instead, so messages with multiple lines
become supported.

The rendering is fixed in normal mode as well as bare mode both when
scrolled to the bottom and when scrolled up (which is different code
paths). Focus events has also been updated to support this (except for
_chat_line_y which returns -1 for all lines, but the docs says this
variable is only for buffers with free content).

Currently, the only way to include a \n in a chat line message is with
hdata_update because printf splits on \n and creates multiple separate
lines, but hopefully either printf can be changed to not split on \n, or
a new command which doesn't split can be added.
2023-04-19 16:47:44 +02:00
Sébastien Helleu a508640fa0 core: add keys shift-left and shift-right with same commands as left and right (issue #1503) 2023-03-26 20:30:17 +02:00
Sébastien Helleu e6b1905679 core: revert keys meta-r (delete line) and meta-R (delete input) (issue #1503) 2023-03-26 20:30:12 +02:00
Trygve Aaberge 9ac30381fa core: Implement commands for operating on a single input line
This changes the commands delete_beginning_of_line, delete_end_of_line,
delete_line, move_beginning_of_line and move_end_of_line to operate on
the current line instead of the whole input. The commands
delete_beginning_of_input, delete_end_of_input, delete_input,
move_beginning_of_input and move_end_of_input are added with the
previous implementations that the line commands had.

Additionally, the commands move_previous_line and move_next_line are
added which moves the cursor to the previous/next line and keeps the
horizontal position in the line.

The meta-r key is changed from delete_line to delete_input to keep the
behavior, and because you probably want to delete the whole input more
often than the line. The meta-R key is added for delete_line.

The home, end, ctrl-u and ctrl-k keys are kept to the same commands,
which means that they change behaviour. This is because having them
operate on the line is consistent with other applications (vim, zsh),
and I also think it's more practical.

These new bindings are added:

    shift-home:  /input move_beginning_of_input
    shift-end:   /input move_end_of_input
    shift-up:    /input move_previous_line
    shift-down:  /input move_next_line
    meta-R:      /input delete_line
    meta-ctrl-u: /input delete_beginning_of_input
    meta-ctrl-k: /input delete_end_of_input

Relates to #1498
2023-03-26 15:52:19 +02:00
Sébastien Helleu b71b6a48a0 core: fix typo and code style 2023-03-25 18:59:06 +01:00
Trygve Aaberge 37decf3a7c core: Replace newline/tabs after paste is accepted
Instead of replacing newline/tabs when paste is started, do it when the
paste is accepted instead. This makes a difference if you paste again
while the paste confirmation is active, where instead of running it
again for each paste, it will now be run for all the text at the end.

For now this doesn't make a practical difference, but the next commit
will remove the final newline when multiple lines are pasted too, which
we only want to do for the final paste.
2023-03-25 18:53:12 +01:00
Trygve Aaberge 99f6f9e454 core: When pasting, insert text in input instead of interpreting keys
This makes pasted text appear in the input bar, instead of each line
being sent. This allows you to edit the text before sending it, and it
makes multiline paste supported in buffers with input_multiline on.

It also replaces \r with \n in pasted text because most terminals (e.g.
xterm and urxvt) print lines separated by \r when pasting as if return
was pressed between each line, even though the copied text uses \n. The
text sent to the buffer should use \n, not \r, so we have to replace it.

Note that this only works when bracketed paste is enabled or the paste
confirmation as shown, because non-bracketed paste with no paste
confirmation is not detected as a paste.

Fixes a part of #1498
2023-03-25 18:53:12 +01:00
Trygve Aaberge cfaf68ae61 core: Parse bracketed paste also when paste pending
When in paste pending mode, the bracketed paste escape sequence should
still be interpreted, so that if you paste while in paste pending the
same things as when pasting in normal mode still happens, i.e. the
escape sequence is removed, ctrl-y/n is not interpreted and newline/tabs
are replaced.
2023-03-25 18:53:12 +01:00
Sébastien Helleu 99ca276556 core: also display mouse codes with /debug key 2023-03-17 22:49:50 +01:00
Sébastien Helleu 64a553f91f core: change order of modifiers in mouse keys
Now the modifiers for mouse keys are in the same order as other keys: `alt-`
then `ctrl-`.
2023-03-17 19:18:30 +01:00
Sébastien Helleu 3640d187b8 core: split gui-curses.h into multiple headers 2023-03-17 18:52:30 +01:00
Sébastien Helleu fe6b69c41c core: set insert_ok to 0 for backspace key 2023-03-17 18:52:30 +01:00
Sébastien Helleu ccc649d06c core: create config options for all keys that can be managed with /set and /fset commands 2023-03-16 20:42:19 +01:00
Sébastien Helleu 5b5c9afa29 core: add key alt-K (alt+shift+k) to grab raw key and its command 2023-03-16 20:42:19 +01:00
Sébastien Helleu 1f5c791c37 core: use new key name in command /key and configuration file
Legacy keys are automatically converted to new names when loading configuration
file `weechat.conf`.

Examples:

  "ctrl-I" => "tab"
  "meta2-1;3A" => "meta-up"
  "meta2-Z" => "shift-tab"
  "meta-wmeta-meta2-A" => "meta-w,meta-up"
  "ctrl-Cb" => "ctrl-c,b"
2023-03-16 20:42:19 +01:00
Sébastien Helleu 68a5a71b55 core: remove extra spaces before comma 2023-02-02 22:01:46 +01:00
Sébastien Helleu fd746a04d6 core: force ctrl keys to lower case when they are added (closes #1875) 2023-01-29 12:41:28 +01:00
Sébastien Helleu c68c2aaa94 core: ensure internal_code is not NULL when adding a default key (issue #1875) 2023-01-29 12:41:26 +01:00
Sébastien Helleu fbeab26a35 core, plugins: replace calls to string_str(n)cmp by str(n)cmp (issue #1872) 2023-01-28 15:14:24 +01:00
Sébastien Helleu c07cf691ad core, plugins: check that string parameters are not NULL in search functions (issue #1872) 2023-01-28 15:14:22 +01:00
Sébastien Helleu 7a8ce6c9ae core: make color names and attributes case sensitive (issue #1872) 2023-01-28 15:14:08 +01:00
Sébastien Helleu 73c3c03915 core, plugins: make input actions in buffers case sensitive (issue #1872) 2023-01-28 15:14:07 +01:00
Sébastien Helleu 754ab33946 core: remove build with autotools
CMake is now the only way to build WeeChat.
2023-01-08 14:19:41 +01:00
Sébastien Helleu 33bba784c3 core: update copyright dates 2023-01-01 14:54:35 +01:00
Sébastien Helleu 73bac5491b core: move function gui_input_move_to_buffer to gui-buffer.c 2022-12-31 10:40:00 +01:00
Sébastien Helleu fce2fcba4f core: add option weechat.look.chat_space_right (issue #1862) 2022-12-29 12:00:28 +01:00
Sébastien Helleu 41fd26fe79 core: move /input buffer switch/zoom actions to command /buffer
Actions moved:

* `/input switch_active_buffer` -> `/buffer switch`
* `/input switch_active_buffer_previous` -> `/buffer switch -previous`
* `/input zoom_merged_buffer` -> `/buffer zoom`
2022-12-25 22:47:18 +01:00
Sébastien Helleu 0c29d4c5b6 core: move /input set_unread actions to commands /allbuf and /buffer set
Actions moved:

* `/input set_unread` -> `/allbuf /buffer set unread`
* `/input set_unread_current_buffer` -> `/buffer set unread`
2022-12-25 21:44:27 +01:00
Sébastien Helleu babe1e7a42 core: move /input hotlist actions to new command /hotlist
Actions moved to command `/hotlist`:

* `/input hotlist_clear` -> `/hotlist clear`
* `/input hotlist_remove_buffer` -> `/hotlist remove`
* `/input hotlist_restore_buffer` -> `/hotlist restore`
* `/input hotlist_restore_all` -> `/hotlist restore -all`
2022-12-25 18:50:57 +01:00
Sébastien Helleu c9796a3141 core: move /input jump actions to command /buffer jump
Actions moved to command `/buffer jump`:

* `/input jump_smart` -> `/buffer jump smart`
* `/input jump_previously_visited_buffer` -> `/buffer jump prev_visited`
* `/input jump_next_visited_buffer` -> `/buffer jump next_visited`
* `/input jump_last_buffer_displayed` -> `/buffer jump last_displayed`
2022-12-25 17:00:37 +01:00
Sébastien Helleu 42113ebc0f core: return directly output of string_dyn_free without temporary variable 2022-12-19 07:04:33 +01:00
Sébastien Helleu dd9ae79204 core: remove unused argument "pos" from function gui_input_insert_string, add tests on function 2022-12-18 14:13:14 +01:00
Sébastien Helleu 5b9b1e175b core: add color attributes "blink" and "dim" (half bright) (closes #1855) 2022-12-10 16:37:03 +01:00
Sébastien Helleu f1cfd6f73f core: do not display non printable chars, fix function utf8_char_size_screen
Now the function utf8_char_size_screen can return -1 when the char is not
printable.

It has a specific behavior for some chars:

- U+0009: value of option weechat.look.tab_width
- U+0001 to U+001F (except U+0009): 1
- U+00AD (soft hyphen): -1
- U+200B (zero width space): -1
2022-12-10 16:05:14 +01:00
Sébastien Helleu d18f68e497 core: display chars < 32 with a letter/symbol and reverse video attribute in chat 2022-12-10 16:05:14 +01:00
Sébastien Helleu 6ac730cd0b core: toggle reverse video attribute in bars for chars < 32 only if not already enabled 2022-12-10 16:05:14 +01:00
Sébastien Helleu f63dba67f2 core: expand tabulations as spaces in bars 2022-12-10 16:05:14 +01:00
Sébastien Helleu 855d80702e core: replace call to memcpy by utf8_strncpy 2022-12-10 16:05:14 +01:00
Latchezar Tzvetkoff 8765eb3b71 Allow terminal title to be left unchanged.
Fixes #1835.
2022-10-14 22:42:21 +02:00
Sébastien Helleu 1fec7e8856 core: fix page scroll in bare display (closes #1830) 2022-10-05 20:33:35 +02:00
Sébastien Helleu 26e6fdc645 api: add function file_compress 2022-09-27 20:49:12 +02:00
Sébastien Helleu 01cf98e8fb core: add key alt+backspace, change behavior of key ctrl+w (closes #559)
The key ctrl+w now deletes one word until whitespace.

The new key alt+backspace deletes one word (same behavior as ctrl+w in previous
releases).
2022-09-18 23:26:49 +02:00
Sébastien Helleu 36d2e7427e core: fix wrong terminal title on terminal resize (closes #1702) 2022-09-17 11:56:03 +02:00