Maxime Coste
878a7fbb90
Fix window_range expansion
...
It relied on the buffer first char being visible, and could trigger
segfaults when that was not the case.
2019-12-16 14:09:20 +11:00
Maxime Coste
efabe28173
Fix WinResize hook getting triggered during urgent event processing
...
WinResize hooks could be triggered during shell evaluation, leading
to any state potentially getting mutated after a shell evaluation
call.
2019-12-16 14:07:22 +11:00
Maxime Coste
8135a44c6c
Run WinClose hook before putting the window into trash
2019-02-17 11:21:26 +11:00
Maxime Coste
dfc11d1c43
Refactor Hook management to have a well defined list of hooks
...
Hooks are now an enum class instead of passing strings around.
2018-10-23 08:15:53 +11:00
Maxime Coste
226db75aeb
Change Search completion to display on top of the modeline
2018-06-19 21:02:24 +10:00
Maxime Coste
0bdde991ea
Remove unneeded Window::m_range post refactoring
2018-06-12 06:48:48 +10:00
Maxime Coste
539832bf29
Add position offset to Window to limit moves with search menu style
...
Window can be resized with an "offset_pos" flag, which means that
the resize took place on the top left corner of the window, leading
to a change in current window position. This is treated as temporary
and the position change is stored in a m_position_offset field.
That allows the ncurses UI to offset the position when it displays
a Search menu, so that the window does not constantly scroll when
the search menu open/closes. The window will only scroll if it needs
to in order to keep the main selectin visible.
2018-06-11 15:10:30 +10:00
Maxime Coste
327d8ad759
Mark Client, Window, Buffer and OptionManager as final
...
Avoids warning about non virtual destructor calls on them,
as they have a vtable due to OptionManagerWatcher.
2018-05-09 23:01:40 +10:00
Maxime Coste
d846400279
Redraw window when the face definition changed
...
Hash the current face state and store that hash to check for changes.
2018-04-10 20:35:23 +10:00
Maxime Coste
3c03129c46
Make compute_display_setup methods const
2018-04-06 09:16:59 +10:00
Maxime Coste
d49555fc75
Move highlighters into Scopes
...
That means we can now have highlighters active at global, buffer, and
window scope. The add-highlighter and remove-highlighter syntax changed
to take the parent path (scope/group/...) as a mandatory argument,
superseeding the previous -group switch.
2017-10-28 13:43:04 +08:00
Maxime Coste
42f03fb71f
Hide info/menu when they are anchored to an invisible buffer coord
...
Fixes #1444
2017-06-16 10:19:08 +01:00
Maxime Coste
d86a612774
Fix wrapping support
2017-06-09 16:00:22 +01:00
Maxime Coste
bc11e52960
Remove virtual destructor from OptionManagerWatcher
...
We should never destruct anything through an OptionManagerWatcher
pointer, so having all those destructor virtual makes no sense.
2017-05-22 10:31:56 +01:00
Maxime Coste
4e9193a975
Slight highlighting related code cleanup
2017-05-07 16:26:14 +01:00
Maxime Coste
39826afde5
Make scrolling around work more correctly with wrapping
2017-05-07 16:26:14 +01:00
Maxime Coste
bd3ba77e96
Make Wrap highlighter only wrap on window width.
2017-05-07 16:26:14 +01:00
Maxime Coste
57c2b32d20
Introduce highlighting phases and display setup computation
...
Highlighters now run in 3 phases:
Wrap, Move, and Colorize. That way we guarantee the wrap
highlighter runs first, then eventual line numbers/flags,
and finally the colorizers.
We also run a `compute_display_setup` method thats responsible
for computing the lines that will be displayed, eventually
scrolling the view to ensure the cursor is visible.
2017-05-07 16:26:14 +01:00
Maxime Coste
93408e4b76
Do not use any display information to determine where the cursor moves
2017-05-07 16:26:14 +01:00
Maxime Coste
dcd8f6ef01
Apply clang-tidy modernize to the codebase
2017-01-08 22:39:01 +00:00
Maxime Coste
2f3a7112ea
Add more memory domains to certain data
2016-11-28 13:59:55 +00:00
Maxime Coste
e340e0ed39
Forward client name to contexts created for write-all
...
Fixes #937
2016-11-24 13:35:42 +00: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
d3aff03062
Keep a pointer to current client in windows so that window hooks can access it
2016-05-09 13:48:48 +01:00
Maxime Coste
dc3c7d593c
Do not use a hash to determine if a window must be redrawn
...
Collision happens
Fixes #569
2016-02-03 09:51:56 +00:00
Maxime Coste
c8d2417646
Support horizontal centering in view commands (using m)
...
Fixes #442
2015-11-02 19:51:59 +00:00
Maxime Coste
7e6b02f26a
Refactor slightly window redrawing
2015-06-22 13:34:22 +01:00
Maxime Coste
3834440298
Rework window redraw handling, should redraw window less often
2015-06-21 19:56:23 +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
3e28539b81
Add a display coord to buffer coord method to Window
2015-03-18 23:40:26 +00:00
Maxime Coste
99996902de
Use a IdMap for storing hooks
...
The number of hook names is small (<20), using an UnorderedMap
is overkill, and prevents using StringView for key searching.
2015-03-05 14:59:27 +00:00
Maxime Coste
8df77121d7
Rename safe_ptr and ref_ptr to SafePtr and RefPtr
2015-02-19 13:58:25 +00:00
Maxime Coste
b697bf1795
Release display buffers when a window is added to free list
2015-01-26 19:41:10 +00:00
Maxime Coste
1c8ee78d1a
Do not register timers for transient input handlers
2014-12-18 23:12:58 +00:00
Maxime Coste
3a817e2f96
Cleanup includes
2014-11-12 21:27:07 +00:00
Maxime Coste
e38ba6ce3d
Add scope class and encapsulate Options, Keymaps, Aliases and Hooks in it
2014-10-30 14:04:57 +00:00
Maxime Coste
185b980718
Add scoped aliases
...
aliases are now stored in window, buffer, or globally.
2014-10-30 14:02:13 +00:00
Maxime Coste
b2e90fe21e
Refactor highlighters, use an interface with virtual methods
2014-10-22 13:54:03 +01:00
Maxime Coste
5092494427
Add support for target column preservation
...
Fixes #64
2014-09-09 19:42:57 +01:00
Maxime Coste
d356ae2419
Make safe_ptr able to track callstacks
...
The code stays disabled, as the performance penalty is quite
high, but can be enabled to help debugging safe pointers.
2014-08-12 19:18:10 +01:00
Maxime Coste
479c31b571
Replace FunctionGroup template with HighlighterGroup class
2014-06-10 19:58:02 +01:00
Maxime Coste
8546788b43
Refactor LineAndColumn coordinates
...
BufferCoord -> ByteCoord
DisplayCoord -> CharCoord
Moved their definition along with LineAndColumn into coord.hh
2014-05-07 19:53:45 +01:00
Maxime Coste
c0973075fa
Get rid of Editor for good
...
ClientManager now stores only the free windows, clients take
ownership of its own.
2013-12-20 20:14:57 +00:00
Maxime Coste
d1ac813f61
Pass a Context rather than a Window to highlighters
2013-12-16 23:24:08 +00:00
Maxime Coste
ae75594d25
Window: refactor center_selection/display_selection_at
...
Take the line we are intersted in as a parameter rather than getting
the main selection last char line.
2013-12-16 19:08:19 +00:00
Maxime Coste
9b6639eb27
Remove Editor::move_selections
2013-12-15 14:14:52 +00:00
Maxime Coste
2c09da50be
Add key mapping support
2013-10-25 00:30:46 +01:00
Maxime Coste
3862b5cbb8
LineAndColumns: always pass by value
2013-07-26 01:50:09 +02:00
Maxime Coste
62fdacb757
Add scroll left/right support
2013-07-24 01:38:30 +02:00
Maxime Coste
486ebed098
try to preserve display column rather than buffer column when moving line
2013-07-23 20:46:15 +02:00