Commit Graph

1616 Commits

Author SHA1 Message Date
Maxime Coste
07c8379313 BufferIterator are Random Access iterators 2013-05-30 14:05:05 +02:00
Maxime Coste
d2df6a9f15 remove BufferIterator::clamp 2013-05-30 14:00:41 +02:00
Maxime Coste
5e64f6d1ec remove Selection::buffer 2013-05-30 13:59:38 +02:00
Maxime Coste
5b0087b545 InputHandler: pass buffer and BufferCoord to completers 2013-05-30 13:59:38 +02:00
Maxime Coste
ae947b456d remove BufferIterator::offset 2013-05-30 13:59:38 +02:00
Maxime Coste
dbb1c57ec9 minor code cleanups in filters.cc 2013-05-30 13:59:38 +02:00
Maxime Coste
557acc5068 reorganize check_invariant in SelectionList 2013-05-30 13:59:38 +02:00
Maxime Coste
7f8d5c1fd0 Remove Range::content 2013-05-30 13:59:38 +02:00
Maxime Coste
93dd1ff3c7 Remove begin/end from Ranges, replace with min/max
Ranges should not be utf8 aware (needed for end), and a lot of
uses for end() were in fact looking for max.
2013-05-30 13:59:38 +02:00
Maxime Coste
a07fde181a Add Buffer::{next,prev,at}(BufferCoord) methods and use them in iterators 2013-05-30 13:59:38 +02:00
Maxime Coste
9a80a58ff4 buffer end should not be in a selection 2013-05-30 13:59:38 +02:00
Maxime Coste
462da52218 InputHandler: less iterators, more coords 2013-05-30 13:59:38 +02:00
Maxime Coste
52b77c1915 window, editor: take coords rather than iterators parameters 2013-05-30 13:59:38 +02:00
Maxime Coste
4f1ba860f8 minor tweak buffer iterator 2013-05-30 13:59:38 +02:00
Maxime Coste
7f17644a6b Buffer insert and erase takes coord rather than iterators 2013-05-30 13:59:38 +02:00
Maxime Coste
2902cc3275 BufferIterator convert implicitly to const BufferCoord& 2013-05-30 13:59:38 +02:00
Maxime Coste
d5b190369a DisplayBuffer: use coords rather than iterators 2013-05-30 13:59:38 +02:00
Maxime Coste
97df6f2222 AtomContent uses coord rather than iterators 2013-05-29 18:58:20 +02:00
Maxime Coste
81ce4e4720 pass window param to highlighters 2013-05-29 18:58:20 +02:00
Maxime Coste
6c290eff9a Buffer::do_{erase,insert} takes coord parameters rather than iterators
BufferChangeListeners do as well use coord rather than iterators
2013-05-29 18:58:20 +02:00
Maxime Coste
f23f48172f Buffer: add some method to work directly with coord instead of iterators 2013-05-29 18:58:20 +02:00
Maxime Coste
6cb8d69d29 Context: return DynamicSelectionLists in jump_{forward,backward} 2013-05-29 18:56:14 +02:00
Maxime Coste
9630990b74 Remove Selection::avoid_eol, move as static func in editor.cc
Conflicts:
	src/editor.cc
2013-05-29 18:53:57 +02:00
Maxime Coste
9991292bd3 tweak number line highlighter style 2013-05-24 18:39:28 +02:00
Maxime Coste
ad178e383b insert mode completion for all selection that matches the main one prefix 2013-05-21 19:21:55 +02:00
Maxime Coste
eab1213555 throw an error when gf does not find any file to open 2013-05-21 14:01:04 +02:00
Maxime Coste
258637222f Word completion can optionally look for candidates in all buffers
completers option accept word=buffer or word=all values
2013-05-20 14:10:53 +02:00
Maxime Coste
f3ad51444d move line_with_cursor as LineEditor::build_display_line 2013-05-17 14:29:15 +02:00
Maxime Coste
48f98eae97 Allow macros to call other macros, only recursive macro calls are forbidden 2013-05-17 14:22:48 +02:00
Maxime Coste
c3d53d588d revive str_to_int so that the good exception type is thrown on error 2013-05-17 14:09:42 +02:00
Maxime Coste
37a2363301 cpp.kak: fix alt now that alt_dirs is a proper list 2013-05-17 14:08:02 +02:00
Maxime Coste
585c8ba3cf Show an info box with available option when waiting for a key
Controled with the autoinfo option (disabled by default)
2013-05-16 22:33:48 +02:00
Maxime Coste
c91cea9dc3 fix ncurses info box placement 2013-05-16 22:33:28 +02:00
Maxime Coste
23f43376df fix NCurses info box, avoid trailing space on each lines 2013-05-16 21:46:15 +02:00
Maxime Coste
b2dffbabb6 more robust NCursesUI::menu_show 2013-05-16 21:44:58 +02:00
Maxime Coste
310e0f5bd3 cpp.kak: fix alt_dirs option default value 2013-05-16 19:23:54 +02:00
Maxime Coste
400e46719d Add scrolloff option support 2013-05-16 19:22:44 +02:00
Maxime Coste
389438164d add '&' for aligning selections 2013-05-15 18:47:50 +02:00
Maxime Coste
64b20729a5 Full object selection support for paragraphs and sentences 2013-05-15 14:24:09 +02:00
Maxime Coste
ef7d90cbfa colalias can reference another alias 2013-05-15 14:01:23 +02:00
Maxime Coste
1fb971e389 Editor::select(Selection, SelectMode::Extend) now only keeps the extended main selection 2013-05-14 13:58:41 +02:00
Maxime Coste
9cbf790d13 tweak Range::merge_with behaviour 2013-05-14 13:58:35 +02:00
Maxime Coste
2b12b72d6e fix overlaps(Range, Range) 2013-05-14 13:58:19 +02:00
Maxime Coste
42be2b23ca fix regex prompt whith empty regex 2013-05-13 18:43:38 +02:00
Maxime Coste
26f0fd4cc6 Use more std::* for string handling 2013-05-13 18:43:38 +02:00
Maxime Coste
56ab33c9d6 support specifying colors with RGB components 2013-05-13 14:25:05 +02:00
Maxime Coste
3a49e05832 Option can be declared with a checker function.
The checker function may throw if to be set option value is invalid.
Implemented with the completers option.
2013-05-06 13:52:41 +02:00
Maxime Coste
c1615b5c15 add unordered_set option support, use it for completers 2013-05-06 13:52:20 +02:00
Maxime Coste
2342e7686f add specialized contains function for unordered_set 2013-05-06 13:51:23 +02:00
Maxime Coste
42d7fcacd8 add a completers option for specifying which completer to use for BufferCompleter 2013-05-03 18:44:27 +02:00
Maxime Coste
39f9ca33c8 BufferCompleter: avoid modifying the buffer when not needed 2013-05-03 18:44:27 +02:00
Maxime Coste
33740d06ee Editor: tweak behaviour on undo/redo when selecting modified ranges 2013-05-03 18:44:26 +02:00
Maxime Coste
564cfb084e Editor: undo and redo select all ranges modified instead of the last one 2013-05-03 18:44:26 +02:00
Maxime Coste
4c4b6a404d add SelectionList::check_invariant 2013-05-03 18:44:26 +02:00
Maxime Coste
9b3e0c8055 Move selection update code to SelectionList 2013-05-02 19:04:59 +02:00
Maxime Coste
4ab5c7a203 DisplayBuffer: optimize Text and ReplacedBufferRange as well 2013-05-02 18:57:15 +02:00
Maxime Coste
d238707e6d Fix UndoGroupOptimizer 2013-04-30 19:01:20 +02:00
Maxime Coste
b69c9ea753 add paragraph (p) object 2013-04-30 14:29:18 +02:00
Maxime Coste
4bb3863f95 add sentence (s) object 2013-04-30 14:21:48 +02:00
Maxime Coste
bef48b7df0 Fix UndoGroupOptimizer 2013-04-29 14:25:38 +02:00
Maxime Coste
11bc24f992 FlagLines: use a shared updaters for options
previously, having two windows showing the same buffer with
the same line flags would have updated the options twice, resulting
in wrong lines in option. Now line flags options are updated only
once by a shared object along all FlagLines highlighter using the
same option.
2013-04-29 14:20:42 +02:00
Maxime Coste
ba562367f0 catch errors when opening files given on command line 2013-04-29 13:50:13 +02:00
Maxime Coste
4a0aa96160 fix bug in compact_path 2013-04-29 13:49:47 +02:00
Maxime Coste
d49f35817e fix handling of ~ in filenames so that :edit ~ does not open a file named '~' 2013-04-26 20:18:16 +02:00
Maxime Coste
70d65dac79 git-tools.kak: support add and diff command 2013-04-26 18:48:31 +02:00
Maxime Coste
8bfe2d62e5 echo: rename -col option to -color 2013-04-26 18:48:31 +02:00
Maxime Coste
7ce3212fb2 When committing an undo group, run an optimization pass on it
With incremntal insertion, undo groups tends to be a lot of single
character insertion/deletions at the same point, but the end
result is most of the time a single string insertion. Buffer
now tries to optimize the undo group.
2013-04-26 18:48:31 +02:00
Maxime Coste
b16c967f9c Buffer::Modification::Position is a BufferCoord instead of a BufferIterator 2013-04-26 18:46:42 +02:00
Maxime Coste
f8c3b6c9ef Buffer: rename character_count method to byte_count 2013-04-24 13:56:36 +02:00
Maxime Coste
7c4e79ef98 BufferCompleter: change behaviour to handle non prefix completions
Try to have a nice behaviour when the completions do not share
a prefix with the [completion begin, cursor pos] string.

For example an address book completion may provide candidates
for frrrwww that are 'Maxime Coste <frrrwww@gmail.com>', not
having frrrwww as a prefix.
2013-04-23 19:08:50 +02:00
Maxime Coste
ef07b98215 utils: add is_in_range function 2013-04-23 19:08:44 +02:00
Maxime Coste
6913510e67 use alt-J for joining and selecting the spaces replacing line breaks 2013-04-23 18:54:31 +02:00
Maxime Coste
72ef210e1b Buffer: add is_valid(BufferCoord) method 2013-04-23 18:46:18 +02:00
Maxime Coste
dd3a7f739d FlagLines: do not create a new local option in window if the option comes from the buffer 2013-04-23 14:03:54 +02:00
Maxime Coste
c844f6f5cf git-tools.kak: use a single git command with subcommands 2013-04-23 14:03:23 +02:00
Maxime Coste
6df60f5d2f use a DynamicSelectionList when searching as the buffer may be modified during the prompt 2013-04-22 18:49:52 +02:00
Maxime Coste
86f6282cbe selecting a surrounding object goes up one level if what we find is already selected 2013-04-22 14:18:49 +02:00
Maxime Coste
681f30dd28 support renaming buffers
Changing buffer name allows to save a *make* or *grep* buffer when
launching another one for exemple.
2013-04-22 13:49:07 +02:00
Maxime Coste
362e346728 rename go function to goto_commands 2013-04-19 13:49:47 +02:00
Maxime Coste
38bd8c243f add KakBegin and KakEnd hooks 2013-04-19 13:45:44 +02:00
Maxime Coste
ca69981cc6 Ncurses: display status line in terminal title as well 2013-04-18 20:22:19 +02:00
Maxime Coste
7af98eae43 add man.kak which provides a man command for displaying man pages in kakoune 2013-04-18 19:07:31 +02:00
Maxime Coste
5b61672948 add window_{width,height} env var 2013-04-18 14:28:53 +02:00
Maxime Coste
9a361e2657 Tweak status line 2013-04-18 14:28:35 +02:00
Maxime Coste
f4e7da8826 change swapped_case implementation 2013-04-17 19:31:31 +02:00
Maxime Coste
b229584e95 ShellManager: env_var_regex is an implementation detail 2013-04-17 19:26:44 +02:00
Maxime Coste
0a8f51bddd ctags.kak: fix zc changed to vc 2013-04-17 19:15:34 +02:00
Maxime Coste
8d83a5ff9e toolsclient option support is back, add docsclient for git-diff 2013-04-17 19:15:15 +02:00
Maxime Coste
021756dfd4 redeclaring an option with the same type is not an error 2013-04-17 19:10:51 +02:00
Maxime Coste
21f487417b context_wrap options are allowed only at start 2013-04-17 19:10:06 +02:00
Maxime Coste
d3961768ec add alt-X for trimming non full lines 2013-04-16 14:30:11 +02:00
Maxime Coste
979cfc1ff2 normal.cc: remove useless do_ prefix on function names 2013-04-16 14:08:15 +02:00
Maxime Coste
5b50b32e68 move view commands to v prefix instead of z 2013-04-16 13:54:04 +02:00
Maxime Coste
485a50bb4b handle client_removed exception out of ClientManager as well 2013-04-15 18:55:41 +02:00
Maxime Coste
da4be95c90 Handle SIGHUP gracefully 2013-04-15 18:50:45 +02:00
Maxime Coste
cc91a71a96 move Client as a public class instead of a ClientManager implementation detail 2013-04-15 14:28:21 +02:00
Maxime Coste
385241d2c0 remove String::replace, use boost::regex_replace directly 2013-04-12 19:16:55 +02:00
Maxime Coste
b6d21514e4 BufOpen hook is only called for file buffers 2013-04-12 19:11:28 +02:00
Maxime Coste
5653af15ed move normal mode implementation to normal.{cc,hh} 2013-04-12 14:28:13 +02:00
Maxime Coste
dbffcb226b echo command can take a -col parameter to specify the colors to use 2013-04-12 14:22:01 +02:00
Maxime Coste
46deca4f3f Add zj and zk command for scrolling the window 2013-04-12 01:31:21 +02:00
Maxime Coste
e4d87ee1f1 hide ncurses.h include in ncurses.cc 2013-04-12 01:28:22 +02:00
Maxime Coste
e68f3cfe35 git-tools.kak: initial git-show command 2013-04-11 23:09:42 +02:00
Maxime Coste
1b5760f1a1 delete buffer if needed when creating a scratch buffer 2013-04-11 23:09:17 +02:00
Maxime Coste
dcc054a785 git-tools: fix git-diff-show 2013-04-11 22:41:43 +02:00
Maxime Coste
3f5dc9e1cb ctags.kak: <a-c> is now zc 2013-04-11 21:17:17 +02:00
Maxime Coste
99bb24dd09 add z prefixed 'window commands'
* zz or zc for centering selection on window (replaces alt-c)
* zt and zb for placing the main selection on top/bottom
2013-04-11 21:01:27 +02:00
Maxime Coste
fb87c7ac9f add Window::display_selection_at(LineCount) 2013-04-11 21:01:00 +02:00
Maxime Coste
301921cd45 remove hooks when needed in rc files 2013-04-11 14:30:02 +02:00
Maxime Coste
107e95622d Hooks can have an (shareable) identifier, and thus be removed 2013-04-11 14:29:10 +02:00
Maxime Coste
172f46f679 idvaluemap: add a remove_all method 2013-04-11 14:27:32 +02:00
Maxime Coste
4cf7c4175a HookManager: write to debug when a hook fails 2013-04-11 13:58:09 +02:00
Maxime Coste
35d0d5b2ea exceptions: use const char* what() instead of String description() 2013-04-11 13:57:35 +02:00
Maxime Coste
c699172110 highlight strings after macros 2013-04-11 13:47:15 +02:00
Maxime Coste
8b829d1cdf display character column instead of byte column in status line 2013-04-11 13:45:28 +02:00
Maxime Coste
1398641d22 Add gt, gb and gc to goto the first/last/middle displayed line 2013-04-10 19:02:28 +02:00
Maxime Coste
9999e5698d Use the buffer manager to delete buffer, throw when a client is inserting 2013-04-10 18:54:01 +02:00
Maxime Coste
441f9a69ef InputHandler: auto leave insert mode when editor changed 2013-04-10 14:30:32 +02:00
Maxime Coste
bdd617006b add a 'debug' command, which write to the debug buffer 2013-04-10 13:45:17 +02:00
Maxime Coste
270e950cf1 sort includes directives 2013-04-09 20:05:40 +02:00
Maxime Coste
5adee4a6a7 rename assert to kak_assert to avoid collisions 2013-04-09 20:04:11 +02:00
Maxime Coste
34b8604f90 move context implementation to context.cc 2013-04-09 19:39:03 +02:00
Maxime Coste
240e0321e8 ge goto end, last character of buffer 2013-04-09 19:32:44 +02:00
Maxime Coste
7f535988f0 gg is back to goto top 2013-04-09 19:32:26 +02:00
Maxime Coste
829876a6fa Context: push_jump does not allow the same jump to be present multiple times 2013-04-09 14:29:28 +02:00
Maxime Coste
5b1839ab75 BufferIterator: allow operator{==,!=} for different buffers 2013-04-09 14:28:03 +02:00
Maxime Coste
61293e8d60 use gk and gj for goto first/last line instead of gt and gb 2013-04-09 14:23:26 +02:00
Maxime Coste
43b5bd5260 add ga binding to go to last buffer 2013-04-09 14:22:21 +02:00
Maxime Coste
7b94925898 force redraw window if needed in context_wrap 2013-04-09 14:21:48 +02:00
Maxime Coste
624c112d08 tweak prompt text 2013-04-06 15:43:33 +02:00
Maxime Coste
be9bfa479f use more explicit prompts for search and pipe, use color to validate 2013-04-06 13:02:16 +02:00
Maxime Coste
1ab8120147 refactor regex based selectors, move regex construction out of them 2013-04-05 19:28:08 +02:00
Maxime Coste
c53319ce5e refactor regex prompting commands 2013-04-05 18:29:05 +02:00
Maxime Coste
9bb9eda302 Dynamically change prompt color for regex prompt depending on regex validity 2013-04-04 19:09:34 +02:00
Maxime Coste
6e2fa38c15 InputHandler::prompt takes a color pair to use 2013-04-04 19:09:19 +02:00
Maxime Coste
f540566b1b UserInterface: status line messages are now DisplayLines
This add color support for the status line
2013-04-04 18:50:00 +02:00
Maxime Coste
6ffdfd7735 Add get_color helper function 2013-04-04 18:47:34 +02:00
Maxime Coste
1822b81d58 pass a color pair when displaying an information window 2013-04-04 14:04:38 +02:00
Maxime Coste
b58f614f40 Pass a fg and bg color when displaying a menu 2013-04-04 14:04:38 +02:00
Maxime Coste
1fd99e7e88 do not check buffer invariant in do_{erase,insert} as this cause O(n²) behaviour 2013-04-04 14:04:37 +02:00
Maxime Coste
4fbe2dc6bc compile with -pedantic option and fix warnings 2013-04-04 14:04:37 +02:00
Maxime Coste
4aa5a9a3f6 display a message in the status line when yanking 2013-04-03 19:18:17 +02:00
Maxime Coste
c6262fc5e1 use Y for concatenated yank 2013-04-03 19:14:38 +02:00
Maxime Coste
d56f6444b5 Add alt-[kK] for keeping only selections matching/not matching a given regex 2013-04-03 19:07:43 +02:00
Maxime Coste
5bb8e656c5 Editor: fix utf8 handling in prepare_insert 2013-04-03 18:52:49 +02:00
Maxime Coste
72395840f9 Makefile: hide object files 2013-04-03 18:52:16 +02:00
Maxime Coste
0395f3b9fc fix compilation with clang++ 2013-04-03 18:51:40 +02:00
Maxime Coste
161fab13f7 complete_opt: accept an optional length in completion desciptor 2013-04-02 19:57:39 +02:00
Maxime Coste
aa44d05ede add date information to git-blame 2013-04-02 18:57:02 +02:00
Maxime Coste
3a351aa436 Change list separators to ; and tuple separators to | 2013-04-02 18:56:09 +02:00
Maxime Coste
07f3bbe523 add alt-* for not smart set search pattern to selection 2013-04-02 18:46:33 +02:00
Maxime Coste
0550da2211 add <lt> and <gt> key name 2013-04-02 18:41:45 +02:00
Maxime Coste
b62c78f9e9 ConnectionAccepter: fix socket fd leak 2013-04-02 14:27:04 +02:00
Maxime Coste
76e73866e5 ParameterParser takes flags
Only implemented flag is OptionsOnlyAtStart which considers
options given after the first positional parameter as a positional one
2013-04-02 14:22:55 +02:00
Maxime Coste
0325e7f312 minor cleanup in assist function 2013-04-02 14:03:39 +02:00
Maxime Coste
7bf73b5896 OnScopeEnd: move parameter instead of copying it 2013-04-02 14:03:22 +02:00
Maxime Coste
e2d64b01d5 ClientAccepter triggers window redrawing after executing a command 2013-04-02 14:00:37 +02:00
Maxime Coste
cd16a7ff18 FlagLines triggers a window redraw when option is modified 2013-04-02 13:58:28 +02:00
Maxime Coste
e5215e7138 Window: move highlighters after options so that they can reference it 2013-04-02 13:58:04 +02:00
Maxime Coste
b9f5dbd3b5 add an OptionManagerWatcher_AutoRegister class 2013-04-02 13:57:04 +02:00
Maxime Coste
a18241a03b Extract AutoRegister logic to a helper class 2013-04-02 13:56:30 +02:00
Maxime Coste
b266035c71 fix String::String(Codepoint, CharCount) 2013-04-02 13:42:24 +02:00
Maxime Coste
e070e738f1 Set default shell to bash, as most kak files requires it 2013-04-01 03:49:30 +02:00
Maxime Coste
75fae291e1 Fix flags width handling in FlagLine highlighter 2013-04-01 03:49:30 +02:00
Maxime Coste
f4b3510b14 add git-blame command to git-tools.kak 2013-04-01 03:49:30 +02:00
Maxime Coste
6c2430ce08 FlagLines updates the lines in the option according to buffer modifications 2013-03-31 14:53:32 +02:00
Maxime Coste
22c34b79f6 Move change listener registration to BufferChangeListener_AutoRegister
DynamicSelectionList now just inherit from this class, so that
the registration logic can be shared.
2013-03-31 14:53:32 +02:00
Maxime Coste
dbbe455eb1 add git-tools.kak, with experimental git diff display as line flags 2013-03-31 14:53:32 +02:00
Maxime Coste
f09e24607a add support for adding to options instead of replacing 2013-03-31 14:53:32 +02:00
Maxime Coste
a80cee0d2c Add support for tuple Options, implement LineAndFlag using that 2013-03-29 19:35:48 +01:00
Maxime Coste
8b821205da fix BufferIterator::offset 2013-03-29 19:35:48 +01:00
Maxime Coste
585e64fd10 add swap case support with the ~ key 2013-03-29 19:35:48 +01:00
Maxime Coste
01968cb96e String: inherit from std::string rather than using it as a backend 2013-03-29 19:35:48 +01:00
Maxime Coste
1f4072dc72 use a scoped edition in Repeated so that repeated actions have a single undo group 2013-03-29 19:35:48 +01:00
Maxime Coste
deb502cb40 kakrc: define colorscheme before sourcing user config 2013-03-29 19:35:48 +01:00
Maxime Coste
08873a779a cpp.kak: fix alt_dirs handling with more than 2 directories 2013-03-29 19:35:47 +01:00
Maxime Coste
96b017f76e Minor BufferCompleter refactoring 2013-03-29 19:35:47 +01:00
Maxime Coste
417682883e use only one constructor with a default parameter for units 2013-03-27 18:42:38 +01:00
Maxime Coste
a3bc8dbc79 idvaluemap: minor style changes 2013-03-27 18:42:00 +01:00
Maxime Coste
29f79346c3 Move parameter count validation to the ParameterParser 2013-03-27 14:27:12 +01:00
Maxime Coste
a48672b3bc factor addhl/rmhl/addfilter/rmfilter completion functions 2013-03-27 14:19:07 +01:00
Maxime Coste
a437e9488b idvaluemap, FunctionGroup: consitfy completion methods 2013-03-27 14:09:09 +01:00
Maxime Coste
251f09ff89 Merge {Filter,Highlighter}Group in a FunctionGroup template 2013-03-27 13:45:22 +01:00
Maxime Coste
ee0e640384 kak_bufname env var use display_name 2013-03-26 19:28:44 +01:00
Maxime Coste
c6a1fed6b4 add regex_option highlighter, which takes a regex option name and highlight all its matches 2013-03-26 14:26:59 +01:00
Maxime Coste
996e5999ed permit do declare regex option 2013-03-26 14:26:07 +01:00
Maxime Coste
4ec9c4c32a Make TypedOption templates public 2013-03-26 13:47:14 +01:00
Maxime Coste
14933bdeaf % register uses the buffer display name 2013-03-26 13:40:04 +01:00
Maxime Coste
1982144b04 Add a special option type LineAndFlag, use it for FlagLines highlighter 2013-03-26 00:14:38 +01:00
Maxime Coste
36dc6c23a0 add default zero construction to units 2013-03-26 00:04:03 +01:00
Maxime Coste
d02133d382 extract parse_color to color.cc as str_to_color, and add color_to_str 2013-03-25 23:35:59 +01:00
Maxime Coste
9429b662ca move absolute path logic to Buffer class 2013-03-25 19:58:23 +01:00
Maxime Coste
58caeaa8a8 add a cd command 2013-03-25 19:19:44 +01:00
Maxime Coste
ce67d29871 Always use absolute path for file buffer names, compact paths for display 2013-03-25 19:11:26 +01:00
Maxime Coste
dfa5318765 fix some style problems detected by cppcheck 2013-03-25 18:44:52 +01:00
Maxime Coste
3e9a0c4c13 {grep,make}.kak: use edit! instead of trying to delete buffer 2013-03-22 18:39:48 +01:00
Maxime Coste
a160fd6984 open_fifo delete existing buffer if needed 2013-03-22 18:39:00 +01:00
Maxime Coste
d04a6b1e18 cpp.kak: alt supports an alt_dirs options for directories to search 2013-03-22 14:30:09 +01:00
Maxime Coste
07866e6ae9 show informations on uncaught std::exceptions 2013-03-22 14:29:22 +01:00
Maxime Coste
0082238c75 use canonicalized filenames for buffers 2013-03-22 14:27:30 +01:00
Maxime Coste
5bba01ca9c BufferManager notify the ClientManager when a buffer dies 2013-03-22 14:26:44 +01:00
Maxime Coste
9494fbbd87 kakrc: avoid bash features 2013-03-22 13:45:52 +01:00
Maxime Coste
a2476a8fbf setb can take a -buffer argument 2013-03-22 13:44:40 +01:00
Maxime Coste
eeadb59f7f eval,exec: -restore-selections become -draft, and restore the buffer as well 2013-03-22 13:42:29 +01:00
Maxime Coste
38a46a6682 add WinDisplay hook 2013-03-22 13:41:48 +01:00
Maxime Coste
60599917cc add a kak_selections env var, which contains all selections separated by a comma 2013-03-21 19:10:18 +01:00
Maxime Coste
e5d93c2194 BufferManager: replace Buffer* get_buffer with Buffer& get_buffer 2013-03-21 19:09:31 +01:00
Maxime Coste
df79b7610a utf8 validity is not a buffer concern 2013-03-20 19:26:46 +01:00
Maxime Coste
abe37b5fdb Add a RuntimeError hook called when a runtime_error exception is catched at client level 2013-03-20 19:11:58 +01:00
Maxime Coste
3883bffacc user defined hooks can access the hook parameter in shell with $kak_hook_param 2013-03-20 19:11:58 +01:00
Maxime Coste
d99fe87b43 Editor: fix select(Selection&, SelectMode::Replace) 2013-03-20 19:11:58 +01:00
Maxime Coste
07a2c2944f NCurses: draw a scroll bar 2013-03-20 19:11:58 +01:00
Maxime Coste
3f467ba451 BufferCompleter: preserve completions when inserting
try to narrow matches with entered prefix
2013-03-20 19:11:58 +01:00
Maxime Coste
a19a788b94 CommandManager: fix some crashes 2013-03-19 18:58:21 +01:00
Maxime Coste
9c78f02903 BufferCompleter: fix backward looping in completion candidates 2013-03-19 14:15:42 +01:00
Maxime Coste
42fae29391 Add an 'insert_hide_sel' option, which hides selection when inserting 2013-03-19 14:04:24 +01:00
Maxime Coste
f0baf35117 clang-complete: do the compilation in the buffer directory 2013-03-19 13:57:23 +01:00
Maxime Coste
ee800ad778 select_to_{,reverse}: search on other lines if needed 2013-03-18 23:47:18 +01:00
Maxime Coste
6907fcf76e more robust implementation of expand_unprintable 2013-03-18 23:35:23 +01:00
Maxime Coste
d3f586f378 DisplayBuffer::split does not check if the split is on a character boundary 2013-03-18 23:34:40 +01:00
Maxime Coste
2de0d0fccf add a reg command to set a register 2013-03-18 22:44:39 +01:00
Maxime Coste
5fe7315df9 add 'r' object alias for [] (range) 2013-03-18 22:31:05 +01:00
Maxime Coste
a11a162734 Buffer: optimize do_insert to minimize changes in m_lines vector 2013-03-18 19:45:17 +01:00
Maxime Coste
e6c635be34 DynamicSelectionList: optimize updating on buffer modification
Now that we know selections are sorted, we can get the set of selections
needing updating in log(n) time using a binary search, for modification
not changing the line count, this makes updating selections run in log(n)
instead of n.
2013-03-18 19:09:07 +01:00
Maxime Coste
354ae7ad89 Editor: keep selections sorted and use an index for the main one 2013-03-18 19:09:07 +01:00
Maxime Coste
a981d41cde Editor: replace selections().back() with main_selection() 2013-03-15 18:22:08 +01:00
Maxime Coste
5e88b7fe28 move BufferIterator on_{insert,erase} as DynamicSelectionList implementation detail 2013-03-15 14:22:42 +01:00
Maxime Coste
0c4addb40c replay_macro: parse keys only once 2013-03-15 14:16:15 +01:00
Maxime Coste
84e3c99c93 Buffer::on_erase: avoid resizing lines more than necessary 2013-03-15 14:15:29 +01:00
Maxime Coste
5dc6a36bf8 Makefile: fix link with bfd linker 2013-03-15 14:03:12 +01:00
Maxime Coste
0ca23f9ebd clang: fix auto completion when cursor is on end of line 2013-03-14 20:40:43 +01:00
Maxime Coste
17b2d8c052 NCurses: hand coded menu implementation 2013-03-14 19:19:33 +01:00
Maxime Coste
65850ff1e8 add clang.kak, providing clang based insert completion 2013-03-14 14:12:14 +01:00
Maxime Coste
066876a131 add str-list option support to decl command 2013-03-14 14:11:00 +01:00
Maxime Coste
50d9c4dfda add support for regex options, make ignored_files one 2013-03-14 13:42:07 +01:00
Maxime Coste
0b45a725e4 move remoting code to remote.cc
ClientAccepter is now Server's implementation detail and all socket logic
are isolated in remote.cc
2013-03-14 10:23:35 +01:00
Maxime Coste
b309d1df61 move complete_filename to file.cc 2013-03-13 19:39:38 +01:00
Maxime Coste
de536b80cd goto file uses the 'path' string-list option instead of hard coded paths 2013-03-13 18:52:55 +01:00
Maxime Coste
4069f42845 find_file: automatically add missing '/' and end of paths 2013-03-13 18:52:08 +01:00
Maxime Coste
17f7607a30 write_buffer: consider buffer as saved only if we used it's filename 2013-03-13 18:51:36 +01:00
Maxime Coste
0f957b3743 Editor: fix replace at end of buffer 2013-03-13 14:37:03 +01:00
Maxime Coste
c1db67e31a Buffer: minor refactoring 2013-03-13 14:36:10 +01:00
Maxime Coste
8acb25d9a4 ctags: use - instead of _ in command name 2013-03-12 19:51:08 +01:00
Maxime Coste
09e30c40e3 BufferCompleter: watch 'completions' option, and update completions when it changes 2013-03-12 19:23:41 +01:00
Maxime Coste
2440a7e82e NCurses: hook redraw on c-l 2013-03-12 18:57:12 +01:00
Maxime Coste
e428a9757f Modify network protocol to allow commands through the socket 2013-03-12 18:53:18 +01:00
Maxime Coste
17b861d78e NCurses: handle empty items in menu_show 2013-03-11 14:20:28 +01:00
Maxime Coste
ddc894ccfe Add an experimental configurable input completion fonction
The completions option (a std::vector<String>) is used for
completions candidates, if it's first element matches the current
cursor position and buffer timestamp.
2013-03-11 14:20:28 +01:00
Maxime Coste
4db6e3e917 add kak_timestamp env var to access current buffer timestamp 2013-03-11 14:20:28 +01:00
Maxime Coste
8cc9a44d47 minor cleanups in complete_word 2013-03-11 14:20:28 +01:00
Maxime Coste
eab2cc240a InputHandler: complete_word knows best when not to complete 2013-03-09 13:23:47 +01:00
Maxime Coste
89ba8535e2 InputHandler: extract word completion algorithm 2013-03-08 18:43:14 +01:00
Maxime Coste
cfafe203e2 NCurses: fix redrawing when info or menu is hidden 2013-03-08 18:42:43 +01:00
Maxime Coste
1e8a109d0d Use some builtins colors aliases instead of hardcoded values for highlighters 2013-03-06 20:33:20 +01:00
Maxime Coste
e4240448b1 colalias: always override 2013-03-06 20:30:02 +01:00
Maxime Coste
f677d4ba32 Use a ColorPair in DisplayAtoms instead of separate fg/bg colors 2013-03-06 20:28:02 +01:00
Maxime Coste
594ee65949 do not redraw the whole screen each time 2013-03-06 19:07:10 +01:00
Maxime Coste
a10bfed9e5 ncurses: fix unicode handling in status line 2013-03-06 19:03:58 +01:00
Maxime Coste
5ff22d44be Add utf8_iterator::advance(CharCount, utf8_iterator end) 2013-03-06 19:03:43 +01:00
Maxime Coste
4712765e8a Add FlagLines highlighter
This highlighter show a given flag in front of each lines whose number
is present in a given int-list option
2013-03-06 14:27:33 +01:00
Maxime Coste
fb7234544e HighlightersFactories takes back a Window parameter 2013-03-06 14:27:33 +01:00
Maxime Coste
558f32d2d5 throw a runtime error when a wrong type is requested for an option 2013-03-06 14:27:33 +01:00
Maxime Coste
0e2ba188dc Add support for int list options, specified using a comma seperated list of int 2013-03-06 14:27:00 +01:00
Maxime Coste
3e7344fb14 remove commented line in ncurses.cc 2013-03-05 19:35:40 +01:00
Maxime Coste
ca1d957829 fix ignored_files default value 2013-03-05 19:35:40 +01:00
Maxime Coste
e5dc850274 log to debug when make_regex_ifp catch a regex_error 2013-03-05 19:35:39 +01:00
Maxime Coste
0c4eb7a861 simplify how string -> option conversion are written, free functions instead of template specialization 2013-03-05 19:35:39 +01:00
Maxime Coste
09cf5acb23 Add support for boolean options 2013-03-05 19:03:42 +01:00
Maxime Coste
fac222a427 Strongly typed options support
* non builtins options require declaration using the decl command

* At the moment, only int and string options are supported, however
the goal of this change is to provide a consistent way to support
more complex options, namely lists and booleans
2013-03-05 18:49:26 +01:00
Maxime Coste
a36befd653 Use colors instead of underline to highlight selections 2013-03-01 19:31:14 +01:00
Maxime Coste
d23694e31f Do not use a factory for window builtins highlighters
This helps cleanup up the code, as factories no longer takes
a window as parameter.
2013-03-01 19:15:05 +01:00
Maxime Coste
8ef79c41bd show_line_numbers does not need a window 2013-03-01 14:30:30 +01:00
Maxime Coste
6b812d9f6c Window: segregate builtins highlighters from the others 2013-03-01 14:29:59 +01:00
Maxime Coste
6318f2268f assistant: no need for raw strings 2013-03-01 14:29:28 +01:00
Maxime Coste
3a60e633a4 safe_ptr have no overhead when KAK_DEBUG is not defined 2013-02-28 18:54:15 +01:00
Maxime Coste
298926a16e Editor::multi_select: reserve some vector space in advance 2013-02-28 18:51:58 +01:00
Maxime Coste
161e32e137 fix warning 2013-02-28 18:51:24 +01:00
Maxime Coste
849f225e70 use a 16K buffer when reading from fifo 2013-02-28 18:51:11 +01:00
Maxime Coste
26826b981d grep: highlight columns when present 2013-02-27 23:50:57 +01:00
Maxime Coste
9f9ad58b39 utf8::dump uses a copy of the output iterator instead of a reference 2013-02-27 23:50:33 +01:00
Maxime Coste
8e07e00f18 ShellManager: remove unneeded end of lines when writing stderr 2013-02-27 21:31:48 +01:00
Maxime Coste
72531f2df0 string: remove unneeded headers 2013-02-27 21:26:12 +01:00
Maxime Coste
9ea11394bc reorganize keymap 2013-02-27 21:21:11 +01:00
Maxime Coste
771241ad97 use 'Q' for replay macro 2013-02-27 21:13:06 +01:00
Maxime Coste
4ad8941563 Editor: fix move_selection(LineCount) when current column is after next line end 2013-02-27 21:09:48 +01:00
Maxime Coste
8606fdae5d NCurses: go back to non ncursesw/ headers 2013-02-27 21:05:17 +01:00
Maxime Coste
43bc8314fb ParameterParser: refactoring, simplify 2013-02-27 20:51:44 +01:00
Maxime Coste
09901d455e Add 'gf' (goto file) functionality 2013-02-27 19:58:38 +01:00
Maxime Coste
99475f93d9 String: add rbegin/rend methods 2013-02-27 19:58:24 +01:00
Maxime Coste
f82a2e22a1 Containers utils: use Container&& in order to accept temporaries 2013-02-27 19:58:07 +01:00
Maxime Coste
2f410f62e4 Add String Range::content() const 2013-02-27 19:11:25 +01:00
Maxime Coste
9230667c11 Add " and ' support to object selection 2013-02-27 19:08:13 +01:00
Maxime Coste
be0c5ddf49 minor performance tweaks 2013-02-27 19:03:33 +01:00
Maxime Coste
cd8c36fc50 Add a debug option to Makefile, and use KAK_DEBUG define to remove debug code 2013-02-27 19:02:01 +01:00
Maxime Coste
6f48407f55 Use current locale 2013-02-27 19:01:07 +01:00
Maxime Coste
2854984c79 use std::isalnum for is_word implementation in order to support unicode 2013-02-26 18:54:11 +01:00
Maxime Coste
b68cc3cd3c NCurses: fix unneeded last line when displaying info box 2013-02-26 18:53:29 +01:00
Maxime Coste
0f413607c2 Fix utf8 handling when moving selection up/down 2013-02-26 18:52:49 +01:00
Maxime Coste
3d19111570 Use unicode box drawing character for the assistant 2013-02-26 14:28:42 +01:00
Maxime Coste
ffc5a4a334 Add a String(Codepoint, CharCount) constructor 2013-02-26 14:28:20 +01:00
Maxime Coste
2726d11108 handle SIGFPE, SIGQUIT and SIGTERM as well as SIGSEGV 2013-02-26 14:13:37 +01:00
Maxime Coste
6d4552e7d8 Add an expand_unprintable highlighter which replaces unprintable char with U+XXXX 2013-02-26 14:12:21 +01:00
Maxime Coste
c343407465 Fix utf8 handling in Editor::insert when replacing 2013-02-26 14:06:25 +01:00
Maxime Coste
7865223587 Add utf8::character_start function 2013-02-26 14:05:51 +01:00
Maxime Coste
9b3bc8523b Use ncursesw in order to get correct utf8 handling 2013-02-26 14:05:16 +01:00
Maxime Coste
dc7227b983 Add the most important missing feature of Kakoune 2013-02-25 19:38:20 +01:00
Maxime Coste
dc8803e41b String: use a CharCount instead of a size_t in String(char, CharCount) 2013-02-25 19:25:32 +01:00
Maxime Coste
8f3d2ae089 main: catch all exceptions 2013-02-22 18:45:59 +01:00
Maxime Coste
77dc9955d3 Paste: use count for repetition 2013-02-22 18:45:27 +01:00
Maxime Coste
4b11f73f1e buffer: remove too slow check from check_invariant 2013-02-22 18:38:53 +01:00
Maxime Coste
5c74f98757 Use S for regex splitting, and alt-s for line splitting 2013-02-22 18:37:34 +01:00
Maxime Coste
5f446d9aec try to merge selections when begining incremental insertion 2013-02-21 18:44:17 +01:00
Maxime Coste
d647e817a4 grep,make: bind normal mode return to jump 2013-02-21 13:39:31 +01:00
Maxime Coste
efc0a8bc07 grep,make: support specifying client with toolsclient option
When toolsclient option is set, make and grep opens their buffer
in the specified client instead of the current one.
2013-02-21 13:38:12 +01:00
Maxime Coste
901d5ea1be Add mail.kak for mail file highlighting 2013-02-21 13:36:25 +01:00
Maxime Coste
cf01f0ed7a Avoid recursive macro calls 2013-02-21 13:35:20 +01:00
Maxime Coste
9306a89deb Fix macro recording on the same register, replace instead of appending. 2013-02-21 13:34:34 +01:00
Maxime Coste
6573f16dd9 Buffer: commit current undo group before attempting to undo anything 2013-02-20 14:23:52 +01:00
Maxime Coste
9f4498e035 Buffer: replace {begin,end}_undo_group with a single commit_undo_group method 2013-02-20 14:20:16 +01:00
Maxime Coste
682e4faff0 select and split operations use the search pattern register 2013-02-20 14:04:46 +01:00
Maxime Coste
02b01e2f0a ShellManager: catch exception thrown by env var functors 2013-02-19 19:06:13 +01:00
Maxime Coste
a83731c8e1 search: fix empty search string, use previous pattern 2013-02-19 19:05:13 +01:00
Maxime Coste
c451dd07c6 InputHandler: do not put empty lines in history 2013-02-19 19:04:36 +01:00
Maxime Coste
18aac3d4e8 Add '*' binding, which (smart) copy current selection to search pattern 2013-02-19 19:04:09 +01:00
Maxime Coste
a453ddaf37 Add support for Home/End key in prompts 2013-02-19 13:50:27 +01:00
Maxime Coste
b08749285e move status line generation code to client manager 2013-02-18 19:03:39 +01:00
Maxime Coste
b43fdc7eb6 Add macro recording/replay support 2013-02-18 18:58:07 +01:00
Maxime Coste
577734dae7 expose exec_keys function in commands.hh 2013-02-18 18:57:08 +01:00
Maxime Coste
9936ace0db input_handler: ask dimensions to ui instead of window 2013-02-18 14:13:52 +01:00
Maxime Coste
fc2dd599a3 Move last insert state from context to input handler 2013-02-18 14:07:30 +01:00
Maxime Coste
0e081a76c1 make keymap definition more readable using a select helper function 2013-02-18 14:01:24 +01:00
Maxime Coste
67971995f8 Fix class/struct mismatches 2013-02-18 14:00:43 +01:00
Maxime Coste
bd5955c737 grep: remove enventual \r 2013-02-13 14:32:30 +01:00
Maxime Coste
4eea0a4ce1 Window: try to show as much of the selection as possible 2013-02-12 19:01:25 +01:00
Maxime Coste
cb26948ad3 ClientManager: move the Client inner class detail in the cpp file 2013-02-07 19:25:42 +01:00
Maxime Coste
32e6184210 context_wrap: create a DynamicSelectionList only when needed 2013-02-07 19:25:07 +01:00
Maxime Coste
2f9041b842 Editor: fix warning 2013-02-07 13:37:22 +01:00
Maxime Coste
6c7d646d35 exec keys: push_jump if editor has changed 2013-02-07 13:35:21 +01:00
Maxime Coste
785abfbad5 ctags.kak: do not automatically enable info tooltips 2013-01-31 19:00:02 +01:00
Maxime Coste
1c301482d5 tweak buffer unit test 2013-01-31 18:59:23 +01:00
Maxime Coste
edef8e4e98 Remove Set and use unordered_set 2013-01-31 18:58:25 +01:00
Maxime Coste
7f02ef334f add some tests for Key functions 2013-01-30 19:16:36 +01:00
Maxime Coste
bc63be3388 open_fifo uses fcntl for more portable CLOEXEC bit setting 2013-01-30 19:08:16 +01:00
Maxime Coste
45367bf447 ctags.kak: tweak auto info 2013-01-30 19:05:52 +01:00
Maxime Coste
c9b113fd5f InputHandler: add some new hooks 2013-01-30 19:04:03 +01:00
Maxime Coste
de0f765498 Keys: add key_to_str function 2013-01-30 19:03:11 +01:00
Maxime Coste
045aa0c7ec style fix 2013-01-30 00:27:22 +01:00
Maxime Coste
e278196e99 ctags: initial auto fonction documentation support 2013-01-30 00:24:10 +01:00
Maxime Coste
00a9cdfc90 Context: remove some unused code 2013-01-29 23:16:58 +01:00
Maxime Coste
8933109cc5 Context: fix unintialized m_input_handler 2013-01-29 19:13:39 +01:00