Commit Graph

1655 Commits

Author SHA1 Message Date
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
Maxime Coste
252f875926 fix sort_and_merge_overlapping 2013-01-29 19:05:40 +01:00
Maxime Coste
84ea452ed2 info command take a -anchor <pos> instead of -inline params 2013-01-29 18:56:14 +01:00
Maxime Coste
f8209e3b52 fix contains for empty containers 2013-01-29 18:55:32 +01:00
Maxime Coste
3171ab0c52 NCurses: fix multiline info 2013-01-29 14:24:42 +01:00
Maxime Coste
2235944e60 Add NormalIdle hook support 2013-01-29 13:58:19 +01:00
Maxime Coste
38a67e72bc Do not pass a context to InputHandler methods 2013-01-29 13:49:01 +01:00
Maxime Coste
94bbf47cd4 InputHandler have it's own context 2013-01-28 13:48:34 +01:00
Maxime Coste
3d430e14c4 Buffer: small fix in apply_modification 2013-01-28 13:45:32 +01:00
Maxime Coste
54725ebcca Buffer::do_insert: fix on_insert call when inserting at the end 2013-01-24 14:08:24 +01:00
Maxime Coste
28cb78bed1 Editor: refactor InsertMode::Replace 2013-01-23 18:58:43 +01:00
Maxime Coste
410067282a Buffer: end is either one past last character, or one past last line 2013-01-23 18:52:42 +01:00
Maxime Coste
72cc61c987 add undo unit_test and fix Buffer 2013-01-23 14:39:33 +01:00
Maxime Coste
3404366b65 add more asserts 2013-01-23 14:39:33 +01:00
Maxime Coste
f14bc5e310 Buffer: small style fixes 2013-01-23 13:47:45 +01:00
Maxime Coste
9dbc6adcda add a SIGSEGV handler 2013-01-23 13:46:18 +01:00
Maxime Coste
2f9e061252 assert: add some debug info in the message 2013-01-23 13:45:44 +01:00
Maxime Coste
4497767492 NCursesUI::get_key(): move getch_iterator as a local type 2013-01-22 14:29:16 +01:00
Maxime Coste
0c8832c42a LineAndColumn::operator+= is not constexpr 2013-01-22 14:28:43 +01:00
Maxime Coste
1b53b92267 Buffer: check that newlines are at the end of lines 2013-01-22 14:28:15 +01:00
Maxime Coste
f7038980a0 Add kak_cursor_{line,column} env var 2013-01-21 13:58:54 +01:00
Maxime Coste
9002059c0d Window: fix display position, count utf8 characters for column 2013-01-17 19:49:49 +01:00
Maxime Coste
f1b6108367 NCurses: use default background for '~' 2013-01-17 19:49:48 +01:00
Maxime Coste
9c2bbe218b replace char: fix unicode handling 2013-01-17 19:49:48 +01:00
Maxime Coste
44ca4d23de Fix sort_and_merge_overlapping 2013-01-17 19:49:48 +01:00
Maxime Coste
3f01f4bdf5 Add some documentation to InputHandler 2013-01-17 14:27:32 +01:00
Maxime Coste
d1f15123e4 InputHandler: minor code cleanup 2013-01-17 14:22:24 +01:00
Maxime Coste
edb5dbc56f move {exec,eval}_string common code to a helper context_wrap function 2013-01-17 14:06:06 +01:00
Maxime Coste
c45838cc57 Move Insertion Hooks handing to the input handler 2013-01-17 13:58:57 +01:00
Maxime Coste
cedb0d18a3 exec and eval accepts a restore-selection parameter 2013-01-17 13:58:09 +01:00
Maxime Coste
621be2ceab Hooks now takes a non-const context 2013-01-17 13:45:43 +01:00
Maxime Coste
bdc47ddef8 NCursesUI: redraw becomes a member 2013-01-15 14:16:45 +01:00
Maxime Coste
93cad94330 InputHandler: Insert mode calls 'InsertIdle' hook when idle 2013-01-15 14:15:12 +01:00
Maxime Coste
12ce590f18 Context: add a hooks method similar to the options one 2013-01-14 19:26:44 +01:00
Maxime Coste
a1998dac7a InputHandler: use a timer for word completion instead of calling it at each insertion 2013-01-14 19:17:37 +01:00
Maxime Coste
90eeb7b8a7 EventManager: add support for timers 2013-01-14 19:07:38 +01:00
Maxime Coste
eaaf88db1d rename StronglyTypedInteger to more accurate StronglyTypedNumber 2013-01-14 18:51:45 +01:00
Maxime Coste
3d00f398fe NCurses: redraw after menu/info window is modified 2013-01-14 18:51:07 +01:00
Maxime Coste
310ec1f791 move input watching responsibility into UserInterface implementations 2013-01-14 18:50:17 +01:00
Maxime Coste
d2f0e2de66 RemoteClient owns the FDWatcher of it's socket 2013-01-11 18:44:02 +01:00
Maxime Coste
914ede7a82 Add and use a Set template class for recuring small sets 2013-01-11 14:28:13 +01:00
Maxime Coste
79d28e68dc Refactor EventManager
Watching a file descriptor is now done using a FDWatcher object
2013-01-10 19:10:42 +01:00
Maxime Coste
bba7152063 Add backward search support (bound to alt-/) 2013-01-08 18:46:45 +01:00
Maxime Coste
f77509d498 add sh.kak for shell script highlighting 2013-01-08 14:01:22 +01:00
Maxime Coste
59941bcfa9 Make: fix userconfig target 2013-01-08 14:00:13 +01:00
Maxime Coste
3f7bf82cde Support for selecting to surrounding object begin/end with [ and ] 2013-01-07 18:53:27 +01:00
Maxime Coste
8d4678a82e Autoname client on creation, and access client name from shell with $kak_client 2013-01-07 13:59:09 +01:00
Maxime Coste
7acd4e3e6a minor code cleanup 2013-01-06 21:58:02 +01:00
Maxime Coste
9efc32596b make: use a makecmd option 2013-01-06 19:21:42 +01:00
Maxime Coste
f3640a2d03 alt-r rotates selections 2013-01-05 18:26:57 +01:00
Maxime Coste
4b649d386c various code style fixes 2013-01-04 18:39:13 +01:00
Maxime Coste
5939eb219f add client.kak providing 'new' command for opening a new client
Autodetect tmux, use tmux if we are in a tmux session, else fallback to
urxvt.
2013-01-04 18:31:37 +01:00
Maxime Coste
03d32c2e2d tweak kakrc highlighting 2013-01-03 18:53:04 +01:00
Maxime Coste
08fd946c07 Add a nop command to avoid accidental shell output evaluation 2013-01-03 18:52:07 +01:00
Maxime Coste
f84e46f805 tweak errjump command 2013-01-03 18:47:51 +01:00
Maxime Coste
ae9aadb07d Fix captures preservation in Editor 2013-01-03 18:47:02 +01:00
Maxime Coste
2195d59b49 refactoring selectors 2013-01-03 14:30:14 +01:00
Maxime Coste
4f6507b808 Highlight last selection differently 2013-01-03 14:01:34 +01:00
Maxime Coste
0045456f87 alt-n replace last selection with next match 2013-01-03 14:00:59 +01:00
Maxime Coste
02b9fcc3df Editor: add a ReplaceLast select mode 2013-01-03 14:00:31 +01:00
Maxime Coste
9fb0129061 Editor: keep last selection as last when sorting
sort selections 'circularly', keeping the last one
at the end of the list.
2013-01-03 13:59:53 +01:00
Maxime Coste
a9d5f126a0 Editor: preserve captures accross movements 2013-01-02 13:49:02 +01:00
Maxime Coste
476363bf0d Editor: cleanup check_invariants calls 2012-12-31 18:36:28 +01:00
Maxime Coste
074a21463b add a current search highlighter 2012-12-31 14:37:11 +01:00
Maxime Coste
d5582b0df4 add incsearch option to choose if incremental search is enabled 2012-12-31 14:12:00 +01:00
Maxime Coste
76c3246642 Add Editor::select(const Selection&, SelectMode) 2012-12-31 14:06:20 +01:00
Maxime Coste
4e69ec078d minor cleanup 2012-12-31 13:57:21 +01:00
Maxime Coste
18b35a3ab3 Editor: merge_overlapping -> sort_and_merge_overlapping 2012-12-31 13:56:52 +01:00
Maxime Coste
dc9635a247 Fix join on last line (it appended a trailing space) 2012-12-31 13:44:01 +01:00
Maxime Coste
fe363094cf support count in search next, and only push jump in replace mode 2012-12-31 13:42:59 +01:00
Maxime Coste
2b2474b2d1 add a force mode to delete buffer (db!) 2012-12-28 14:07:35 +01:00
Maxime Coste
cb80ae139b IncrementalInserter: fix append mode when on line end 2012-12-28 14:06:56 +01:00
Maxime Coste
28cf772deb tweak window status line format 2012-12-28 13:53:00 +01:00
Maxime Coste
9531fd5915 Buffer loses the 'New' flag when written 2012-12-28 13:52:19 +01:00
Maxime Coste
d4f155cae7 new clients always takes last used buffer, support multiple file on command line 2012-12-28 13:51:14 +01:00
Maxime Coste
8f5be9bf91 BufferManager: registering buffers are front inserted 2012-12-28 13:50:02 +01:00
Maxime Coste
030df1c4be IncrementalInserter: preserve captures 2012-12-27 19:11:42 +01:00
Maxime Coste
8bfb7da674 fix splitting with inverted selection 2012-12-27 18:56:06 +01:00
Maxime Coste
41979c91f4 Editor: when replacing, select inserted text 2012-12-27 18:54:52 +01:00
Maxime Coste
ac778c8aa2 select_matching: fix when matching is the first character 2012-12-27 13:41:45 +01:00
Maxime Coste
f3a7c76c4e add a -n option prevent kakrc from being sourced 2012-12-19 18:57:10 +01:00
Maxime Coste
2ab9b474be Client: catch errors when executing init commands 2012-12-19 18:56:47 +01:00
Maxime Coste
6c901e9152 Buffer: close undo group when saved 2012-12-19 18:56:20 +01:00
Maxime Coste
63d30a30d5 support -e switch for initial command to execute 2012-12-18 21:41:13 +01:00
Maxime Coste
26632726ad Support initial command passing when a client is connecting 2012-12-18 21:20:36 +01:00
Maxime Coste
9ca69820ac do_go: support append mode on go to top/bottom, ignore case 2012-12-18 19:12:24 +01:00
Maxime Coste
6cc4ec796e editor: support select mode on select(BufferIterator) 2012-12-18 19:12:15 +01:00
Maxime Coste
cf7e6bdd07 join: preserve multiple selections 2012-12-18 19:00:55 +01:00
Maxime Coste
43ad920bd8 menu commands has a -select-cmds option
when this option is given, menu expect three argument per entry
instead of two, the last one being the command to run when the
entry is selected, but not yet validated.
2012-12-15 19:11:22 +01:00
Maxime Coste
df14427210 NCurses: info window tries to avoid the menu one 2012-12-15 19:11:04 +01:00
Maxime Coste
fd09e8a2de NCurses: some code refactoring 2012-12-15 18:32:56 +01:00
Maxime Coste
b090465e80 Command line parsing: support empty strings 2012-12-15 17:47:50 +01:00
Maxime Coste
d208067589 InputHandler: call callback on abort and on selected element change as well 2012-12-14 19:38:11 +01:00
Maxime Coste
3184159572 info: support a -inline option
By default display info box above command line, full width
(like menu), in inline mode, display the info box close
to cursor, using only needed width.
2012-12-14 19:25:27 +01:00
Maxime Coste
9236c87842 UserInterface: add info box support
using the info command, you can display an arbitrary string
in a tooltip box.
2012-12-14 19:04:34 +01:00
Maxime Coste
8e170e4385 optimize merge_overlappings
assume selections are sorted, so we have a linear complexity algorithm
instead of O(n²).
2012-12-13 18:50:27 +01:00
Maxime Coste
3aee1c37fb perf tweak in BufferIterator 2012-12-13 18:50:27 +01:00
Maxime Coste
bf07d2576e minor refactoring in highlight_range 2012-12-13 18:50:27 +01:00
Maxime Coste
31d2cfa9a1 ctags.kak: avoid brackets in search pattern 2012-12-13 18:50:27 +01:00
Maxime Coste
1c94064713 DynamicSelectionList: derive from SelectionList
the previous implementation did not preserve invariant
either, so we'd better use less code.
2012-12-13 18:50:27 +01:00
Maxime Coste
57ad454b53 tweak cpp highlighting 2012-12-13 18:50:27 +01:00
Maxime Coste
c74b44f540 change replace char behaviour, now replace each selected chars 2012-12-13 18:50:27 +01:00
Maxime Coste
777a79d37c File completion: when no files match entered text as prefix, try as regex 2012-12-13 18:50:27 +01:00
Maxime Coste
cfd7ee049a move selection updating code out of selection, to DynamicSelectionList
this avoids a lot of unnecessary (add|remove)_change_listener as
creating temporary Selections do not call that anymore.

Use can choose between a SelectionList which or a DynamicSelectionList
depending on wethear the buffer will be modified or not during the
selections lifetime.
2012-12-13 18:50:27 +01:00
Maxime Coste
e36bc74f43 do_select: do not propagate errors on incremental search 2012-12-13 18:50:27 +01:00
Maxime Coste
892b65b355 overlaps takes Range parameters instead of Selection 2012-12-13 18:49:29 +01:00
Maxime Coste
48c9d89585 tweak git commit message highlighting 2012-12-13 18:49:29 +01:00
Maxime Coste
969a1213c4 Makefile: add a userconfig target
make userconfig takes care of creating $XDG_CONFIG_HOME/kak/autoload
and populate it with links to files in the rc directory
2012-12-13 18:49:29 +01:00
Maxime Coste
92c4a9abce Prompt: when completion has only one candidate, next tab starts a new completion 2012-12-13 18:49:29 +01:00
Maxime Coste
bc1a90d4f5 file completion: disable ignored files when entered prefix matches. 2012-12-13 18:49:29 +01:00
Maxime Coste
b63c658da5 remote.cc: move write function as member of Message 2012-12-13 18:49:29 +01:00
Maxime Coste
db3a953961 code cleanup in remote.cc 2012-12-13 18:49:29 +01:00
Maxime Coste
9230ccc087 the shell used for command execution can be changed using the 'shell' option 2012-12-13 18:49:29 +01:00
Maxime Coste
33f87db553 minor code cleanup in do_select_object 2012-12-13 13:25:39 +01:00
Maxime Coste
8223679247 select/split: check expression is not empty 2012-12-13 13:25:21 +01:00
Maxime Coste
7cc66ee64d push current selection on search 2012-12-13 13:24:38 +01:00
Maxime Coste
d0c800a7d7 Support nested {Filters,Highlighter}Group 2012-12-09 18:58:58 +01:00
Maxime Coste
7d6a48f43a ncurses.cc: handle ascii del as backspace 2012-12-09 14:31:19 +01:00
Maxime Coste
afc8ad77e8 InputHandler: tweak prefix completion behaviour 2012-12-07 19:20:26 +01:00
Maxime Coste
158f5a5c84 extract ParametersParser to it's own file 2012-12-07 19:20:26 +01:00
Maxime Coste
d25bafa95d grep.kak: configurable grep command, search selection when no params 2012-12-07 19:20:26 +01:00
Maxime Coste
c000ca2220 source user kakrc after autoloads, so that user can override options 2012-12-07 19:19:45 +01:00
Maxime Coste
ff1f9f662d cleanup {make,grep}.kak 2012-12-07 19:19:45 +01:00
Maxime Coste
b81ea0bc92 PromptHandler now call callback when edited and aborted.
Used for a new feature: incremental search
2012-12-06 13:33:26 +01:00
Maxime Coste
3438ba7ec3 *scratch* buffer use undo 2012-12-05 19:22:07 +01:00
Maxime Coste
479bb9df2c fail nicely when trying to open a directory 2012-12-05 13:59:08 +01:00
Maxime Coste
ce6e864772 'exec' and (resurected) 'eval' commands can take a '-client' parameter 2012-12-03 18:57:57 +01:00
Maxime Coste
cf39835805 add 'name' command to set current client name 2012-12-03 18:57:23 +01:00
Maxime Coste
4a3f9d6187 ClientManager: support naming clients and accessing client's context by name 2012-12-03 18:56:53 +01:00
Maxime Coste
e8df81a39d RemoteClient: call get_key soon so that it may process a resize before size change checks are done 2012-12-03 18:51:28 +01:00
Maxime Coste
8724a12dc1 NCurses: do not resize directly in signal handler, malloc may not be working there 2012-12-03 18:50:44 +01:00
Maxime Coste
9e3c1c74c5 EventManager: fix forced event processing
previous implementation could drop some forced events.
2012-12-03 18:49:09 +01:00
Maxime Coste
b23af02ec4 fix quit modified file behaviour 2012-12-03 13:33:05 +01:00
Maxime Coste
b764a0a63e Selection: refactoring, move CaptureList to Selection 2012-11-30 18:32:49 +01:00
Maxime Coste
956ac60d4a add an ignored_files regex option whose matches are not used for completion 2012-11-29 20:09:37 +01:00
Maxime Coste
33482b0979 Add configurable prompt completion behaviour
If option 'complete_prefix' is non 0, then completion first
use completion candidates common prefix, then circle through
candidates.
2012-11-29 19:56:34 +01:00
Maxime Coste
7dc634444d Fix InputMode::Prompt blocking behaviour when inserting register 2012-11-29 19:03:17 +01:00
Maxime Coste
a6f0d53dbf Remote unused Context::change_ui 2012-11-29 19:03:17 +01:00
Maxime Coste
acbe45e294 local client forks in destructor so that the kak server detaches from terminal 2012-11-29 19:03:17 +01:00
Maxime Coste
16b8f19db3 use more portable fcntl method for FD_CLOEXEC bit, enable it on forgotten sockets 2012-11-29 18:55:08 +01:00
Maxime Coste
0955ef5eb0 add an empty buffer unit test 2012-11-28 20:10:49 +01:00
Maxime Coste
3a4859ecba ncurses: avoid refering to dead NCursesUI in signal handler 2012-11-27 18:54:27 +01:00
Maxime Coste
4c1b48e314 InputHandler: InputModes no longer die directly on mode change, they survive until end of on_key 2012-11-27 18:52:43 +01:00
Maxime Coste
dc268758dd fix cpp indent filter 2012-11-27 14:03:21 +01:00
Maxime Coste
6ca530b5cc EventManager: refactor (again) 2012-11-27 13:57:03 +01:00
Maxime Coste
f1b15ef86b fix buffer creation on empty file 2012-11-27 13:39:35 +01:00
Maxime Coste
557128b641 IncrementalInsert::move_cursors: use overloaded for LineCount/CharCount editor implementation 2012-11-26 19:38:07 +01:00
Maxime Coste
cad4d3c01e fix InsertMode::OpenLineBelow behaviour in prepare_insert 2012-11-26 19:24:38 +01:00
Maxime Coste
cee0a2d128 Append on end of line now appends to current line 2012-11-26 19:23:50 +01:00
Maxime Coste
e77ca7a4be minor code simplification 2012-11-26 18:50:34 +01:00
Maxime Coste
91d2cc38e5 EventManager: avoid erasing an event handler while it may be in use 2012-11-26 14:08:27 +01:00
Maxime Coste
52ee8b46ae fix crlf file reading 2012-11-26 13:36:43 +01:00
Maxime Coste
84db1e2b8c Editor: fix replacement beheviour just before end of line 2012-11-23 19:13:47 +01:00
Maxime Coste
dca05ecc73 small code tweak 2012-11-23 18:48:04 +01:00
Maxime Coste
9c99c238e8 rewrite file opening code using mmap, opening big files is much much faster 2012-11-23 18:43:10 +01:00
Maxime Coste
c32a7b9b74 Buffer takes a vector of lines as initial content 2012-11-23 18:42:07 +01:00
Maxime Coste
53be5c87d2 String: add non const front() and back() methods 2012-11-23 18:41:33 +01:00
Maxime Coste
6a7193cf63 filter: minor code cleanup 2012-11-23 18:35:05 +01:00
Maxime Coste
ecd556db59 NCurses: use Default bg color for status line 2012-11-23 13:46:39 +01:00
Maxime Coste
2523c4955b buffer: increment timestamp on notify saved 2012-11-23 13:41:07 +01:00
Maxime Coste
d2f811a8d5 Refactor filter and highlighter registry into a common template 2012-11-23 13:40:20 +01:00
Maxime Coste
11e885e5a5 Cleanups and minor refactoring on Buffer 2012-11-22 18:54:37 +01:00
Maxime Coste
73c446e379 code style cleanup in CommandManager 2012-11-22 14:28:14 +01:00
Maxime Coste
7bcd0353cb ClientManager: store client with a unique_ptr 2012-11-22 14:17:46 +01:00
Maxime Coste
08ad8e8a40 move Window ownership to the ClientManager instead of the Buffer 2012-11-22 14:08:55 +01:00
Maxime Coste
3b5530ac09 rename (hook|option)_manager to (hook|option)s.
And Global(Hook|Option)Manager to Global(Hook|Option)s
2012-11-22 13:50:29 +01:00
Maxime Coste
e981fb7957 cpp.kak: use regex filter to handle indentation 2012-11-21 19:07:41 +01:00
Maxime Coste
ff4e907fa9 fix trailing '"' in make.kak 2012-11-21 19:01:41 +01:00
Maxime Coste
d331856fb3 refactor/cleanup NCursesUI::menu_show 2012-11-21 19:01:13 +01:00
Maxime Coste
9d04c773c1 CommandManager: diagnose unterminated strings 2012-11-21 13:56:52 +01:00
Maxime Coste
6bbbd2543a move wrong_argument_count to commands.cc, where it is used 2012-11-21 13:44:43 +01:00
Maxime Coste
d1fade5c9e Buffer: replace reset_undo_data with a NoUndo flag 2012-11-21 13:43:10 +01:00
Maxime Coste
ac6171686d minor fixes to buffer constructor 2012-11-21 13:37:36 +01:00
Maxime Coste
985464bee5 Fix FIFO double deregistering issue when closing the buffer after EOF
When a fifo was closed, the fifo event handler would close the fd and
unregister it from the event handler, however the hook on BufClose
did that as well without checking if the fd was still refering to the
fifo.

Now we use a Buffer flag Fifo to tag the buffer as still linked to
a fifo so that the BufClose hook do not close and unregister a second
time
2012-11-20 19:48:27 +01:00
Maxime Coste
8bbfbc8c72 Buffer: replace Buffer::Type with Buffer::Flags 2012-11-20 19:47:56 +01:00
Maxime Coste
0b14f387d4 fix error handling in ncurses resize code 2012-11-20 18:55:44 +01:00
Maxime Coste
95cc08a19e More type safety on SelectFlags 2012-11-20 18:55:17 +01:00
Maxime Coste
533079c389 Let client manager handle deleting client 2012-11-20 18:54:35 +01:00
Maxime Coste
713fa9d406 more exception safety with file descriptors 2012-11-20 18:52:36 +01:00
Maxime Coste
7c69d170df tweak kakrc highlighting 2012-11-20 14:14:54 +01:00
Maxime Coste
4dc333c8b3 minor cleanups 2012-11-20 14:14:32 +01:00
Maxime Coste
0ca66e3bf9 Add indent/deindent binding (> and <) 2012-11-19 19:22:11 +01:00
Maxime Coste
1602fcf012 Remote: read now retry when it did not get all the expected data 2012-11-19 19:07:32 +01:00
Maxime Coste
fe98ba7494 add some debug output to RemoteUI 2012-11-19 19:06:32 +01:00
Maxime Coste
3e53ebb5d6 alt-space without numeric parameter now flips selections, inverting first and last char 2012-11-19 19:03:56 +01:00
Maxime Coste
07e5655ac1 write_debug automatically appends an eol to the message 2012-11-19 19:03:01 +01:00
Maxime Coste
c636a291bd Add a regex filter
regex filter takes three arguments: <line_match> <insert_match> <replacement>
<line_match> is checked from begining of line to point of insertion
<insert_match> is checked on the inserted text (usually only one char)
<replacement> is used to replace the inserted text, it can use $1..9
for captures in line_match, and $c to specify the cursor position.

for example, ':addfilter regex .* \( ($c)' makes inserting an opening
parens insert the closing one as well, keeping the insertion cursor
in the right spot.
2012-11-19 14:19:41 +01:00
Maxime Coste
22c545884f Selection: allow write access to first and last 2012-11-19 14:19:31 +01:00
Maxime Coste
45bd3dbe5a Pass the selection instead of only point of insertion to filters 2012-11-19 13:40:23 +01:00
Maxime Coste
fd50046f3a ctags.kak: center selection in window when jumping on a tag 2012-11-19 13:38:03 +01:00
Maxime Coste
6ffa74a24d Context: set dimensions of window on change_editor 2012-11-19 13:37:38 +01:00
Maxime Coste
9c368c85d6 use SelectionsAndCaptures to store jumps 2012-11-12 20:41:03 +01:00
Maxime Coste
14f980e4e0 move overlaps function to selection.hh 2012-11-12 20:27:56 +01:00
Maxime Coste
77272db0fd make Buffer::{add,remove}_change_listener const and the listener list mutable 2012-11-12 20:11:27 +01:00
Maxime Coste
489621cf58 update c++ highlighter 2012-11-12 20:07:47 +01:00
Maxime Coste
6ebe41b1a5 BufferIterator holds a safe_ptr to their buffer instead of a raw pointer 2012-11-12 20:07:33 +01:00
Maxime Coste
037210c70c SafeCountable::m_count is mutable so that we can have safe_ptr<const T> 2012-11-12 20:07:05 +01:00
Maxime Coste
801f4e740c Add jump list support to context
jump forward is bound to ctrl-i
jump backward is bound to ctrl-o

switch buffers or jumping somewhere in the buffer push the current
position to the jump list.

when a buffer is deleted, all entries referencing it in jump lists
are erased.
2012-11-12 19:59:25 +01:00
Maxime Coste
41b5336296 make ctags.kak tag implementation more robust 2012-11-12 19:42:26 +01:00
Maxime Coste
3f403474ac update asciidoc highlighting 2012-11-12 19:41:39 +01:00
Maxime Coste
39932f7ea2 Fix IncrementalInserter::insert(memoryview<String>) so that inserting registers works as intended 2012-11-12 13:40:07 +01:00
Maxime Coste
2781056ce6 Add a rc/ctags.kak for a :tag implementation using exuberant ctags 2012-11-09 19:10:08 +01:00
Maxime Coste
0887e1364e InputHandler: Handle C-c as Escape 2012-11-08 14:05:00 +01:00
Maxime Coste
68cc07022c NCurses: catch SIGINT and send a C-c instead 2012-11-08 14:04:41 +01:00
Maxime Coste
0e5f548f76 minor tweaks in displayed texts 2012-11-08 13:38:02 +01:00
Maxime Coste
3a34fae9a7 Editor: avoid end of lines when moving selection 2012-11-08 13:37:29 +01:00
Maxime Coste
bdd0758ee2 Saner :edit and :buffer behaviour when buffer is the current one 2012-11-07 14:04:47 +01:00
Maxime Coste
0f7948848e Fix buffer deletion from a client when another is editing it 2012-11-07 14:02:23 +01:00
Maxime Coste
d6923af3c4 server socket filename available through $kak_socket env var 2012-11-06 14:25:25 +01:00
Maxime Coste
3471d795c9 ClientManager: tweak on input event lambda 2012-11-06 13:37:18 +01:00
Maxime Coste
d347223e42 EventManager: store event handlers in an unordered_map instead of a vector
If an event handler add or removes an event from the manager, it may then
be moved in the vector, and if after that it access any of it's members
(through this), it results in an invalid memory access.
2012-11-06 13:34:58 +01:00
Maxime Coste
3daac4883e Move client drawing responsiblity to the ClientManager 2012-11-05 19:58:04 +01:00
Maxime Coste
a41bb34b21 Window: maintain the timestamp of last display buffer update 2012-11-05 19:54:09 +01:00
Maxime Coste
fedabb4176 Rework Window creation, avoid using the same window in multiple clients 2012-11-05 19:15:42 +01:00
Maxime Coste
42315c4b5c Editor: store a safe_ptr to buffer instead of reference 2012-11-04 23:39:25 +01:00
Maxime Coste
ea17525b2a Window: sanitize position in set_position 2012-10-31 14:28:47 +01:00
Maxime Coste
c947819154 Fix buffer iterator_at_line_{begin,end}(LineCount) 2012-10-31 14:28:03 +01:00
Maxime Coste
74731b0d0f refactor Client creation 2012-10-31 14:23:44 +01:00
Maxime Coste
6eef68124f use custom Client::operator=(Client&&) to drop safe counts first 2012-10-30 18:13:57 +01:00
Maxime Coste
1ea4b3998a Add a ClientManager for managing client lifetimes 2012-10-30 14:00:44 +01:00
Maxime Coste
bc7dfec44c tweak cpp highlighting 2012-10-29 19:17:48 +01:00
Maxime Coste
945f54daea fix crashes when cycling through menu with an active filter 2012-10-29 19:17:37 +01:00
Maxime Coste
254d43856d NCurses: refactor status line handling, and disambiguate status line from mode line 2012-10-29 19:01:57 +01:00
Maxime Coste
6f2c69a0eb fix adapt_for_linewise for Replace mode 2012-10-29 19:00:28 +01:00
Maxime Coste
cc876f7107 validate key in InputHandler before sending to mode, and minor refactor 2012-10-29 18:59:41 +01:00
Maxime Coste
6b664052b8 Use a Server object instead of just calling setup_server 2012-10-29 13:44:53 +01:00
Maxime Coste
ba244a70a3 NCurses: fix long lines handling 2012-10-28 11:00:23 +01:00
Maxime Coste
d9729cc29e Handle all available input before redrawing 2012-10-28 09:26:54 +01:00
Maxime Coste
13a081ed4a Remote: fix resize handling 2012-10-27 15:49:10 +02:00
Maxime Coste
b24a80a3ec NCurses::draw: maintain current column without using ncurses 2012-10-27 15:48:08 +02:00
Maxime Coste
031ed91ea6 EventManager: handle forced events even when poll return -1 2012-10-27 15:15:34 +02:00
Maxime Coste
b199cfd644 NCursesUI: force input handling reexecution when resizing 2012-10-27 15:02:17 +02:00
Maxime Coste
70cdb7a811 EventManager: add force_signal method to force event execution 2012-10-27 15:01:13 +02:00
Maxime Coste
24b43f91c8 NCurses: rework terminal resize handling 2012-10-27 14:18:52 +02:00
Maxime Coste
ee882d9d02 utf8: use CharCount instead of size_t 2012-10-27 13:26:40 +02:00
Maxime Coste
61c8ef6ce4 remote: send resize message when needed 2012-10-26 16:14:51 +02:00
Maxime Coste
73aa11ac16 remote: check read/write results, detect disconnections 2012-10-26 13:45:32 +02:00
Maxime Coste
1c3f6c314f send actual dimensions of remote client at connection 2012-10-25 12:51:01 +02:00
Maxime Coste
0735c69a92 add initial (and buggy) unix socket based client/server code 2012-10-24 21:44:19 +02:00
Maxime Coste
b9eb939e05 Add some remote client support protocol code 2012-10-23 22:55:44 +02:00
Maxime Coste
b163711963 DisplayBuffer: store lines in a vector, not a list 2012-10-23 22:55:04 +02:00
Maxime Coste
227c66cf61 use Colors and Attributes are char 2012-10-23 22:53:56 +02:00
Maxime Coste
98b6618658 merge contiguous DisplayAtoms after highlighting DisplayBuffer 2012-10-22 13:20:02 +02:00
Maxime Coste
eed8a2a57c add basic utf8 unit test 2012-10-22 01:05:56 +02:00
Maxime Coste
49237a771b some minor cleanups/refactorings in main 2012-10-21 13:09:01 +02:00
Maxime Coste
a0cca31dc1 make UserInterface unaware of Window, only of DisplayBuffer 2012-10-20 20:15:20 +02:00
Maxime Coste
48fe18ff0a memoryview: include cstddef for size_t 2012-10-20 16:40:12 +02:00
Maxime Coste
28c8acf80a assert: throw if launching xmessage fails 2012-10-19 03:53:10 +02:00
Maxime Coste
abf514f305 avoid utf8 errors with invalid keys, like ncurse KEY_RESIZE 2012-10-18 19:56:57 +02:00
Maxime Coste
132c31042e main: prepare for multi client support 2012-10-17 17:49:34 +02:00
Maxime Coste
df400f90ab utf8: replace InvalidBytePolicy::Throw with InvalidBytePolicy::Assert 2012-10-17 17:01:51 +02:00
Maxime Coste
c1387dc592 assert: simplify header 2012-10-17 17:01:08 +02:00
Maxime Coste
4aa3a36102 rename Client to InputHandler 2012-10-17 13:14:03 +02:00
Maxime Coste
1ab486b0d8 verious refactoring 2012-10-16 18:42:51 +02:00
Maxime Coste
f8abbfbb44 assert: use xmessage to block on assert failed 2012-10-16 16:16:32 +02:00
Maxime Coste
214baf4cdd add a _str user defined literal to create String 2012-10-16 15:11:22 +02:00
Maxime Coste
6ff6058ceb create_buffer_from file return nullptr on file not found instead of throwing 2012-10-16 14:59:39 +02:00
Maxime Coste
4be6882bd5 Menu: support searching through choices with /
when hitting / while in a menu, a regex filter can be entered so that only
entries matching it are selectable, <esc> disable filtering while a second
<esc> close the menu as usual.
2012-10-15 12:49:46 +02:00
Maxime Coste
148466c659 Extract basic line editing functionality from PromptMode to LineEditor 2012-10-14 16:24:35 +02:00
Maxime Coste
dfafcdb6e6 utf8::codepoint: configurable invalid byte policy 2012-10-13 19:05:14 +02:00
Maxime Coste
4f1ab5b749 fix Window::scroll_to_keep_cursor_visible_ifn 2012-10-11 14:23:20 +02:00
Maxime Coste
4210a17753 Client: never call substr(CharCount, String::npos); 2012-10-11 14:22:08 +02:00