Commit Graph

731 Commits

Author SHA1 Message Date
Maxime Coste
7fb49b183e ShellManager environment variable use a regex instead of an exact match
when a kakoune releated env var used in a shell command, the ShellManager
tries to match it with given regex and the first that matches calls its
value retriever.

For this to be useful, EnvVarRetrievers now also take the variable
name in its parameters.
2012-06-25 19:40:18 +02:00
Maxime Coste
fd8517f91e fix some warnings detected with clang 2012-06-05 13:33:02 +00:00
Maxime Coste
dc91f344f7 Reorder managers creation in main 2012-06-14 13:20:40 +00:00
Maxime Coste
67c6b6834e execute kakrc after creating an UI 2012-06-12 13:10:33 +00:00
Maxime Coste
6a416abae2 abstract ui functions in a UI base class 2012-06-05 23:15:19 +00:00
Maxime Coste
61bd77d529 fix compilation on MacOS 2012-06-05 13:31:14 +00:00
Maxime Coste
2c4bc5582a Alt-Space permits to remove a selection by index 2012-05-29 11:15:43 +00:00
Maxime Coste
3bfd774f49 Restore piping support.
Add a ShellManager::pipe method, which pipes a string into the
command. Not quite satisfied with this interface.
2012-05-29 10:39:03 +00:00
Maxime Coste
8fedbbf07b ShellManager::eval now takes an additional env_var map 2012-05-29 05:19:27 +00:00
Maxime Coste
56efb42962 add a selection environement variable to access the last selection content 2012-05-07 06:56:53 +00:00
Maxime Coste
ff86d9781d move commands to commands.{cc,hh} 2012-05-07 03:13:34 +00:00
Maxime Coste
55516af9d7 remove {add,rm}grouphl, go back to a -group arg in {add,rm}hl
more consistency, more shared code
2012-05-04 04:25:09 +00:00
Maxime Coste
7158aa00b7 use ShellManager in do_pipe 2012-05-03 07:33:13 +00:00
Maxime Coste
0c596a9d64 Add a ShellManager which handles executing shell commands
ShellManager provides shell commands with environement variable
to retrieve some internal values in the shell parameters.
2012-05-03 07:25:13 +00:00
Maxime Coste
2a291e6868 add an eval command which send it's arguments to the command evaluator 2012-05-03 07:24:27 +00:00
Maxime Coste
b8fe942dbb Implement our own String class in preparation to encoding support. 2012-04-14 01:23:20 +00:00
Maxime Coste
9337938403 replace std::string references with String 2012-04-14 01:17:09 +00:00
Maxime Coste
46c65fea10 Option name completion support 2012-04-03 18:25:27 +00:00
Maxime Coste
1d106fd31e add set{g,global,b,buffer,w,window} command to allow changing options 2012-04-03 14:04:02 +00:00
Maxime Coste
f3dd65fbf1 add an OptionManager class and use it to manage tabstops
OptionManager map names to options, and may delegate option resolution
to it's parent if it does not contains the asked for option. That way
Buffers can override global options, and Windows can override Buffer
options.
2012-04-03 13:39:20 +00:00
Maxime Coste
c8447658c0 fix tab insertion 2012-04-03 13:38:01 +00:00
Maxime Coste
9444c84b1c rename HooksManager to HookManager 2012-04-03 12:01:01 +00:00
Maxime Coste
a555e28b4e add basic unit tests run at startup 2012-03-21 19:27:36 +00:00
Maxime Coste
3dd96565b3 display modified buffers names when quit fails 2012-03-25 20:12:35 +00:00
Maxime Coste
cd615b35a2 generalize do_select_surrounding in do_select_object and add a whole word selector 2012-03-12 14:23:30 +00:00
Maxime Coste
c98657a512 fix some unitialized variable use (thanks valgrind) 2012-03-08 20:49:10 +00:00
Maxime Coste
782b557660 factor word and WORD selectors 2012-03-07 19:20:32 +00:00
Maxime Coste
8275fe30f9 support appending with search 2012-02-28 20:50:47 +00:00
Maxime Coste
c03506ca04 save and restore " and / registers in exec_keys 2012-02-27 19:51:30 +00:00
Maxime Coste
13d74414e1 fix exec_commands_in_file parsing of [\'"`] strings 2012-02-27 14:25:07 +00:00
Maxime Coste
7026693ecd move ncurses function to ncurses.{cc,hh} 2012-02-16 14:25:16 +00:00
Maxime Coste
6aacebd2e0 Add an echo command which print it's params in the status line 2012-02-15 14:24:52 +00:00
Maxime Coste
e9af61eb9f def command takes an optional argument for parameter policy
-env-params puts parameters in kak_param{0..9}
-append-params appends parameters to the ones defined in the command
2012-02-15 13:58:08 +00:00
Maxime Coste
03976e0a01 edit command supports optional line and column parameter 2012-02-13 21:54:30 +00:00
Maxime Coste
3019ce3d3c edit command switch to the given buffer if it is already opened
use edit! (or e!) to force reloading of the buffer
2012-02-13 21:48:16 +00:00
Maxime Coste
3273551665 add 'def' command to define new user commands 2012-02-13 21:40:09 +00:00
Maxime Coste
5f86941b8f support multiline strings when executing file commands 2012-02-13 21:39:41 +00:00
Maxime Coste
2c8a6ca56a Support shell commands expansion in CommandManager 2012-02-13 21:38:07 +00:00
Maxime Coste
9304e41326 support register access through ctrl-r in ncurses_prompt 2012-02-13 13:37:41 +00:00
Maxime Coste
333b470dd2 giving a count to paste selects which selections yank buffer to use
3p will paste using the yank buffer of the third selection instead
of each selection using it's own.
2012-02-10 14:00:21 +00:00
Maxime Coste
d84d085cc2 Merge captures into registers, implements register insertion 2012-02-09 23:47:55 +00:00
Maxime Coste
04a37d8895 Editor refactoring, merge undo and batch management 2012-02-07 23:41:10 +00:00
Maxime Coste
333e87dedd add a Register class, registers can now contain a list of string
That way, registers can be used to store per selection data
2012-02-07 23:01:02 +00:00
Maxime Coste
9b5e9ffee2 selectors now take a Selection as parameter instead of a BufferIterator 2012-02-07 14:26:51 +00:00
Maxime Coste
1e5d930f35 extract exec_keys function from exec_string 2012-02-07 13:35:41 +00:00
Maxime Coste
0483e951ad use memoryview instead of std::vector where applicable 2012-02-03 19:14:35 +00:00
Maxime Coste
96b167859a batches support in Editor, used by IncrementalInserter and exec_string
Editor groups all modification together in one undo group when batching.
nested batches are supported.
2012-02-03 13:55:22 +00:00
Maxime Coste
96101b4392 Use an Editor instead of a Window as much as possible 2012-02-02 20:48:03 +00:00
Maxime Coste
69d96c90da extract an Editor class from Window and refactor 2012-01-31 19:12:06 +00:00
Maxime Coste
3ef9895a97 Buffer: support creation of temporary windows to apply commands when no windows are in context 2012-01-31 14:03:10 +00:00
Maxime Coste
830d96f7a1 Buffer: add NewFile buffer type for buffer with an non existing yet file 2012-01-31 14:01:48 +00:00
Maxime Coste
73a8950e73 File: parse_filename function which handle ~ and environment variable in filenames 2012-01-29 22:24:43 +00:00
Maxime Coste
589b8e68bb history support in prompt 2012-01-25 22:32:17 +00:00
Maxime Coste
6411193f10 SelectionHighlighter: reverse color of the last char of each selection
the terminal cursor is now longer shown
2012-01-25 20:22:33 +00:00
Maxime Coste
d1c29d2b78 moving no longer clears multiple selections 2012-01-25 14:23:02 +00:00
Maxime Coste
81138b224f fix line break support in insert_char 2012-01-24 23:19:26 +00:00
Maxime Coste
381d884c16 use a settable get_key function to be able to override key reading 2012-01-24 23:18:59 +00:00
Maxime Coste
1fd8ec8bfd support Ctrl-R <reg> when inserting to insert a register 2012-01-24 19:08:57 +00:00
Maxime Coste
a62d56064f replace ncurses getch calls with a get_key method 2012-01-23 14:17:31 +00:00
Maxime Coste
a1ff9999f5 the hook command takes a first parameter to specify the hook owner
currently 'global' and 'window' are accepted owners. 'window' will
add the hook to the current context window.
2012-01-23 13:58:43 +00:00
Maxime Coste
945ad361fb HooksManager: forward declare Context instead of including context.hh 2012-01-23 13:56:43 +00:00
Maxime Coste
db9040e29e HooksManager: extract the Singleton version as GlobalHooksManager 2012-01-23 13:40:42 +00:00
Maxime Coste
73ae3d292f implement finding kak executable path on MacOS 2012-01-20 21:12:57 +00:00
Maxime Coste
2824bd9a46 HighlighterGroup: move to it's own file, Window uses them directly 2012-01-19 20:37:29 +00:00
Maxime Coste
541872cafa completion support for addgrouphl and rmgrouphl 2012-01-18 11:33:58 +00:00
Maxime Coste
cffdbcb689 replace addhl -group with addgrouphl command, and add rmgrouphl 2012-01-18 00:15:10 +00:00
Maxime Coste
ae8882b0de Context: do not permit access to window or buffer if null 2012-01-15 21:33:35 +00:00
Maxime Coste
c62b3b251d add a runtime command to execute files in the runtime directory 2012-01-15 17:34:05 +00:00
Maxime Coste
f3e8498a58 addhl supports a -group option
-group <group_id> can be used to add the highlighter in a
highlighter group which will be then handled as a whole.
2012-01-15 13:47:12 +00:00
Maxime Coste
f259af9326 CommandManager: add flags support and IgnoreSemiColons flag
commands are now registred with flags, and the IgnoreSemiColons
flag permit to specify a command which needs all the parameters
on the line, bypassing the command sequence operator ';'.

the hook command is tagged as such.
2012-01-15 03:02:08 +00:00
Maxime Coste
49ea6f7103 correctly clear the window status line 2012-01-15 01:45:23 +00:00
Maxime Coste
95db828e17 CommandManager: use directly first command parameter as the command name 2012-01-14 14:02:54 +00:00
Maxime Coste
66d91b8828 support '\' as a line continuation marker when executing commands in file 2012-01-14 13:50:45 +00:00
Maxime Coste
9557167f26 <space> with a count argument replaces current selections with the counth selection. 2012-01-09 14:28:01 +00:00
Maxime Coste
8b1b1d9cd8 Selectors: add select_surrounding to select blocks
Alt-a followed by []()<>{}bB selects the block surrounding current
selection end.

Alt-i is similar but selects only the inside of the block.
2012-01-04 14:18:08 +00:00
Maxime Coste
e59bdd931e search for kakrc next to the kak executable instead of in the current directory 2011-12-28 22:57:48 +00:00
Maxime Coste
4de41197c0 Add a | key that pipes each selection through an external filter 2011-12-28 19:04:06 +00:00
Maxime Coste
913ee3f096 Use Keys instead of char for keymap 2011-12-21 14:29:28 +00:00
Maxime Coste
ba1fe056f4 Add an exec command, similar to vim normal command 2011-12-20 19:22:05 +00:00
Maxime Coste
2239fb6e49 Filters: move from buffer to window 2011-12-07 14:29:10 +00:00
Maxime Coste
23eafd4504 Add a repeat last insert command, bound to . 2011-12-05 14:28:45 +00:00
Maxime Coste
c761420055 fix exec_commands_in_file 2011-12-02 19:00:37 +00:00
Maxime Coste
94d59cc4dd Buffer: add filter support
filters are functions called prior to applying a modification
to a buffer. They can manipulate the modification to change
the editor behaviour.
2011-12-02 14:28:27 +00:00
Maxime Coste
934e62b502 stop clearing selections all the time 2011-11-30 14:18:54 +00:00
Maxime Coste
0859b20bcf Rename Filter to Highlighter to be more explicit 2011-11-29 22:37:20 +00:00
Maxime Coste
46a01b5a0b Debug: stop writing key codes to debug buffer and cleanups 2011-11-28 18:52:29 +00:00
Maxime Coste
70e0393c4d Add a source command to execute commands from file
a kakrc file in current directory is sourced automatically
at start
2011-11-27 12:59:59 +00:00
Maxime Coste
b59a0816b9 Add wq and wq! commands 2011-11-26 19:11:24 +00:00
Maxime Coste
a00961da99 Add hook command 2011-11-26 18:41:55 +00:00
Maxime Coste
957446dee4 Add a Context parameter to commands 2011-11-26 18:32:57 +00:00
Maxime Coste
9775958012 Add a HooksManager class 2011-11-25 14:26:29 +00:00
Maxime Coste
d27aaab066 use alt-x instead of , to select whole lines 2011-11-22 14:31:20 +00:00
Maxime Coste
a1200aacad Add alt-j command to join lines 2011-11-22 14:24:50 +00:00
Maxime Coste
7861ad9ddb Selectors: add split_selection bound to Alt-s 2011-11-21 19:30:44 +00:00
Maxime Coste
b67c36358d Extract RegexSelector methods as plain selectors 2011-11-21 19:08:51 +00:00
Maxime Coste
2677fa7961 Add , to fully selects lines selection is on. 2011-11-21 18:53:22 +00:00
Maxime Coste
18913cfbff IncrementalInserter: add insert_capture method bound to ^B<num> 2011-11-16 19:24:37 +00:00
Maxime Coste
b1e815a66c RegexSelector: support multi selections, bound to s key 2011-11-16 14:06:01 +00:00
Maxime Coste
d1868e8f07 ncurses: set ESCDELAY to 25 so that esc key lag is less noticeable 2011-11-15 14:26:28 +00:00
Maxime Coste
a3b5c74512 remove unused code 2011-11-14 14:27:33 +00:00
Maxime Coste
0dc8442ca4 Completions: add filterid completion for rmfilter 2011-11-12 14:15:35 +00:00
Maxime Coste
a8b2c4f568 Completions: add basic addfilter completion 2011-11-12 14:08:05 +00:00
Maxime Coste
f5ad32f137 Completion: decentralise, move buffer name completion to BufferManager 2011-11-12 14:06:49 +00:00
Maxime Coste
82baa55eed Completions: change NullCompletion functor to complete_nothing function 2011-11-10 20:57:25 +00:00
Maxime Coste
f12929abad Filters: refactoring 2011-11-09 23:56:22 +00:00
Maxime Coste
5aeee719dd fix launching on new file 2011-11-09 14:17:46 +00:00
Maxime Coste
3af1b89034 Window: support adding and removing filters with :addfilter :rmfilter 2011-11-08 14:29:52 +00:00
Maxime Coste
1f3f5ea1ba Filters: register existing filters with the registry 2011-11-08 14:28:01 +00:00
Maxime Coste
4982620c4c IncrementalInserter: support insert at line begin and append at line end 2011-11-02 20:03:41 +00:00
Maxime Coste
856a870d8b fix not existing lines drawing 2011-11-02 14:22:20 +00:00
Maxime Coste
0e18db5a88 lines and columns used for user interaction are 1-indexed 2011-10-27 14:27:39 +00:00
Maxime Coste
b58694939c bind alt-[lLhH] to select_to_eol(_reverse)? 2011-10-26 14:22:48 +00:00
Maxime Coste
5d5e76a3eb change select_line binding from . to x 2011-10-26 14:18:43 +00:00
Maxime Coste
2c8f3229c0 Selectors: add selectors for WORDs
WORDs are the same as vim's ones, i.e. a group of contiguous non blank
characters. They are bound as alt + word selector key.
2011-10-25 18:46:14 +00:00
Maxime Coste
97a279e229 add alt-key binding support
bind alt-[tTfF] to backward version of [tTfF]
2011-10-25 14:28:20 +00:00
Maxime Coste
ad6ee464f4 style tweak 2011-10-19 18:54:20 +00:00
Maxime Coste
dc74934e59 DisplayBuffer: refactoring, correct support of replacements
DisplayAtoms now know where they are on the screen and have
line_and_column_at and iterator_at methods.
2011-10-15 04:45:49 +00:00
Maxime Coste
26459abf8a WindowCoord: rename to DisplayCoord and move with DisplayBuffer 2011-10-14 14:29:53 +00:00
Maxime Coste
be043ffe1e Window: move_cursor_to takes a BufferIterator parameter 2011-10-12 18:53:38 +00:00
Maxime Coste
22bd9f90d5 Filters: add an expand_tabulation filter 2011-10-12 18:52:22 +00:00
Maxime Coste
f802a9f3be Debug: add key integral value in the debug buffer on keystroke 2011-10-10 22:47:19 +00:00
Maxime Coste
219709e472 Completions: move code from main.cc to completion.hh 2011-10-10 22:38:58 +00:00
Maxime Coste
7e84ca9ae9 gl and gh now go to first or last character of the line
append mode is supported through G key
2011-10-10 14:24:17 +00:00
Maxime Coste
003c5d4e3d remove useless line 2011-10-08 13:23:18 +00:00
Maxime Coste
868a2f8107 ncurses: fix color support 2011-10-07 14:28:13 +00:00
Maxime Coste
10106e8c8e DisplayBuffer: do not store content in atom, begin and end are sufficient 2011-10-07 14:19:58 +00:00
Maxime Coste
a19f4f059d Debug: add a write_debug function
write_debug writes in a Scratch buffer named '*debug*', so that debug
messages are accessibles from within kakoune
2011-10-07 14:16:38 +00:00
Maxime Coste
9db4aa9691 Buffer: add a type property 2011-10-07 14:15:55 +00:00
Maxime Coste
12535e1099 Window: get rid of select_mode 2011-10-07 14:03:25 +00:00
Maxime Coste
ca99a51bca clear selections after a change 2011-10-06 21:13:33 +00:00
Maxime Coste
1e224dc586 whitespace fix 2011-10-06 21:13:16 +00:00
Maxime Coste
571e4772b4 IncrementalInserter: support OpenLineBelow and OpenLineAbove mode 2011-10-06 21:12:55 +00:00
Maxime Coste
f9be716776 quit: do not quit if modified buffer exists, add q! command 2011-10-05 18:43:47 +00:00
Maxime Coste
cf162ae617 draw_window: add a space for eol, so that selected eol are visible 2011-10-05 14:28:20 +00:00
Maxime Coste
ff730380ed Window: empty_selections -> clear_selections
clear_selections also reset select_mode to Normal,
most editing operations now do a clear_selections.
2011-10-05 14:24:52 +00:00
Maxime Coste
4ce349fa02 Buffer: modification tracking 2011-10-05 14:21:24 +00:00
Maxime Coste
c8cf7bbaa9 Window: add a basic status line 2011-10-04 18:49:41 +00:00
Maxime Coste
4f771b084a escape-key force return to normal mode 2011-10-03 18:41:05 +00:00
Maxime Coste
d99bcd7f2e bind T and F as select_to_reverse non-inclusive and inclusive 2011-10-03 14:29:44 +00:00
Maxime Coste
36c3bb6ae3 ncurses: quick'n'dirty color support 2011-09-30 19:15:14 +00:00
Maxime Coste
e619a81375 IncrementalInserter: Append, Insert or Change mode specified at construction 2011-09-28 19:14:39 +00:00
Maxime Coste
43fb64a913 Window: selection behaviour now depends on a window state
more vi-like behaviour, hit the v key to toggle append selection mode,
this means much more keys become available for mapping, as caps are now
longer reserved to append mode.
2011-09-28 14:23:43 +00:00
Maxime Coste
309b722df9 Window: cursors are now implicit, taken from current selections
Window hence guarantees that there is always at least one selection.
2011-09-27 18:45:22 +00:00
Maxime Coste
610acb3c0e Selectors: add a count argument to select_to 2011-09-27 14:27:48 +00:00
Maxime Coste
01018a5eac Handle paste before and paster after with p and P 2011-09-27 14:15:20 +00:00
Maxime Coste
924a85d14f erase, change: yank current selection before erasing 2011-09-26 08:59:32 +00:00
Maxime Coste
6ff06ca985 DisplayBuffer: cleanup 2011-09-25 23:51:12 +00:00
Maxime Coste
dc54e7f09c % key selects whole buffer 2011-09-24 13:45:25 +00:00
Maxime Coste
0cad8ed34b gh and gl to move to first/last character of line 2011-09-24 13:08:04 +00:00
Maxime Coste
53c9021857 Search: save last search to '/' register and bind n to repeat last search 2011-09-24 12:48:58 +00:00
Maxime Coste
9b865cea39 Basic support for yanking and pasting 2011-09-23 14:31:57 +00:00
Maxime Coste
8f70192875 CommandManager: now a singleton 2011-09-23 14:29:42 +00:00
Maxime Coste
c2cbd69c1a main: using namespace std::placeholders 2011-09-23 14:27:34 +00:00
Maxime Coste
26537d7028 Utils: Singleton template and migration of the BufferManager
Singletons are not autocreating, the application needs to create
exactly one instance (I want to avoid implicit initialization order
hell)
2011-09-23 14:26:53 +00:00
Maxime Coste
52ad372adb Selectors: support inclusive mode in select_to (bound to f key) 2011-09-23 14:06:10 +00:00
Maxime Coste
5ca901644f Completion: add complete_buffername completer 2011-09-22 18:55:45 +00:00
Maxime Coste
c3faeb6c05 Selectors: add select_to which selects until a given character on current line 2011-09-22 14:35:28 +00:00
Maxime Coste
03c199420e basic g (go) command, gg/gt goes to first line, gb goes to last 2011-09-22 14:02:07 +00:00
Maxime Coste
2efa120612 o key to open a line after the current one 2011-09-22 09:24:16 +00:00
Maxime Coste
cff69b2556 Selectors: add a basic select_matching selector for <([{]])> pairs 2011-09-21 19:09:49 +00:00
Maxime Coste
3af66276f0 Move selectors function to their own file 2011-09-21 14:37:09 +00:00
Maxime Coste
13d14d4ff5 Insert: refactoring using IncrementalInserter 2011-09-19 22:00:29 +00:00
Maxime Coste
0513b4de29 Shift-{H,J,K,L} keys move cursor while selecting. 2011-09-17 14:28:23 +00:00
Maxime Coste
49fce28dec select_to_next_word{,_end}: words are [a-zA-Z0-9] 2011-09-16 09:20:36 +00:00
Maxime Coste
3afbbefd9b Configure filename completer for edit and write commands 2011-09-16 09:20:01 +00:00
Maxime Coste
635e76eb4c prompt: rework tu support arrows and completion cycling 2011-09-14 19:15:09 +00:00
Maxime Coste
eecc5a184e CommandManager: basic command name completion support 2011-09-13 21:16:48 +00:00
Maxime Coste
030c5caf0a assert: custom implementation 2011-09-09 19:24:18 +00:00
Maxime Coste
3caf962110 exception: refactoring 2011-09-09 18:40:59 +00:00
Maxime Coste
84682b7590 Add a buffer command to switch between existing buffers 2011-09-08 14:32:36 +00:00
Maxime Coste
76b7c60afb Buffer is now responsible for window creation 2011-09-08 14:30:36 +00:00
Maxime Coste
d3499ecd9c Window lifetime is now handled by it's buffer.
A window cannot outlive it's buffer, so it makes sense to keep only a
reference on it hand have the buffer manage the window lifetime.
2011-09-08 00:13:19 +00:00
Maxime Coste
03f1520b43 Refactor commands handling and parsing in a CommandManager class 2011-09-07 18:16:56 +00:00
Maxime Coste
8baf43ece1 binding of undo to 'u' and redo to 'U' 2011-09-06 18:53:12 +00:00
Maxime Coste
6668151c78 LineAndColumn: segregate into WindowCoord and BufferCoord
Having the same type to specify coordinates in window space or buffer
space is error prone, now the compiler will tell if we use one for
another.
2011-09-05 19:06:31 +00:00
Maxime Coste
d5012c9379 window: support scrolling 2011-09-05 18:55:31 +00:00
Maxime Coste
2224118de2 insert: print '-- INSERT --' in status line 2011-09-02 18:45:57 +00:00
Maxime Coste
19123186d7 better exception handling in edit and write_buffer 2011-09-02 18:02:29 +00:00
Maxime Coste
955744e5d0 prompt: correctly handle backspace when empty 2011-09-02 17:07:35 +00:00
Maxime Coste
053b2e233e main: catch all exceptions, close ncurses and rethrow 2011-09-02 17:05:44 +00:00
Maxime Coste
535285d9e6 Initial commit 2011-09-02 16:51:20 +00:00