Maxime Coste
8b1b1d9cd8
Selectors: add select_surrounding to select blocks
...
Alt-a followed by []()<>{}bB selects the block surrounding current
selection end.
Alt-i is similar but selects only the inside of the block.
2012-01-04 14:18:08 +00:00
Maxime Coste
e59bdd931e
search for kakrc next to the kak executable instead of in the current directory
2011-12-28 22:57:48 +00:00
Maxime Coste
4de41197c0
Add a | key that pipes each selection through an external filter
2011-12-28 19:04:06 +00:00
Maxime Coste
c9ac4d615d
Highlighters: tweak colorize_cplusplus
2011-12-28 18:52:35 +00:00
Maxime Coste
0e398566d2
Buffer: fix compute_lines on empty_buffer
2011-12-28 18:52:14 +00:00
Maxime Coste
aa1c4d64f9
Completions: complete_filename correctly support directories
2011-12-22 13:44:04 +00:00
Maxime Coste
6fa5d809ef
whitespace fix
2011-12-22 13:33:29 +00:00
Maxime Coste
67c08e598b
IncrementalInserter: preserve selection through hook call
2011-12-21 19:06:51 +00:00
Maxime Coste
f77fc3980b
Window: store a stack of selections
2011-12-21 19:06:26 +00:00
Maxime Coste
c11b548662
kakrc: cleanup trailing whitespaces when quiting insert mode
2011-12-21 18:58:41 +00:00
Maxime Coste
70bb4847ee
IncrementalInserter: catch exception thrown by the hook
2011-12-21 18:57:07 +00:00
Maxime Coste
6c817c8117
Window: do not manage undo groups when an inserter is active
2011-12-21 18:56:32 +00:00
Maxime Coste
913ee3f096
Use Keys instead of char for keymap
2011-12-21 14:29:28 +00:00
Maxime Coste
ba1fe056f4
Add an exec command, similar to vim normal command
2011-12-20 19:22:05 +00:00
Maxime Coste
7116ed6d61
Window: throw when multiselect results in no selections
2011-12-20 19:27:13 +00:00
Maxime Coste
42a24895de
Add Key struct
2011-12-20 19:21:11 +00:00
Maxime Coste
91606850fd
Utils: add on_scope_end utility
...
on_scope_end permits to register a functor to be called at scope
end (either exception thrown or normal scope end). this is usefull
for cleanup code that must be run.
usage:
auto cleaner = on_scope_end([]() { cleanup(); });
2011-12-20 19:18:00 +00:00
Maxime Coste
17cab9c7c4
Filters: add cleanup_whitespace filter
...
this filter remove trailing whitespaces on the previous line
when inserting an end-of-line.
2011-12-20 14:27:01 +00:00
Maxime Coste
e77f58c010
better rvalue reference forwarding
2011-12-07 18:57:07 +00:00
Maxime Coste
2239fb6e49
Filters: move from buffer to window
2011-12-07 14:29:10 +00:00
Maxime Coste
c40eb2b03a
Buffer: replace insert and erase methods with modify
...
modify directly takes a Modification as parameter
2011-12-07 14:26:40 +00:00
Maxime Coste
2edddfe009
Buffer: rename BufferModification to Modification
2011-12-06 18:58:43 +00:00
Maxime Coste
73cebb9072
kakrc: do not highlight the end-of-line in trailing whitespaces
2011-12-06 18:50:05 +00:00
Maxime Coste
b245d80c4e
Window: preserve current selection when empty multi_select
2011-12-05 19:21:16 +00:00
Maxime Coste
4ae2fcffbd
Buffer: add comment for clamp
2011-12-05 19:21:11 +00:00
Maxime Coste
711c05b81e
Window: fix trailing spaces
2011-12-05 14:29:36 +00:00
Maxime Coste
23eafd4504
Add a repeat last insert command, bound to .
2011-12-05 14:28:45 +00:00
Maxime Coste
d1cc5da8a6
Filters: add expand_tabulations to insert spaces instead of tabs
2011-12-03 20:25:05 +00:00
Maxime Coste
74a315cd0e
kakrc: add preserve_indent filter on c++ files and highlight trailing spaces
2011-12-02 19:01:08 +00:00
Maxime Coste
c761420055
fix exec_commands_in_file
2011-12-02 19:00:37 +00:00
Maxime Coste
11d606f79e
{Filter,Highlighter}Registry: more infos on factory not found
2011-12-02 19:00:01 +00:00
Maxime Coste
0b4ed2280f
Buffer: call BufCreate hook on construction
2011-12-02 18:59:18 +00:00
Maxime Coste
8e39edc567
DynamicBufferIterator: fix end of buffer corner case
2011-12-02 18:57:18 +00:00
Maxime Coste
b1daf8de16
Selectors: fix select_line on the last line
2011-12-02 18:56:18 +00:00
Maxime Coste
94d59cc4dd
Buffer: add filter support
...
filters are functions called prior to applying a modification
to a buffer. They can manipulate the modification to change
the editor behaviour.
2011-12-02 14:28:27 +00:00
Maxime Coste
8e06e168d9
HighlighterRegistry: use idvaluemap to store factories
2011-12-02 14:22:51 +00:00
Maxime Coste
4252e0d610
Window: use an idvaluemap to store highlighters
2011-12-02 14:20:11 +00:00
Maxime Coste
a5a726d291
Add idvaluemap container
...
it is a vector based map, preserving insertion order and providing
completion on ids it contains.
2011-12-02 14:18:31 +00:00
Maxime Coste
934e62b502
stop clearing selections all the time
2011-11-30 14:18:54 +00:00
Maxime Coste
d8dd782960
Highlighters: style fix
2011-11-30 14:11:53 +00:00
Maxime Coste
0b48525b35
Window: do not stay on an eol when clearing selections
2011-11-29 22:48:00 +00:00
Maxime Coste
0859b20bcf
Rename Filter to Highlighter to be more explicit
2011-11-29 22:37:20 +00:00
Maxime Coste
e89516f2a3
IncrementalInserter: refactoring
2011-11-29 21:35:50 +00:00
Maxime Coste
b24dec89a2
Buffer: add iterator_at_line_{begin,end} methods
2011-11-28 19:31:29 +00:00
Maxime Coste
51ee0b61f4
DynamicBufferIterator: use const_cast instead of having a mutable field in Buffer
2011-11-28 18:55:17 +00:00
Maxime Coste
46a01b5a0b
Debug: stop writing key codes to debug buffer and cleanups
2011-11-28 18:52:29 +00:00
Maxime Coste
dc642f8afa
Buffer: refactor to remove do_{insert,erase} methods
2011-11-27 18:41:25 +00:00
Maxime Coste
08ba791ff4
Add a kakrc file which automatically enables hlcpp on c/c++ files
2011-11-27 13:02:50 +00:00
Maxime Coste
70e0393c4d
Add a source command to execute commands from file
...
a kakrc file in current directory is sourced automatically
at start
2011-11-27 12:59:59 +00:00
Maxime Coste
de19aeb035
File: extract read_file function which returns file content in a string
2011-11-27 12:56:38 +00:00
Maxime Coste
b59a0816b9
Add wq and wq! commands
2011-11-26 19:11:24 +00:00
Maxime Coste
e36153f035
CommandManager: fix complete and style tweak
2011-11-26 19:05:49 +00:00
Maxime Coste
a00961da99
Add hook command
2011-11-26 18:41:55 +00:00
Maxime Coste
dd2896ecc8
Window: call WinCreate hook on creation
2011-11-26 18:39:59 +00:00
Maxime Coste
9c117a821c
Filters: fix colorize_regex_range when range is not visible
2011-11-26 18:34:49 +00:00
Maxime Coste
68f3d24199
HooksManager: replace HookContext with Context
2011-11-26 18:34:10 +00:00
Maxime Coste
957446dee4
Add a Context parameter to commands
2011-11-26 18:32:57 +00:00
Maxime Coste
417802cbdf
CommandManager: argument splitting supports "multi word"
...
works with " and '
2011-11-26 17:20:02 +00:00
Maxime Coste
9775958012
Add a HooksManager class
2011-11-25 14:26:29 +00:00
Maxime Coste
9a4d8d5f4d
Filters: tweak colorize_cplusplus
2011-11-24 19:13:58 +00:00
Maxime Coste
dcfb5e15f2
SelectionHighlighter: highlight end of lines in selection
2011-11-24 19:13:38 +00:00
Maxime Coste
ea2aeea3a4
Filters: generalize colorize_regex in colorize_regex_range
2011-11-24 19:11:58 +00:00
Maxime Coste
2549a63c0b
Selectors: fix corner cases on first/last buffer char
2011-11-24 18:46:35 +00:00
Maxime Coste
30b4fb6513
Buffer: fix handling of last eol
2011-11-24 14:23:41 +00:00
Maxime Coste
7b09b34cab
Selectors: fix select_whole_lines
2011-11-22 18:58:05 +00:00
Maxime Coste
d27aaab066
use alt-x instead of , to select whole lines
2011-11-22 14:31:20 +00:00
Maxime Coste
a1200aacad
Add alt-j command to join lines
2011-11-22 14:24:50 +00:00
Maxime Coste
95f87a6694
Window: add replace method
...
permits to replace selection by a string in a single undo step
2011-11-22 14:23:46 +00:00
Maxime Coste
a7309fbe87
IncrementalInserter: fix erase
2011-11-21 22:18:00 +00:00
Maxime Coste
7861ad9ddb
Selectors: add split_selection bound to Alt-s
2011-11-21 19:30:44 +00:00
Maxime Coste
b67c36358d
Extract RegexSelector methods as plain selectors
2011-11-21 19:08:51 +00:00
Maxime Coste
2677fa7961
Add , to fully selects lines selection is on.
2011-11-21 18:53:22 +00:00
Maxime Coste
a1a57ea137
DisplayBuffer: fix DisplayAtom::iterator_at
2011-11-16 21:03:32 +00:00
Maxime Coste
bef193ae54
RegexSelector: support captures
2011-11-16 20:05:29 +00:00
Maxime Coste
18913cfbff
IncrementalInserter: add insert_capture method bound to ^B<num>
2011-11-16 19:24:37 +00:00
Maxime Coste
52b8abfe02
Selections: add captures field
...
Selections now can have associated captures, for backreferences when
selections are created from a regex search
2011-11-16 19:23:09 +00:00
Maxime Coste
b1e815a66c
RegexSelector: support multi selections, bound to s key
2011-11-16 14:06:01 +00:00
Maxime Coste
0203b904e1
Window: add multi_select method
...
multi_select provides Selection -> SelectionList operations
2011-11-16 14:04:45 +00:00
Maxime Coste
7423677236
Filters: cleanup trailing whitespaces
...
detected with ':addfilter regex \h+\n default red' !
2011-11-15 14:28:03 +00:00
Maxime Coste
d1868e8f07
ncurses: set ESCDELAY to 25 so that esc key lag is less noticeable
2011-11-15 14:26:28 +00:00
Maxime Coste
a3b5c74512
remove unused code
2011-11-14 14:27:33 +00:00
Maxime Coste
031fa1a25c
Filters: colorize_regex supports matches spanning multiple display atoms
2011-11-14 14:23:02 +00:00
Maxime Coste
d2b9cd6e60
DisplayBuffer: split now preserve iterator parameter
...
that means that the given iterator points to the first part of the
split (instead of the second in previous implementation).
2011-11-14 14:10:11 +00:00
Maxime Coste
0dc8442ca4
Completions: add filterid completion for rmfilter
2011-11-12 14:15:35 +00:00
Maxime Coste
a8b2c4f568
Completions: add basic addfilter completion
2011-11-12 14:08:05 +00:00
Maxime Coste
f5ad32f137
Completion: decentralise, move buffer name completion to BufferManager
2011-11-12 14:06:49 +00:00
Maxime Coste
82baa55eed
Completions: change NullCompletion functor to complete_nothing function
2011-11-10 20:57:25 +00:00
Maxime Coste
56231b4239
Filters: make colorize_regex accessible through addfilter
2011-11-10 14:28:38 +00:00
Maxime Coste
f12929abad
Filters: refactoring
2011-11-09 23:56:22 +00:00
Maxime Coste
5aeee719dd
fix launching on new file
2011-11-09 14:17:46 +00:00
Maxime Coste
55c092eed9
Filters: code cleanup
2011-11-09 14:06:05 +00:00
Maxime Coste
3af1b89034
Window: support adding and removing filters with :addfilter :rmfilter
2011-11-08 14:29:52 +00:00
Maxime Coste
1f3f5ea1ba
Filters: register existing filters with the registry
2011-11-08 14:28:01 +00:00
Maxime Coste
e4ff1d8ad8
Add a filter registry class
2011-11-08 14:27:21 +00:00
Maxime Coste
0ddb6df80d
IncrementalInserter: move cursor left when finishing
2011-11-04 14:15:35 +00:00
Maxime Coste
46e727d5b6
Filters: tweak colorize_cplusplus
2011-11-04 09:10:28 +00:00
Maxime Coste
cebb7980cb
Buffer: tweak default content
2011-11-04 09:10:05 +00:00
Maxime Coste
9cf7cb682c
Buffer: fix modified handling
2011-11-03 13:44:02 +00:00
Maxime Coste
4982620c4c
IncrementalInserter: support insert at line begin and append at line end
2011-11-02 20:03:41 +00:00
Maxime Coste
856a870d8b
fix not existing lines drawing
2011-11-02 14:22:20 +00:00
Maxime Coste
fbe8eed3e4
Selectors: select_line selects next line when cursor is on eol
2011-10-27 18:57:31 +00:00
Maxime Coste
0e18db5a88
lines and columns used for user interaction are 1-indexed
2011-10-27 14:27:39 +00:00
Maxime Coste
55cd4949e0
Selection: more intelligent merging
2011-10-27 14:22:17 +00:00
Maxime Coste
62482b65ec
rename buffer_iterator.inl.h to buffer_iterator.inl.hh
2011-10-27 14:13:39 +00:00
Maxime Coste
5bd61a3f38
Filters: correct select_to_previous_WORD
2011-10-27 14:09:57 +00:00
Maxime Coste
c532f031d2
Filters: tweak colorize_cpluscplus
2011-10-26 14:29:04 +00:00
Maxime Coste
b58694939c
bind alt-[lLhH] to select_to_eol(_reverse)?
2011-10-26 14:22:48 +00:00
Maxime Coste
5d5e76a3eb
change select_line binding from . to x
2011-10-26 14:18:43 +00:00
Maxime Coste
2c8f3229c0
Selectors: add selectors for WORDs
...
WORDs are the same as vim's ones, i.e. a group of contiguous non blank
characters. They are bound as alt + word selector key.
2011-10-25 18:46:14 +00:00
Maxime Coste
97a279e229
add alt-key binding support
...
bind alt-[tTfF] to backward version of [tTfF]
2011-10-25 14:28:20 +00:00
Maxime Coste
57b55a5824
DisplayBuffer: deactivate too expensive check
2011-10-24 19:27:36 +00:00
Maxime Coste
d2c6ceb47b
DynamicBufferIterator: add and use in Selections
...
DynamicBufferIterator are a new type of BufferIterators that
automatically update themselves when their buffer is modified.
Selections now uses this type of iterators instead of plain ones
2011-10-24 14:26:21 +00:00
Maxime Coste
bace526fa3
Buffer: not copyable, add destructor
2011-10-24 14:23:13 +00:00
Maxime Coste
12d933d896
Filters: rewrote colorize_regex
2011-10-23 20:26:51 +00:00
Maxime Coste
fffa405bfd
DisplayBuffer: overload atom_containing with a version taking an iterator to search start
2011-10-23 20:26:30 +00:00
Maxime Coste
ad6ee464f4
style tweak
2011-10-19 18:54:20 +00:00
Maxime Coste
712577b88e
CommandManager: fix completion of empty tokens
2011-10-19 18:50:28 +00:00
Maxime Coste
d7f934b7ca
Buffer: iterator_at prevents getting iterators on end of line
2011-10-19 14:25:13 +00:00
Maxime Coste
7e2f7f6715
IncrementalInserter: fix OpenLineBelow
2011-10-18 14:13:19 +00:00
Maxime Coste
32e01947fa
DisplayBuffer: store atoms in a std::list instead of a vector
2011-10-18 13:59:32 +00:00
Maxime Coste
6fd7f97fa7
Window: fix status_line cursor position
2011-10-18 13:49:10 +00:00
Maxime Coste
c7876f0ba3
DisplayBuffer: remove some check_invariant, overhead is too noticeable
2011-10-18 00:56:18 +00:00
Maxime Coste
8cab34d57f
Buffer: add support for modification listeners
2011-10-18 00:55:45 +00:00
Maxime Coste
d48a2bd325
BufferIterator: move methods implementation to buffer_iterator.inl.h
2011-10-17 22:05:06 +00:00
Maxime Coste
1c6eef08f1
utils: add contains function
2011-10-17 21:05:22 +00:00
Maxime Coste
316e84f119
Filters: add a show line numbers filter
2011-10-17 19:01:36 +00:00
Maxime Coste
2badb9d708
DisplayAtom: add splittable methode
2011-10-17 19:01:04 +00:00
Maxime Coste
79ee27dae7
DisplayBuffer: deinline insert method and add atom_containing method
2011-10-17 19:00:38 +00:00
Maxime Coste
88e31d8cce
DisplayBuffer: allow empty atoms, with begin == end
2011-10-17 18:59:35 +00:00
Maxime Coste
53ce1e016a
Buffer: move struct Modification out of class, as BufferModification
2011-10-17 14:12:15 +00:00
Maxime Coste
dc74934e59
DisplayBuffer: refactoring, correct support of replacements
...
DisplayAtoms now know where they are on the screen and have
line_and_column_at and iterator_at methods.
2011-10-15 04:45:49 +00:00
Maxime Coste
187a99aba2
LineAndColumn: add comparison operators
2011-10-15 04:42:28 +00:00
Maxime Coste
26459abf8a
WindowCoord: rename to DisplayCoord and move with DisplayBuffer
2011-10-14 14:29:53 +00:00
Maxime Coste
c5be69a9a9
BufferCoord: allow explicit construction from all LineAndColumns
2011-10-14 14:27:43 +00:00
Maxime Coste
2d54a7818e
Window: privatize coordinates conversion methods
2011-10-12 18:54:48 +00:00
Maxime Coste
80e7bac622
Selectors: remove unused move_select
2011-10-12 18:54:04 +00:00
Maxime Coste
be043ffe1e
Window: move_cursor_to takes a BufferIterator parameter
2011-10-12 18:53:38 +00:00
Maxime Coste
22bd9f90d5
Filters: add an expand_tabulation filter
2011-10-12 18:52:22 +00:00
Maxime Coste
f802a9f3be
Debug: add key integral value in the debug buffer on keystroke
2011-10-10 22:47:19 +00:00
Maxime Coste
219709e472
Completions: move code from main.cc to completion.hh
2011-10-10 22:38:58 +00:00
Maxime Coste
fe0e1c79f0
Window: scroll when inserting, appending, erasing if necessary
2011-10-10 14:28:39 +00:00
Maxime Coste
7e84ca9ae9
gl and gh now go to first or last character of the line
...
append mode is supported through G key
2011-10-10 14:24:17 +00:00
Maxime Coste
003c5d4e3d
remove useless line
2011-10-08 13:23:18 +00:00
Maxime Coste
afd1ae5458
Filters: tweak colorize_cplusplus
2011-10-07 14:28:38 +00:00
Maxime Coste
868a2f8107
ncurses: fix color support
2011-10-07 14:28:13 +00:00
Maxime Coste
10106e8c8e
DisplayBuffer: do not store content in atom, begin and end are sufficient
2011-10-07 14:19:58 +00:00
Maxime Coste
a19f4f059d
Debug: add a write_debug function
...
write_debug writes in a Scratch buffer named '*debug*', so that debug
messages are accessibles from within kakoune
2011-10-07 14:16:38 +00:00
Maxime Coste
9db4aa9691
Buffer: add a type property
2011-10-07 14:15:55 +00:00
Maxime Coste
12535e1099
Window: get rid of select_mode
2011-10-07 14:03:25 +00:00
Maxime Coste
ca99a51bca
clear selections after a change
2011-10-06 21:13:33 +00:00
Maxime Coste
1e224dc586
whitespace fix
2011-10-06 21:13:16 +00:00
Maxime Coste
571e4772b4
IncrementalInserter: support OpenLineBelow and OpenLineAbove mode
2011-10-06 21:12:55 +00:00
Maxime Coste
cf9f8c93ec
Filters: tweak colorize_cplusplus
2011-10-06 21:12:16 +00:00
Maxime Coste
f9be716776
quit: do not quit if modified buffer exists, add q! command
2011-10-05 18:43:47 +00:00
Maxime Coste
cf162ae617
draw_window: add a space for eol, so that selected eol are visible
2011-10-05 14:28:20 +00:00
Maxime Coste
ff730380ed
Window: empty_selections -> clear_selections
...
clear_selections also reset select_mode to Normal,
most editing operations now do a clear_selections.
2011-10-05 14:24:52 +00:00
Maxime Coste
4ce349fa02
Buffer: modification tracking
2011-10-05 14:21:24 +00:00
Maxime Coste
f4743e08bd
Filters: tweaks colorize_cplusplus
2011-10-04 19:08:34 +00:00
Maxime Coste
c8cf7bbaa9
Window: add a basic status line
2011-10-04 18:49:41 +00:00
Maxime Coste
4f771b084a
escape-key force return to normal mode
2011-10-03 18:41:05 +00:00
Maxime Coste
945426f47a
File: fix write_buffer_to_file
2011-10-03 18:40:12 +00:00
Maxime Coste
6a0b570e50
Filters: add a colorize_cplusplus filter and use it by default in Window
2011-10-03 14:30:14 +00:00
Maxime Coste
d99bcd7f2e
bind T and F as select_to_reverse non-inclusive and inclusive
2011-10-03 14:29:44 +00:00
Maxime Coste
01ac17ed04
Filters: add a colorize_regex filter
2011-09-30 19:16:23 +00:00
Maxime Coste
36c3bb6ae3
ncurses: quick'n'dirty color support
2011-09-30 19:15:14 +00:00
Maxime Coste
e351acd997
Window: fix blink_void
2011-09-29 14:23:46 +00:00
Maxime Coste
834e2d2fe3
DisplayBuffer: check_invariant method to assert atoms consistency
2011-09-29 09:10:27 +00:00
Maxime Coste
e659ea2dab
DisplayBuffer: add a split method to split an atom
2011-09-29 08:55:08 +00:00
Maxime Coste
822fc0f822
Window: add a test filter to make 'void' blink
2011-09-29 08:37:27 +00:00
Maxime Coste
ba2800ddac
Window: refactor DisplayBuffer generation
2011-09-28 20:54:11 +00:00
Maxime Coste
7746c78ccc
BufferIterator: add operator>{,=}
2011-09-28 20:53:29 +00:00
Maxime Coste
a30b7c1e9f
Window: fix scrolling when select_mode == Append
2011-09-28 19:21:49 +00:00
Maxime Coste
e619a81375
IncrementalInserter: Append, Insert or Change mode specified at construction
2011-09-28 19:14:39 +00:00
Maxime Coste
43fb64a913
Window: selection behaviour now depends on a window state
...
more vi-like behaviour, hit the v key to toggle append selection mode,
this means much more keys become available for mapping, as caps are now
longer reserved to append mode.
2011-09-28 14:23:43 +00:00
Maxime Coste
309b722df9
Window: cursors are now implicit, taken from current selections
...
Window hence guarantees that there is always at least one selection.
2011-09-27 18:45:22 +00:00
Maxime Coste
610acb3c0e
Selectors: add a count argument to select_to
2011-09-27 14:27:48 +00:00
Maxime Coste
01018a5eac
Handle paste before and paster after with p and P
2011-09-27 14:15:20 +00:00
Maxime Coste
924a85d14f
erase, change: yank current selection before erasing
2011-09-26 08:59:32 +00:00
Maxime Coste
6ff06ca985
DisplayBuffer: cleanup
2011-09-25 23:51:12 +00:00
Maxime Coste
639897517a
Word selectors: better handling of line breaks
2011-09-25 23:50:13 +00:00
Maxime Coste
dc54e7f09c
% key selects whole buffer
2011-09-24 13:45:25 +00:00
Maxime Coste
0cad8ed34b
gh and gl to move to first/last character of line
2011-09-24 13:08:04 +00:00
Maxime Coste
d4933daba0
BufferIterator: fix operator=
2011-09-24 13:06:35 +00:00
Maxime Coste
53c9021857
Search: save last search to '/' register and bind n to repeat last search
2011-09-24 12:48:58 +00:00
Maxime Coste
1f0b06a855
Window: undo group cleanup and fix of append method
2011-09-24 12:39:40 +00:00
Maxime Coste
9b865cea39
Basic support for yanking and pasting
2011-09-23 14:31:57 +00:00
Maxime Coste
838ceb5958
Window: add selection_content method
...
it returns the content of the last selection, or the character under the
cursor if there are no selections.
2011-09-23 14:31:15 +00:00
Maxime Coste
8f70192875
CommandManager: now a singleton
2011-09-23 14:29:42 +00:00
Maxime Coste
c2cbd69c1a
main: using namespace std::placeholders
2011-09-23 14:27:34 +00:00
Maxime Coste
26537d7028
Utils: Singleton template and migration of the BufferManager
...
Singletons are not autocreating, the application needs to create
exactly one instance (I want to avoid implicit initialization order
hell)
2011-09-23 14:26:53 +00:00
Maxime Coste
52ad372adb
Selectors: support inclusive mode in select_to (bound to f key)
2011-09-23 14:06:10 +00:00
Maxime Coste
662ba0c904
Selection: do not use [begin, end) semantics but [first, last]
...
selections are now defined with inclusive iterators, which means that
Selection(cursor, cursor) is a valid selection of the charateter pointed
by cursor.
On the user interface side, that means that the cursor is now part of
the selection, selectors were adapted to this behavior (and word
selectors are now much more intuitive)
2011-09-23 09:17:19 +00:00
Maxime Coste
5ca901644f
Completion: add complete_buffername completer
2011-09-22 18:55:45 +00:00
Maxime Coste
429536d0f4
BufferManager: allow iteration on Buffers with begin/end methods
2011-09-22 18:55:23 +00:00
Maxime Coste
c3faeb6c05
Selectors: add select_to which selects until a given character on current line
2011-09-22 14:35:28 +00:00
Maxime Coste
0f4f201b6d
Selectors: fix select_matching
2011-09-22 14:18:26 +00:00
Maxime Coste
03c199420e
basic g (go) command, gg/gt goes to first line, gb goes to last
2011-09-22 14:02:07 +00:00
Maxime Coste
a8cac32fe0
Selectors: more vi-like words movements
2011-09-22 14:00:31 +00:00
Maxime Coste
5a46ad49ea
Window: add move_cursor_to method
2011-09-22 14:00:04 +00:00
Maxime Coste
3012f69c4d
Selection: fix canonicalize
2011-09-22 13:59:07 +00:00
Maxime Coste
948443a077
Buffer: add line_count method
2011-09-22 13:58:35 +00:00
Maxime Coste
2efa120612
o key to open a line after the current one
2011-09-22 09:24:16 +00:00
Maxime Coste
cff69b2556
Selectors: add a basic select_matching selector for <([{]])> pairs
2011-09-21 19:09:49 +00:00
Maxime Coste
3af66276f0
Move selectors function to their own file
2011-09-21 14:37:09 +00:00
Maxime Coste
3c06846aa3
RegexSelector: wrap on top if needed
2011-09-20 12:00:06 +00:00
Maxime Coste
13d14d4ff5
Insert: refactoring using IncrementalInserter
2011-09-19 22:00:29 +00:00
Maxime Coste
9da8fbe630
Window: add a IncrementalInserter class for insert mode
2011-09-19 21:56:29 +00:00
Maxime Coste
2f093d78b5
LineAndColumn: fix operator[+-]=
2011-09-19 21:55:58 +00:00
Maxime Coste
8a4a3e447b
Window: fix erase
2011-09-18 20:09:25 +00:00
Maxime Coste
85e2a31b31
Window: code cleanup and more intelligent Selection class
2011-09-17 14:57:35 +00:00
Maxime Coste
0513b4de29
Shift-{H,J,K,L} keys move cursor while selecting.
2011-09-17 14:28:23 +00:00
Maxime Coste
34c9b0d30f
LineAndColumn: move to it's own header and add operator[+-]=?
...
LineAndColumn is now a template so that WindowCoords and BufferCoords
cannot be added together.
2011-09-17 14:13:33 +00:00
Maxime Coste
49fce28dec
select_to_next_word{,_end}: words are [a-zA-Z0-9]
2011-09-16 09:20:36 +00:00
Maxime Coste
3afbbefd9b
Configure filename completer for edit and write commands
2011-09-16 09:20:01 +00:00
Maxime Coste
63191f1900
CommandManager: support per command configurable completion
2011-09-16 09:18:51 +00:00
Maxime Coste
aeea1c610c
complete_filename: accept cursor_position as additional parameter
2011-09-16 09:17:55 +00:00
Maxime Coste
635e76eb4c
prompt: rework tu support arrows and completion cycling
2011-09-14 19:15:09 +00:00
Maxime Coste
b59ad6a174
Completion: dedicated completion header and basic filename completion
2011-09-14 15:41:56 +00:00
Maxime Coste
4b38cd3cd0
utils: add auto_raii helper function
...
this helper permits to register a resource and cleanup function to keep
exception safety with C like resource. For exemple, to be sure that a
FILE* will be closed, you can use:
auto file = auto_raii(fopen("filename"), fclose);
file will auto cast to FILE* when needed, and will call fclose when
going out of scope.
2011-09-14 15:36:35 +00:00
Maxime Coste
eecc5a184e
CommandManager: basic command name completion support
2011-09-13 21:16:48 +00:00
Maxime Coste
030c5caf0a
assert: custom implementation
2011-09-09 19:24:18 +00:00
Maxime Coste
3caf962110
exception: refactoring
2011-09-09 18:40:59 +00:00
Maxime Coste
84682b7590
Add a buffer command to switch between existing buffers
2011-09-08 14:32:36 +00:00
Maxime Coste
76b7c60afb
Buffer is now responsible for window creation
2011-09-08 14:30:36 +00:00
Maxime Coste
60e673acba
Makefile: add rule for tags
2011-09-08 14:28:42 +00:00
Maxime Coste
d3499ecd9c
Window lifetime is now handled by it's buffer.
...
A window cannot outlive it's buffer, so it makes sense to keep only a
reference on it hand have the buffer manage the window lifetime.
2011-09-08 00:13:19 +00:00
Maxime Coste
535e200587
Add a BufferManager singleton class, handling buffer lifetime
...
it also provide access to buffers by name
2011-09-08 00:11:48 +00:00
Maxime Coste
511df5b660
utils: add operator== (const std::unique_ptr<T>&, T*)
2011-09-08 00:08:55 +00:00
Maxime Coste
03f1520b43
Refactor commands handling and parsing in a CommandManager class
2011-09-07 18:16:56 +00:00
Maxime Coste
8baf43ece1
binding of undo to 'u' and redo to 'U'
2011-09-06 18:53:12 +00:00
Maxime Coste
f88d1dbe06
Window: basic binding of bufffer undo feature
2011-09-06 18:52:52 +00:00
Maxime Coste
1e87fe17c6
Buffer: Undo/Redo implementation
...
Currently only a linear undo, i.e. if you undo and then make some new
changes, previous undoed changes are lost. Final undo system should
support an undo tree, with timestamped modifications.
2011-09-06 18:49:32 +00:00
Maxime Coste
f58cbf0b98
utils: Add reversed template helper for container iteration
...
this permits to use range-based for loops to iterate on reversed
containers. Should work on any container implementing rbegin and rend.
2011-09-06 18:33:35 +00:00
Maxime Coste
3f51feaaef
Buffer: accept initial content in constructor
2011-09-06 18:33:18 +00:00
Maxime Coste
6668151c78
LineAndColumn: segregate into WindowCoord and BufferCoord
...
Having the same type to specify coordinates in window space or buffer
space is error prone, now the compiler will tell if we use one for
another.
2011-09-05 19:06:31 +00:00
Maxime Coste
d5012c9379
window: support scrolling
2011-09-05 18:55:31 +00:00
Maxime Coste
04c7ce8f01
window: cursor position is now stored in window coordinate
...
It was stored in buffer coordinates. Conversion methods added
2011-09-05 18:54:17 +00:00
Maxime Coste
2224118de2
insert: print '-- INSERT --' in status line
2011-09-02 18:45:57 +00:00
Maxime Coste
61b37a6057
RegexSelector: search the entire buffer instead of the current line
2011-09-02 18:38:10 +00:00
Maxime Coste
39f12a1766
add const BufferIterator::Buffer& buffer() method
2011-09-02 18:35:22 +00:00
Maxime Coste
19123186d7
better exception handling in edit and write_buffer
2011-09-02 18:02:29 +00:00
Maxime Coste
11d82b11b3
create_buffer_from_file: throw file_not_found instead of open_file_error when ENOENT
2011-09-02 18:01:20 +00:00
Maxime Coste
955744e5d0
prompt: correctly handle backspace when empty
2011-09-02 17:07:35 +00:00
Maxime Coste
053b2e233e
main: catch all exceptions, close ncurses and rethrow
2011-09-02 17:05:44 +00:00
Maxime Coste
535285d9e6
Initial commit
2011-09-02 16:51:20 +00:00