Commit Graph

217 Commits

Author SHA1 Message Date
Maxime Coste
91bfd714e4 Place hardware terminal cursor at the current main cursor/prompt cursor position
Fixes #1318
Also fixes https://gitlab.com/gnachman/iterm2/issues/5408
2017-04-12 10:39:17 +01:00
Maxime Coste
94145f2a89 ncurses: When hiding the menu, recompute the info position 2017-04-04 08:36:21 +01:00
Frank LENORMAND
2aa5d3b016 src: Align the assistant in the middle of the popup 2017-03-14 19:06:09 +03:00
Maxime Coste
564da076a6 Merge remote-tracking branch 'lenormf/assistant-dilbert' 2017-03-10 12:06:35 +00:00
Frank LENORMAND
59b65bb9fb ncurses: Add a Dilbert assistant
Drawn by myself.
2017-03-08 20:03:29 +03:00
Maxime Coste
6373338c50 Replace uses of UnorderedMap with HashMap 2017-03-07 01:03:26 +00:00
Maxime Coste
4f18e56320 Fix non-returning parse_key lambda 2017-02-13 14:02:09 +00:00
Maxime Coste
34870eb353 Rework NCurses key parsing to properly handle <a-special key> 2017-01-30 13:38:56 +00:00
Maxime Coste
37fbe6c6eb Treat <c-h> as backspace in ncurses ui
Fixes #1030
2017-01-10 13:35:10 +00:00
Maxime Coste
dcd8f6ef01 Apply clang-tidy modernize to the codebase 2017-01-08 22:39:01 +00:00
Maxime Coste
b3674a2f03 Add Modal InfoStyle used for bufer reload info box
Modal info style wont be replaced by other info boxes.
NCursesUI will center that info box.

Fixes #1060
2017-01-04 11:39:51 +00:00
Maxime Coste
76c58aa022 Dont use constexpr to fix OSX compilation 2016-12-30 13:29:57 +00:00
Maxime Coste
190a04d6c8 Add a ncurses_change_colors option that can disable color palette change
Closes #1057
2016-12-30 07:01:13 +00:00
Maxime Coste
7defdd3039 Make FDWatcher support Read, Write and Except events, instead of just Read 2016-12-01 19:44:07 +00:00
Maxime Coste
3a81260917 Simplify greatly UI input handling
This round trip through an input callback expected to call
is_key_available and get_key was overcomplicated, just send the
keys as they arrive, the client is already buffering due to urgent
event mode.
2016-11-29 21:59:36 +00:00
Maxime Coste
d15cc02c01 Remove some unneeded headers from ncurses_ui.cc 2016-11-22 09:49:55 +00:00
Maxime Coste
c2989704d5 More correct handling of SIGHUP while suspended
Fixes #833
2016-11-14 00:49:34 +00:00
Maxime Coste
6889494869 Emit an OSC 104 on quit to reset color palette on supporting terminals
xterm and vte based terminals support it, unfortunately rxvt-unicode
does not yet.

Fixes #914
2016-11-05 11:43:25 +00:00
Maxime Coste
e8dcdb6072 Support Ctrl + mouse dragging to add a new selection
Fixes #838
2016-10-13 22:59:02 +01:00
Maxime Coste
f81b8c137b Replace non ascii chars with ? in xterm title, and limit to 511 chars
Closes #839
2016-10-04 20:13:15 +01:00
Maxime Coste
35559b65dd Support codepoints of variable width
Add a ColumnCount type and use it in place of CharCount whenever
more appropriate, take column size of codepoints into account for
vertical movements and docstring wrapping.

Fixes #811
2016-10-01 13:45:00 +01:00
Maxime Coste
439f168928 Use named keys for Return and Tab instead of <c-m> and <c-i>
Fixes #722
2016-07-05 20:08:13 +01:00
Maxime Coste
e07ff0c669 Use tparm instead of tiparm as built in OSX ncurses does not support it 2016-06-27 20:59:02 +01:00
Maxime Coste
b77eff1b72 Fix parameter order in fputs 2016-06-21 00:47:46 +01:00
Maxime Coste
2edea2e0f6 Use fputs and fflush in ncurses_ui direct stdout access to respect buffering
Ncurses will write using the FILE* interface, using the fd based one is error
prone.

Fixes #703
2016-06-20 23:43:21 +01:00
Maxime Coste
f51ba6089c Use variadic macros for kak_assert to remove the need for COMMA 2016-05-17 19:39:55 +01:00
Maxime Coste
a2d426abba Use padding face on the whole line 2016-04-11 21:12:27 +01:00
Maxime Coste
064e965500 Remove padding control options from ncurses ui 2016-04-11 13:54:47 +01:00
Maxime Coste
815924e4da Merge remote-tracking branch 'lenormf/buffer-padding' 2016-04-11 13:44:10 +01:00
Maxime Coste
b02883a112 Remove forced redraw in ncurses ui 2016-03-24 13:19:36 +00:00
Maxime Coste
517abf5e74 Redisplay info when menu appears so that info adapts its position 2016-03-09 23:28:23 +00:00
Maxime Coste
f1fb2114da Handle <c-l> redrawing on the server side
That way we can force a redraw at any moment, including during
batch execution.
2016-03-07 21:44:50 +00:00
Maxime Coste
f0edf40543 Slight refactor in ncurses_ui, group info and menu data in structs 2016-02-27 17:22:31 +00:00
Frank LENORMAND
e74878c299 Cleanup/fix some code 2016-02-17 16:09:34 +02:00
Frank LENORMAND
f408cf7ed3 Allow users to chose how the buffers are padded 2016-02-17 15:48:09 +02:00
Maxime Coste
032219b119 Rename set_signal_wrapper to set_signal_handler and tweak SignalHandler def 2016-01-10 20:46:15 +00:00
Daniel Robertson
f5f7bc80e8 Add a signal function using sigaction
Use a wrapper for sigaction in place of signal to ensure that the
SA_RESTART flag is set for all signals used.

Signed-off-by: Daniel Robertson <danlrobertson89@gmail.com>
2015-12-23 14:03:31 -05:00
Maxime Coste
39fffec104 Improve info box placement behaviour in some corner cases 2015-12-05 10:51:46 +00:00
Maxime Coste
9a6347d6aa Another try to fix csr problems (#469) 2015-12-02 01:12:24 +00:00
Maxime Coste
e91da2bd43 Try to just reset the scroll region to workaround #469 2015-11-30 13:35:15 +00:00
Maxime Coste
a81dbd90a1 Consolidate writing to fd 2015-11-27 13:50:40 +00:00
Maxime Coste
788c358720 Fix some cases where menu items are truncated needlessly 2015-11-19 20:23:27 +00:00
Maxime Coste
8d47cf0674 Fix correctly ncurses menu size computations and avoid divide by 0 2015-11-18 20:12:16 +00:00
Maxime Coste
6bd71c68e5 NCurses: Fix max menu item width computation 2015-11-17 23:34:03 +00:00
Maxime Coste
05f7337eb0 Change ncurses wheel down default button to 5 2015-11-05 13:28:58 +00:00
Maxime Coste
49557f5b17 Restore info box after a resize as well
Fixes #425
2015-10-13 13:58:39 +01:00
Maxime Coste
9f78f9bfd5 Try to restore menu after a resize 2015-10-13 13:52:02 +01:00
Maxime Coste
e5240ba4ff Fix NCursesUI::m_items not being empty after a resize
Fixes #435
2015-10-13 13:40:04 +01:00
Maxime Coste
256e4d7862 NCursesUI: Remove color restoring support 2015-10-09 13:43:13 +01:00
Maxime Coste
0d8b9c6677 Tweak handling of SIGINT 2015-10-08 20:23:32 +01:00
Maxime Coste
473196e18d Store color/color pairs mapping in the ncurses ui instance 2015-10-08 20:23:32 +01:00
Maxime Coste
3098cd12f8 Check for terminal resize on SIGCONT
Fixes #423
2015-10-08 13:24:58 +01:00
Maxime Coste
5e4443812c Fix warning in ncurses_ui.cc 2015-10-06 21:15:13 +01:00
Maxime Coste
c54e6738b9 Use DisplayLine for menu choices 2015-10-05 01:25:23 +01:00
Maxime Coste
a6cd764042 Add ncurses_enable_mouse ui option 2015-10-02 13:52:41 +01:00
Maxime Coste
9fdb822c27 Add support for italic text attribute 2015-09-27 14:24:42 +01:00
Filip Szczepański
47e6eed7c9 Add Haiku support. 2015-09-24 22:36:29 +00:00
Maxime Coste
6ec693d598 Cleanup compute_needed_size implementation 2015-09-23 00:43:40 +01:00
Maxime Coste
eed3e5459d Cleanup ncurses string writing code 2015-09-23 00:40:09 +01:00
Maxime Coste
8529720aef Fix some redrawing problems after resize 2015-09-21 22:12:23 +01:00
Maxime Coste
96b6b1b647 Tweak NCursesUI behaviour to reduce flickering on resize 2015-09-19 11:30:17 +01:00
Maxime Coste
693d9a4861 Store key hash in IdMap 2015-09-16 20:02:12 +01:00
Maxime Coste
fd0567c730 Do not touch the first 16 colors in ncurses UI 2015-09-14 14:47:37 +01:00
Maxime Coste
a4804afa42 Restore redraw on <c-l> in ncurses ui 2015-09-14 14:30:01 +01:00
Maxime Coste
a2b4bf09fd Fix color restoring 2015-09-12 10:54:55 +01:00
Maxime Coste
ad2aa35546 Fix ncurses info box avoiding dead menus 2015-09-12 10:51:46 +01:00
Maxime Coste
5173dad470 Add some missing memory domains 2015-09-12 10:51:16 +01:00
Maxime Coste
8aca7622bf Restore keypad support in ncurses ui 2015-09-11 13:54:37 +01:00
Maxime Coste
afbe2f10d5 Slight refactor of NCursesUI ui_options handling 2015-09-11 13:20:37 +01:00
Maxime Coste
6292d451cf Small code cleanup in ncurses_ui.cc 2015-09-11 13:07:51 +01:00
Maxime Coste
5a5a78c608 Improve redraw behaviour on resize 2015-09-11 11:46:39 +01:00
Maxime Coste
34d0f63fd9 Use wgetch rather than getch to avoid unwanted redraws 2015-09-11 00:05:31 +01:00
Maxime Coste
80726a789b Refactor NCursesUI implementation, use pads instead of windows 2015-09-10 23:39:19 +01:00
Maxime Coste
a685a928f7 Try to restore colors to hard coded xterm palette on ncurses quit
Fixes #327
2015-09-10 23:38:05 +01:00
Maxime Coste
fede8da14b Delete all existig window before resizing 2015-09-07 23:52:34 +01:00
Maxime Coste
29b508a894 Avoid wrapping lines with negative max width 2015-09-07 23:29:01 +01:00
Maxime Coste
53b65401f8 Small info box handling in cleanup in ncurses 2015-09-07 23:15:21 +01:00
Maxime Coste
ea7f76f7f2 Change ncurses title logic, use hard coded \033]2;<title>\007 sequence
And add a ncurses_set_title ui option defaulting to true.
2015-09-03 00:03:07 +01:00
Maxime Coste
0755366cb1 Rework resize handling
Fixes #383
2015-08-23 15:18:18 +01:00
Maxime Coste
043ca99983 Cleanup mouse handling a little 2015-08-16 14:06:07 +01:00
Maxime Coste
10f4bb5872 Add support for FocusIn/FocusOut events from UI 2015-07-15 13:56:31 +01:00
Maxime Coste
eedf7d6c68 Fix mouse coordinates in ncurses ui with status on top 2015-07-03 18:44:25 +01:00
Maxime Coste
670d8f7d1e Use tparm instead of tiparm 2015-06-30 13:35:51 +01:00
Maxime Coste
eb4ac85fb1 Force setting of terminal hardware scroll region on resize
It seems there is a race condition with VTE based terminals when
created and resized almost immediatly (like when doing :new) where
we end up with the hardware scroll region set to the old terminal
size.
2015-06-30 09:08:44 +01:00
Maxime Coste
130b22ff74 Refactor resize handling in NCursesUI 2015-06-30 00:31:26 +01:00
Maxime Coste
3fe8446065 Use StatusLine face as default for the status line 2015-06-29 22:48:26 +01:00
Maxime Coste
7c22ff217d Improve ncurses redraw behaviour 2015-06-21 19:51:14 +01:00
Maxime Coste
bf46870ff2 Move status/mode line drawing as a separate ui method 2015-06-17 21:28:02 +01:00
Maxime Coste
9668dccea9 Add support for Default face
The Default face is used to set default color values, if set
to default (the default), refers to terminal default colors.
2015-06-04 13:49:28 +01:00
Maxime Coste
30bec11010 Fix bug in ncurses mouse handling 2015-05-11 19:11:02 +01:00
Maxime Coste
c94b30903d Fix dangling info window pointer in ncurses ui 2015-05-07 00:34:30 +01:00
Maxime Coste
d7159a9af0 Add str_to_int_ifp that returns an Optional<int> instead of throwing 2015-05-01 18:47:22 +01:00
Maxime Coste
202d4766c2 Do not display info box when there is not enough room on screen for it
Fixes #159
2015-04-30 13:45:05 +01:00
Maxime Coste
e4880ad91a Use unicode elipsis to mark trimmed mode line 2015-04-28 21:03:37 +01:00
Maxime Coste
bbefde9379 Move Colors enum class as NamedColor enum inside Color struct 2015-04-25 10:47:39 +01:00
Maxime Coste
840e58e0b1 NCurses: When mode line is too long, trim it rather hiding it 2015-04-23 21:11:50 +01:00
Maxime Coste
80fb8aa60d Use puts instead of printf in ncurses_ui 2015-04-22 22:03:01 +01:00
Maxime Coste
87b385b956 Use default values for ncurses options when not specified 2015-04-06 20:05:49 +01:00
Maxime Coste
b7144fff6c Make ncurses wheel scroll button configurable 2015-04-06 18:43:27 +01:00
Maxime Coste
7176685690 Avoid zstr call in ncurses addutf8str 2015-04-03 13:10:46 +01:00
Maxime Coste
e0757e7ba9 Flip the cat assistant 2015-03-25 13:53:13 +00:00
Maxime Coste
323b0359c7 Add support for mouse wheel 2015-03-22 12:17:01 +00:00
Maxime Coste
5eaf472fc0 Experimental support for mouse 2015-03-22 11:41:20 +00:00
Maxime Coste
3c1a325b6f Refactor String, use a common StringOps interface, hide std::string 2015-03-10 19:50:22 +00:00
Maxime Coste
1cec8df45e ArrayView content is not const anymore
As in upcoming std c++ array_view, ArrayView<T> points to mutable
data, use ArrayView<const T> or alias ConstArrayView<T> for const
data.
2015-03-09 13:54:09 +00:00
Maxime Coste
790e671f6c Replace some <cstring> function usage with c++ algorithms 2015-02-10 23:09:30 +00:00
Maxime Coste
ec1d5509bb Refactor ncurses assistant option handling
The option is now ncurses_assistant, defaults to clippy, none
and off a recognized to disable assistant.
2015-02-09 13:33:54 +00:00
robin moussu
0a5a37c1f2 add `assistant=cat|trombon' option
Move ascii art of assistant of top of file.

`assistant' has been renamed to `s_assistant' because it become a static
variable. It was because it `assistant()' was used in `set_ui_options' and
`make_info_box()'
2015-02-08 11:53:41 +01:00
robin moussu
239bb2dd33 Add a cat assistant! 2015-02-08 11:53:41 +01:00
Maxime Coste
da562e03a0 replace all std::vector with Vector 2015-01-12 13:58:41 +00:00
Maxime Coste
9f9156a752 Track String memory allocations 2015-01-09 13:57:21 +00:00
Maxime Coste
295a97f2a6 Rename memoryview to ArrayView 2015-01-06 13:43:37 +00:00
Maxime Coste
b6ff15aa75 Unify completion from container content logic 2014-12-23 13:54:09 +00:00
Maxime Coste
064fb81b8d Move containers utils to containers.hh and add filtered/transformed utils 2014-12-23 13:40:26 +00:00
Maxime Coste
ebecd60eb8 Rework hashing, use a more extensible framework similar to n3876 proposal
std::hash specialization is a pain to work with, stop using that, and
just specialize a 'size_t hash_value(const T&)' free function.
2014-12-16 18:57:19 +00:00
Maxime Coste
72bdb8faa9 Always use plain ncurses.h 2014-12-14 23:42:00 +00:00
Maxime Coste
0a57fa0766 Rename ncurses.{cc,hh} to ncurses_ui.{cc,hh} 2014-12-09 13:57:21 +00:00