Maxime Coste
942e63d836
correctly implement std::hash<String>
2012-05-30 14:20:21 +02:00
Maxime Coste
d7c917c96e
include <unistd.h> in order to get read and write
2012-05-30 14:19:53 +02:00
Maxime Coste
6792696ba2
enable global and line numbering in kakrc
2012-05-29 11:35:30 +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
84c1cad3d5
tweak cpp highlighting
2012-05-29 09:23:53 +00:00
Maxime Coste
c7ad724aec
global.kak: support tag name completion
2012-05-29 05:23:36 +00:00
Maxime Coste
02c89022e4
Correctly set env vars in define_command
2012-05-29 05:43:09 +00:00
Maxime Coste
d599542473
Support -shell-completion option in the def command
...
-shell-completion takes some shell code as parameter which
should returns a newline separated list of completion candidates.
2012-05-29 05:22:18 +00:00
Maxime Coste
62202a46c1
Add some string helpers and unit tests
...
functions int_to_str(int) and split(const String&, Character),
plus corresponding unit tests
2012-05-29 05:19:50 +00:00
Maxime Coste
96c440fcaa
CommandManager::execute can take an optional EnvVarMap argument which is used for shell evaluation
2012-05-29 05:42:26 +00:00
Maxime Coste
8fedbbf07b
ShellManager::eval now takes an additional env_var map
2012-05-29 05:19:27 +00:00
Maxime Coste
e57ddd3bab
Factorize some duplicated completer code in register_commands
2012-05-29 03:34:54 +00:00
Maxime Coste
30d9e10ac6
DisplayBuffer optimization, suppressed some paranoid checks
2012-05-29 00:33:55 +00:00
Maxime Coste
6fa40796e7
Fix Window::scroll_to_keep_cursor_visible_ifn
2012-05-29 00:14:05 +00:00
Maxime Coste
7451423ce3
global.kak: the 'tag' command uses 'menu -auto-single'
2012-05-28 23:52:26 +00:00
Maxime Coste
1257d432b4
the 'menu' commands now takes an optional -auto-single option
...
-auto-single tell the 'menu' command not to prompt when there
is only a single choice, and to automatically execute it's
command.
2012-05-28 23:50:11 +00:00
Maxime Coste
d96427b831
Add a delbuf (db) command which delete an existing buffer
2012-05-28 22:51:12 +00:00
Maxime Coste
393b9b24e2
Unify command parameter parsing with a ParametersParser class
2012-05-25 05:07:37 +00:00
Maxime Coste
05442857e6
add rc/global.kak file which provides the tag command using GNU GLOBAL
2012-05-18 05:23:02 +00:00
Maxime Coste
5f2471c147
add an initial menu command, which presents several choices to users
...
usage is "menu 'label1' 'command1' 'label2' 'command2' ..."
2012-05-18 05:20:46 +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
dd7228b098
fix DisplayBuffer::atom_containing when where is before first atom
2012-05-04 06:39:03 +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
af5c528f04
use std::upper_bound in DisplayBuffer::atom_containing to run in O(log n)
2012-04-05 02:00:34 +00:00
Maxime Coste
e4b872abd2
remove ModificationListener and use a list of iterators to update instead
...
This permits to fix a bug in BufferIterator::upgrade, replaced by
BufferIterator::on_insert and BufferIterator::on_erase. ModificationListener
was only used to updating iterators anyway.
2012-04-04 13:56:19 +00:00
Maxime Coste
6cedff8fb2
fix some corner cases in Buffer modification
2012-04-04 12:25:42 +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
873c853f7c
gdb: do not catch throw, but break when constructing an assert_failed exception
2012-04-03 13:42:20 +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
30bc1bad8f
WindowHighlighterFactory class which passes the Window to the higlighter function
2012-04-03 13:22:07 +00:00
Maxime Coste
d1cc86d95d
fix error message in HighlighterGroup
2012-04-03 13:08:13 +00:00
Maxime Coste
9444c84b1c
rename HooksManager to HookManager
2012-04-03 12:01:01 +00:00
Maxime Coste
2cd318e50d
fix BufferIterator::update when removing an end of line
2012-04-01 15:40:25 +00:00
Maxime Coste
7f425c4467
add an editor unit test
2012-04-01 15:39:53 +00:00
Maxime Coste
07e1fcf67b
specialize BufferIterator::operator--
2012-03-31 15:21:14 +00:00
Maxime Coste
45e362d213
specialize BufferIterator::operator++ to speed up Kakoune
2012-03-30 12:01:18 +00:00
Maxime Coste
2e7cd2233c
add a Line::length method
2012-03-30 12:00:40 +00:00
Maxime Coste
0ba7c7286d
Store buffer content in a list of lines
...
Instead of a big std::string, buffer now store it's content in a
list of lines. In order to achieve O(log(n)) random access, lines
contains both their content and their offset since the start of
the file, making binary search usable.
BufferIterator now have a LineAndColumn coordinate into the buffer
instead of an offset so that access is still O(1).
2012-03-30 11:37:18 +00:00
Maxime Coste
c336bf1365
set print pretty in gdbinit
2012-03-27 13:27:35 +00:00
Maxime Coste
f43d206e4e
remove unused measure_string from window.cc
2012-03-26 23:13:09 +00:00
Maxime Coste
63d1c4471c
catch throw in gdbinit
2012-03-26 14:23:27 +00:00
Maxime Coste
a555e28b4e
add basic unit tests run at startup
2012-03-21 19:27:36 +00:00
Maxime Coste
0748aa042b
add a COMMA macro for assert parameters
2012-03-25 20:15:54 +00:00
Maxime Coste
3dd96565b3
display modified buffers names when quit fails
2012-03-25 20:12:35 +00:00
Maxime Coste
792f0f7f2e
BufferManager no longer owns buffers, only register them
2012-03-26 14:21:49 +00:00
Maxime Coste
3c798a4ee8
remove useless Window::cursor_{position,iterator}
2012-03-21 19:26:42 +00:00
Maxime Coste
60fb523d62
add some missing operators to LineAndColumn
2012-03-21 14:13:26 +00:00
Maxime Coste
3dd82a2b85
get rid of Buffer::at
2012-03-19 14:04:33 +00:00
Maxime Coste
a377ff79aa
buffer style fix
2012-03-12 21:39:54 +00:00
Maxime Coste
3c105592e0
get rid of Buffer::compute_lines
2012-03-12 21:31:27 +00:00
Maxime Coste
97b8905a6d
fix update_lines on empty buffer
2012-03-12 14:26:46 +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
df0f7b4689
rename BufferString to String
2012-03-08 21:23:29 +00:00
Maxime Coste
f2fd2b125a
support read error in shell_eval
2012-03-08 21:15:37 +00:00
Maxime Coste
97648b1fda
add some highlighting for git
2012-03-08 20:58:22 +00:00
Maxime Coste
c98657a512
fix some unitialized variable use (thanks valgrind)
2012-03-08 20:49:10 +00:00
Maxime Coste
8bc6ed6cbb
add gdb pretty printers for kakoune data structures
2012-03-08 20:32:13 +00:00
Maxime Coste
782b557660
factor word and WORD selectors
2012-03-07 19:20:32 +00:00
Maxime Coste
7e01867d55
'I' now inserts before the first non blank character of the line instead of the first character of the line
2012-03-07 19:19:33 +00:00
Maxime Coste
c183acb800
use an Editor in write_debug
2012-03-06 23:12:48 +00:00
Maxime Coste
c99a6a3e4c
fix last line handling in window display buffer
2012-03-06 14:27:49 +00:00
Maxime Coste
0ce3bc4621
simplify and optimize buffer line handling
2012-03-06 14:27:03 +00:00
Maxime Coste
0a385885ff
correctly handle boost::regex_error in selectors
2012-03-04 20:11:22 +00:00
Maxime Coste
583de3ba6e
do not take a std::string by value in runtime_error constructor
2012-03-04 20:10:09 +00:00
Maxime Coste
ded05bb5d3
NCurses: support default colors
2012-03-04 19:55:38 +00:00
Maxime Coste
d91ac911e7
fix complete_filename when directory does not exist
2012-03-04 19:43:47 +00:00
Maxime Coste
454258a495
fix shell_eval when no buffer in context
2012-03-04 19:42:31 +00:00
Maxime Coste
1f854bc0cc
fix select_surrounding when selection is on the closing char
2012-02-29 14:27:25 +00:00
Maxime Coste
8275fe30f9
support appending with search
2012-02-28 20:50:47 +00:00
Maxime Coste
c4ad372d91
call compute_lines before hooks at Buffer construction
2012-02-28 14:23:52 +00:00
Maxime Coste
bc3d20bf2a
document Selection class
2012-02-27 20:01:59 +00:00
Maxime Coste
5bddd166f1
fix Buffer::line_length for last line
2012-02-27 19:52:36 +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
b6b66aecc9
fix number_lines line count computing
2012-02-27 14:24:14 +00:00
Maxime Coste
7f175da3fd
Selection: handle last buffer character deleted case
2012-02-22 22:03:11 +00:00
Maxime Coste
416a1805b3
Fix last line handling in buffer
2012-02-22 22:02:43 +00:00
Maxime Coste
a386315bde
Buffer: optimize line updating when applying a modification
2012-02-22 21:54:25 +00:00
Maxime Coste
030450838a
fix Buffer::line_length for last line
2012-02-22 21:49:00 +00:00
Maxime Coste
275c0c67d4
Final attribute support for DisplayAtom
...
When DisplayAtoms have the Final attributes, highlighters
may not modify them anymore.
2012-02-22 21:48:14 +00:00
Maxime Coste
aeac9484b0
compute the number of digits needed in number_lines highlighter
2012-02-22 20:43:59 +00:00
Maxime Coste
46c614c4a2
fix skip_while
2012-02-16 14:28:22 +00:00
Maxime Coste
7026693ecd
move ncurses function to ncurses.{cc,hh}
2012-02-16 14:25:16 +00:00
Maxime Coste
d548037922
tweak kakrc highlighting
2012-02-16 14:04:19 +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
91f2292ec5
Support shell expansion in place of command name in command manager
2012-02-15 14:19:57 +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
38d921f3d2
add alt command which alternate between c/cpp and h/hpp file
2012-02-13 21:43:22 +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
b49279503b
fix include in context.hh
2012-02-13 21:32:54 +00:00
Maxime Coste
f541a639f2
support memoryview construction from iterators
2012-02-13 14:14:26 +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
0352ad7983
Editor: replace all captures if one capture is present
...
before, selecting with 2 captures after selecting with 3 captures
would keep the third capture from the first selection.
2012-02-10 13:58:29 +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
ac02ccb53d
add a memoryview class
...
memoryview is a non owning typed view over a memory range, usefull
to pass arrays as parameters without data copying.
2012-02-03 19:13:02 +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
d23a175533
insert include guards in C++ header files at creation
2012-01-31 14:07:41 +00:00
Maxime Coste
a783d06bf1
tweak c++ highlighting
2012-01-31 14:03:51 +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
959ec46a16
Context: add methods bool has_{buffer,window)
2012-01-31 13:38:06 +00:00
Maxime Coste
6579b43ffb
make parse_keys handle <c-*> and <a-*> keys.
2012-01-29 22:49:14 +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
14d17a4493
add a find(container, value) utility function
2012-01-25 22:31:47 +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
0e805238b5
tweak cpp highlighting
2012-01-25 19:35:53 +00:00
Maxime Coste
a72d185f79
remove DynamicBufferIterator and make Selection a ModificationListener
...
DynamicBufferIterator is only used by Selections. And each selection
had two iterators, resulting in two ModificationListeners registered
in the buffer instead of one now.
2012-01-25 19:32:06 +00:00
Maxime Coste
382d5a334c
do not use a DynamicBufferIterator in IncrementalInserter::IncrementalInserter
2012-01-25 18:59:11 +00:00
Maxime Coste
c837336474
optimize SelectionHighlighters, stop copying Selections
2012-01-25 18:51:47 +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
e0b216d576
HooksManager: do not propagate hooks runtime exception
2012-01-24 23:17:26 +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
950a734ce5
adapt rc files to the new hook command
2012-01-23 14:00:33 +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
c38f244c06
Window have it's own hooks manager
2012-01-23 13:57:24 +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
bb36271ae5
HighlighterGroup: use idvaluemap::complete_id_if in complete_group_id
2012-01-19 20:53:15 +00:00
Maxime Coste
ce6b4c2cc4
idvaluemap: complete_id_if method for conditional id completion
2012-01-19 20:52:08 +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
a6930395b8
tweak kakrc files highlighting
2012-01-15 17:50:46 +00:00
Maxime Coste
c1f625054a
split kakrc with filetype specific files in rc/
...
cpp highlighting is now specified by rc/cpp.kak.
2012-01-15 17:35:25 +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
f99c3a1a6a
kakrc: use a hlkakrc highlighter group for kakrc highlighting regex
2012-01-15 13:48:48 +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
98f937146a
HighlighterRegistry: add add_highlighter_to_group method
2012-01-15 13:46:45 +00:00
Maxime Coste
2cfa70a466
Window: add get_highlighter_group method
2012-01-15 13:46:12 +00:00
Maxime Coste
0c1e763d66
Highlighters: add an HighlighterGroup class
2012-01-15 13:45:18 +00:00
Maxime Coste
5092456186
Highlighters: move HighlighterParameters definition from highlighter_registry.hh to highlighter.hh
2012-01-15 13:44:16 +00:00
Maxime Coste
7599edffa9
idvaluemap: add missing includes
2012-01-15 13:40:58 +00:00
Maxime Coste
0234378bcf
kakrc: refactor using lists of commands for hooks
2012-01-15 03:04:37 +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
be5cf92367
Completion: sort results in complete_filename
2012-01-15 02:02:18 +00:00
Maxime Coste
f673f3c334
Completion: handle hidden files in complete_filenam
2012-01-15 02:01:58 +00:00
Maxime Coste
49ea6f7103
correctly clear the window status line
2012-01-15 01:45:23 +00:00
Maxime Coste
4a5758ebb3
CommandManager: support ';' as a command separator
2012-01-15 01:37:35 +00:00
Maxime Coste
272f2d87a1
Highlighters: tweak colorize_cplusplus
2012-01-14 14:12:20 +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
fea81e1378
kakrc: add support for kakrc file highlighting
2012-01-14 01:04:08 +00:00
Maxime Coste
50ce3d1549
Document some Kakoune concepts, as Window, Buffer, DisplayAtom...
2012-01-11 14:21:58 +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
e02cb4e5bd
Selectors: select_next_match starts from cursor+1
...
so searching effectively starts on the character after current
selection end. Which makes repeating 'n' on a one character match
work.
2012-01-09 14:22:52 +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
c9ac4d615d
Highlighters: tweak colorize_cplusplus
2011-12-28 18:52:35 +00:00
Maxime Coste
0e398566d2
Buffer: fix compute_lines on empty_buffer
2011-12-28 18:52:14 +00:00
Maxime Coste
aa1c4d64f9
Completions: complete_filename correctly support directories
2011-12-22 13:44:04 +00:00
Maxime Coste
6fa5d809ef
whitespace fix
2011-12-22 13:33:29 +00:00
Maxime Coste
67c08e598b
IncrementalInserter: preserve selection through hook call
2011-12-21 19:06:51 +00:00
Maxime Coste
f77fc3980b
Window: store a stack of selections
2011-12-21 19:06:26 +00:00
Maxime Coste
c11b548662
kakrc: cleanup trailing whitespaces when quiting insert mode
2011-12-21 18:58:41 +00:00
Maxime Coste
70bb4847ee
IncrementalInserter: catch exception thrown by the hook
2011-12-21 18:57:07 +00:00
Maxime Coste
6c817c8117
Window: do not manage undo groups when an inserter is active
2011-12-21 18:56:32 +00:00
Maxime Coste
913ee3f096
Use Keys instead of char for keymap
2011-12-21 14:29:28 +00:00
Maxime Coste
ba1fe056f4
Add an exec command, similar to vim normal command
2011-12-20 19:22:05 +00:00
Maxime Coste
7116ed6d61
Window: throw when multiselect results in no selections
2011-12-20 19:27:13 +00:00
Maxime Coste
42a24895de
Add Key struct
2011-12-20 19:21:11 +00:00
Maxime Coste
91606850fd
Utils: add on_scope_end utility
...
on_scope_end permits to register a functor to be called at scope
end (either exception thrown or normal scope end). this is usefull
for cleanup code that must be run.
usage:
auto cleaner = on_scope_end([]() { cleanup(); });
2011-12-20 19:18:00 +00:00
Maxime Coste
17cab9c7c4
Filters: add cleanup_whitespace filter
...
this filter remove trailing whitespaces on the previous line
when inserting an end-of-line.
2011-12-20 14:27:01 +00:00
Maxime Coste
e77f58c010
better rvalue reference forwarding
2011-12-07 18:57:07 +00:00
Maxime Coste
2239fb6e49
Filters: move from buffer to window
2011-12-07 14:29:10 +00:00
Maxime Coste
c40eb2b03a
Buffer: replace insert and erase methods with modify
...
modify directly takes a Modification as parameter
2011-12-07 14:26:40 +00:00
Maxime Coste
2edddfe009
Buffer: rename BufferModification to Modification
2011-12-06 18:58:43 +00:00
Maxime Coste
73cebb9072
kakrc: do not highlight the end-of-line in trailing whitespaces
2011-12-06 18:50:05 +00:00
Maxime Coste
b245d80c4e
Window: preserve current selection when empty multi_select
2011-12-05 19:21:16 +00:00
Maxime Coste
4ae2fcffbd
Buffer: add comment for clamp
2011-12-05 19:21:11 +00:00
Maxime Coste
711c05b81e
Window: fix trailing spaces
2011-12-05 14:29:36 +00:00
Maxime Coste
23eafd4504
Add a repeat last insert command, bound to .
2011-12-05 14:28:45 +00:00
Maxime Coste
d1cc5da8a6
Filters: add expand_tabulations to insert spaces instead of tabs
2011-12-03 20:25:05 +00:00
Maxime Coste
74a315cd0e
kakrc: add preserve_indent filter on c++ files and highlight trailing spaces
2011-12-02 19:01:08 +00:00
Maxime Coste
c761420055
fix exec_commands_in_file
2011-12-02 19:00:37 +00:00
Maxime Coste
11d606f79e
{Filter,Highlighter}Registry: more infos on factory not found
2011-12-02 19:00:01 +00:00
Maxime Coste
0b4ed2280f
Buffer: call BufCreate hook on construction
2011-12-02 18:59:18 +00:00
Maxime Coste
8e39edc567
DynamicBufferIterator: fix end of buffer corner case
2011-12-02 18:57:18 +00:00
Maxime Coste
b1daf8de16
Selectors: fix select_line on the last line
2011-12-02 18:56:18 +00:00
Maxime Coste
94d59cc4dd
Buffer: add filter support
...
filters are functions called prior to applying a modification
to a buffer. They can manipulate the modification to change
the editor behaviour.
2011-12-02 14:28:27 +00:00
Maxime Coste
8e06e168d9
HighlighterRegistry: use idvaluemap to store factories
2011-12-02 14:22:51 +00:00
Maxime Coste
4252e0d610
Window: use an idvaluemap to store highlighters
2011-12-02 14:20:11 +00:00
Maxime Coste
a5a726d291
Add idvaluemap container
...
it is a vector based map, preserving insertion order and providing
completion on ids it contains.
2011-12-02 14:18:31 +00:00
Maxime Coste
934e62b502
stop clearing selections all the time
2011-11-30 14:18:54 +00:00
Maxime Coste
d8dd782960
Highlighters: style fix
2011-11-30 14:11:53 +00:00
Maxime Coste
0b48525b35
Window: do not stay on an eol when clearing selections
2011-11-29 22:48:00 +00:00
Maxime Coste
0859b20bcf
Rename Filter to Highlighter to be more explicit
2011-11-29 22:37:20 +00:00
Maxime Coste
e89516f2a3
IncrementalInserter: refactoring
2011-11-29 21:35:50 +00:00
Maxime Coste
b24dec89a2
Buffer: add iterator_at_line_{begin,end} methods
2011-11-28 19:31:29 +00:00
Maxime Coste
51ee0b61f4
DynamicBufferIterator: use const_cast instead of having a mutable field in Buffer
2011-11-28 18:55:17 +00:00
Maxime Coste
46a01b5a0b
Debug: stop writing key codes to debug buffer and cleanups
2011-11-28 18:52:29 +00:00
Maxime Coste
dc642f8afa
Buffer: refactor to remove do_{insert,erase} methods
2011-11-27 18:41:25 +00:00
Maxime Coste
08ba791ff4
Add a kakrc file which automatically enables hlcpp on c/c++ files
2011-11-27 13:02:50 +00:00
Maxime Coste
70e0393c4d
Add a source command to execute commands from file
...
a kakrc file in current directory is sourced automatically
at start
2011-11-27 12:59:59 +00:00
Maxime Coste
de19aeb035
File: extract read_file function which returns file content in a string
2011-11-27 12:56:38 +00:00
Maxime Coste
b59a0816b9
Add wq and wq! commands
2011-11-26 19:11:24 +00:00
Maxime Coste
e36153f035
CommandManager: fix complete and style tweak
2011-11-26 19:05:49 +00:00
Maxime Coste
a00961da99
Add hook command
2011-11-26 18:41:55 +00:00
Maxime Coste
dd2896ecc8
Window: call WinCreate hook on creation
2011-11-26 18:39:59 +00:00
Maxime Coste
9c117a821c
Filters: fix colorize_regex_range when range is not visible
2011-11-26 18:34:49 +00:00
Maxime Coste
68f3d24199
HooksManager: replace HookContext with Context
2011-11-26 18:34:10 +00:00
Maxime Coste
957446dee4
Add a Context parameter to commands
2011-11-26 18:32:57 +00:00
Maxime Coste
417802cbdf
CommandManager: argument splitting supports "multi word"
...
works with " and '
2011-11-26 17:20:02 +00:00
Maxime Coste
9775958012
Add a HooksManager class
2011-11-25 14:26:29 +00:00
Maxime Coste
9a4d8d5f4d
Filters: tweak colorize_cplusplus
2011-11-24 19:13:58 +00:00
Maxime Coste
dcfb5e15f2
SelectionHighlighter: highlight end of lines in selection
2011-11-24 19:13:38 +00:00
Maxime Coste
ea2aeea3a4
Filters: generalize colorize_regex in colorize_regex_range
2011-11-24 19:11:58 +00:00
Maxime Coste
2549a63c0b
Selectors: fix corner cases on first/last buffer char
2011-11-24 18:46:35 +00:00
Maxime Coste
30b4fb6513
Buffer: fix handling of last eol
2011-11-24 14:23:41 +00:00
Maxime Coste
7b09b34cab
Selectors: fix select_whole_lines
2011-11-22 18:58:05 +00:00
Maxime Coste
d27aaab066
use alt-x instead of , to select whole lines
2011-11-22 14:31:20 +00:00
Maxime Coste
a1200aacad
Add alt-j command to join lines
2011-11-22 14:24:50 +00:00
Maxime Coste
95f87a6694
Window: add replace method
...
permits to replace selection by a string in a single undo step
2011-11-22 14:23:46 +00:00
Maxime Coste
a7309fbe87
IncrementalInserter: fix erase
2011-11-21 22:18:00 +00:00
Maxime Coste
7861ad9ddb
Selectors: add split_selection bound to Alt-s
2011-11-21 19:30:44 +00:00
Maxime Coste
b67c36358d
Extract RegexSelector methods as plain selectors
2011-11-21 19:08:51 +00:00
Maxime Coste
2677fa7961
Add , to fully selects lines selection is on.
2011-11-21 18:53:22 +00:00
Maxime Coste
a1a57ea137
DisplayBuffer: fix DisplayAtom::iterator_at
2011-11-16 21:03:32 +00:00
Maxime Coste
bef193ae54
RegexSelector: support captures
2011-11-16 20:05:29 +00:00
Maxime Coste
18913cfbff
IncrementalInserter: add insert_capture method bound to ^B<num>
2011-11-16 19:24:37 +00:00
Maxime Coste
52b8abfe02
Selections: add captures field
...
Selections now can have associated captures, for backreferences when
selections are created from a regex search
2011-11-16 19:23:09 +00:00
Maxime Coste
b1e815a66c
RegexSelector: support multi selections, bound to s key
2011-11-16 14:06:01 +00:00
Maxime Coste
0203b904e1
Window: add multi_select method
...
multi_select provides Selection -> SelectionList operations
2011-11-16 14:04:45 +00:00
Maxime Coste
7423677236
Filters: cleanup trailing whitespaces
...
detected with ':addfilter regex \h+\n default red' !
2011-11-15 14:28:03 +00:00
Maxime Coste
d1868e8f07
ncurses: set ESCDELAY to 25 so that esc key lag is less noticeable
2011-11-15 14:26:28 +00:00
Maxime Coste
a3b5c74512
remove unused code
2011-11-14 14:27:33 +00:00
Maxime Coste
031fa1a25c
Filters: colorize_regex supports matches spanning multiple display atoms
2011-11-14 14:23:02 +00:00
Maxime Coste
d2b9cd6e60
DisplayBuffer: split now preserve iterator parameter
...
that means that the given iterator points to the first part of the
split (instead of the second in previous implementation).
2011-11-14 14:10:11 +00:00
Maxime Coste
0dc8442ca4
Completions: add filterid completion for rmfilter
2011-11-12 14:15:35 +00:00
Maxime Coste
a8b2c4f568
Completions: add basic addfilter completion
2011-11-12 14:08:05 +00:00
Maxime Coste
f5ad32f137
Completion: decentralise, move buffer name completion to BufferManager
2011-11-12 14:06:49 +00:00
Maxime Coste
82baa55eed
Completions: change NullCompletion functor to complete_nothing function
2011-11-10 20:57:25 +00:00
Maxime Coste
56231b4239
Filters: make colorize_regex accessible through addfilter
2011-11-10 14:28:38 +00:00
Maxime Coste
f12929abad
Filters: refactoring
2011-11-09 23:56:22 +00:00
Maxime Coste
5aeee719dd
fix launching on new file
2011-11-09 14:17:46 +00:00
Maxime Coste
55c092eed9
Filters: code cleanup
2011-11-09 14:06:05 +00:00
Maxime Coste
3af1b89034
Window: support adding and removing filters with :addfilter :rmfilter
2011-11-08 14:29:52 +00:00
Maxime Coste
1f3f5ea1ba
Filters: register existing filters with the registry
2011-11-08 14:28:01 +00:00
Maxime Coste
e4ff1d8ad8
Add a filter registry class
2011-11-08 14:27:21 +00:00
Maxime Coste
0ddb6df80d
IncrementalInserter: move cursor left when finishing
2011-11-04 14:15:35 +00:00
Maxime Coste
46e727d5b6
Filters: tweak colorize_cplusplus
2011-11-04 09:10:28 +00:00
Maxime Coste
cebb7980cb
Buffer: tweak default content
2011-11-04 09:10:05 +00:00
Maxime Coste
9cf7cb682c
Buffer: fix modified handling
2011-11-03 13:44:02 +00:00
Maxime Coste
4982620c4c
IncrementalInserter: support insert at line begin and append at line end
2011-11-02 20:03:41 +00:00
Maxime Coste
856a870d8b
fix not existing lines drawing
2011-11-02 14:22:20 +00:00
Maxime Coste
fbe8eed3e4
Selectors: select_line selects next line when cursor is on eol
2011-10-27 18:57:31 +00:00
Maxime Coste
0e18db5a88
lines and columns used for user interaction are 1-indexed
2011-10-27 14:27:39 +00:00
Maxime Coste
55cd4949e0
Selection: more intelligent merging
2011-10-27 14:22:17 +00:00
Maxime Coste
62482b65ec
rename buffer_iterator.inl.h to buffer_iterator.inl.hh
2011-10-27 14:13:39 +00:00
Maxime Coste
5bd61a3f38
Filters: correct select_to_previous_WORD
2011-10-27 14:09:57 +00:00
Maxime Coste
c532f031d2
Filters: tweak colorize_cpluscplus
2011-10-26 14:29:04 +00:00
Maxime Coste
b58694939c
bind alt-[lLhH] to select_to_eol(_reverse)?
2011-10-26 14:22:48 +00:00
Maxime Coste
5d5e76a3eb
change select_line binding from . to x
2011-10-26 14:18:43 +00:00
Maxime Coste
2c8f3229c0
Selectors: add selectors for WORDs
...
WORDs are the same as vim's ones, i.e. a group of contiguous non blank
characters. They are bound as alt + word selector key.
2011-10-25 18:46:14 +00:00
Maxime Coste
97a279e229
add alt-key binding support
...
bind alt-[tTfF] to backward version of [tTfF]
2011-10-25 14:28:20 +00:00
Maxime Coste
57b55a5824
DisplayBuffer: deactivate too expensive check
2011-10-24 19:27:36 +00:00
Maxime Coste
d2c6ceb47b
DynamicBufferIterator: add and use in Selections
...
DynamicBufferIterator are a new type of BufferIterators that
automatically update themselves when their buffer is modified.
Selections now uses this type of iterators instead of plain ones
2011-10-24 14:26:21 +00:00
Maxime Coste
bace526fa3
Buffer: not copyable, add destructor
2011-10-24 14:23:13 +00:00
Maxime Coste
12d933d896
Filters: rewrote colorize_regex
2011-10-23 20:26:51 +00:00
Maxime Coste
fffa405bfd
DisplayBuffer: overload atom_containing with a version taking an iterator to search start
2011-10-23 20:26:30 +00:00
Maxime Coste
ad6ee464f4
style tweak
2011-10-19 18:54:20 +00:00
Maxime Coste
712577b88e
CommandManager: fix completion of empty tokens
2011-10-19 18:50:28 +00:00
Maxime Coste
d7f934b7ca
Buffer: iterator_at prevents getting iterators on end of line
2011-10-19 14:25:13 +00:00
Maxime Coste
7e2f7f6715
IncrementalInserter: fix OpenLineBelow
2011-10-18 14:13:19 +00:00
Maxime Coste
32e01947fa
DisplayBuffer: store atoms in a std::list instead of a vector
2011-10-18 13:59:32 +00:00
Maxime Coste
6fd7f97fa7
Window: fix status_line cursor position
2011-10-18 13:49:10 +00:00
Maxime Coste
c7876f0ba3
DisplayBuffer: remove some check_invariant, overhead is too noticeable
2011-10-18 00:56:18 +00:00
Maxime Coste
8cab34d57f
Buffer: add support for modification listeners
2011-10-18 00:55:45 +00:00
Maxime Coste
d48a2bd325
BufferIterator: move methods implementation to buffer_iterator.inl.h
2011-10-17 22:05:06 +00:00
Maxime Coste
1c6eef08f1
utils: add contains function
2011-10-17 21:05:22 +00:00
Maxime Coste
316e84f119
Filters: add a show line numbers filter
2011-10-17 19:01:36 +00:00
Maxime Coste
2badb9d708
DisplayAtom: add splittable methode
2011-10-17 19:01:04 +00:00
Maxime Coste
79ee27dae7
DisplayBuffer: deinline insert method and add atom_containing method
2011-10-17 19:00:38 +00:00
Maxime Coste
88e31d8cce
DisplayBuffer: allow empty atoms, with begin == end
2011-10-17 18:59:35 +00:00
Maxime Coste
53ce1e016a
Buffer: move struct Modification out of class, as BufferModification
2011-10-17 14:12:15 +00:00
Maxime Coste
dc74934e59
DisplayBuffer: refactoring, correct support of replacements
...
DisplayAtoms now know where they are on the screen and have
line_and_column_at and iterator_at methods.
2011-10-15 04:45:49 +00:00
Maxime Coste
187a99aba2
LineAndColumn: add comparison operators
2011-10-15 04:42:28 +00:00
Maxime Coste
26459abf8a
WindowCoord: rename to DisplayCoord and move with DisplayBuffer
2011-10-14 14:29:53 +00:00
Maxime Coste
c5be69a9a9
BufferCoord: allow explicit construction from all LineAndColumns
2011-10-14 14:27:43 +00:00
Maxime Coste
2d54a7818e
Window: privatize coordinates conversion methods
2011-10-12 18:54:48 +00:00
Maxime Coste
80e7bac622
Selectors: remove unused move_select
2011-10-12 18:54:04 +00:00
Maxime Coste
be043ffe1e
Window: move_cursor_to takes a BufferIterator parameter
2011-10-12 18:53:38 +00:00
Maxime Coste
22bd9f90d5
Filters: add an expand_tabulation filter
2011-10-12 18:52:22 +00:00
Maxime Coste
f802a9f3be
Debug: add key integral value in the debug buffer on keystroke
2011-10-10 22:47:19 +00:00
Maxime Coste
219709e472
Completions: move code from main.cc to completion.hh
2011-10-10 22:38:58 +00:00
Maxime Coste
fe0e1c79f0
Window: scroll when inserting, appending, erasing if necessary
2011-10-10 14:28:39 +00:00
Maxime Coste
7e84ca9ae9
gl and gh now go to first or last character of the line
...
append mode is supported through G key
2011-10-10 14:24:17 +00:00
Maxime Coste
003c5d4e3d
remove useless line
2011-10-08 13:23:18 +00:00
Maxime Coste
afd1ae5458
Filters: tweak colorize_cplusplus
2011-10-07 14:28:38 +00:00
Maxime Coste
868a2f8107
ncurses: fix color support
2011-10-07 14:28:13 +00:00
Maxime Coste
10106e8c8e
DisplayBuffer: do not store content in atom, begin and end are sufficient
2011-10-07 14:19:58 +00:00
Maxime Coste
a19f4f059d
Debug: add a write_debug function
...
write_debug writes in a Scratch buffer named '*debug*', so that debug
messages are accessibles from within kakoune
2011-10-07 14:16:38 +00:00
Maxime Coste
9db4aa9691
Buffer: add a type property
2011-10-07 14:15:55 +00:00
Maxime Coste
12535e1099
Window: get rid of select_mode
2011-10-07 14:03:25 +00:00
Maxime Coste
ca99a51bca
clear selections after a change
2011-10-06 21:13:33 +00:00
Maxime Coste
1e224dc586
whitespace fix
2011-10-06 21:13:16 +00:00
Maxime Coste
571e4772b4
IncrementalInserter: support OpenLineBelow and OpenLineAbove mode
2011-10-06 21:12:55 +00:00
Maxime Coste
cf9f8c93ec
Filters: tweak colorize_cplusplus
2011-10-06 21:12:16 +00:00
Maxime Coste
f9be716776
quit: do not quit if modified buffer exists, add q! command
2011-10-05 18:43:47 +00:00
Maxime Coste
cf162ae617
draw_window: add a space for eol, so that selected eol are visible
2011-10-05 14:28:20 +00:00
Maxime Coste
ff730380ed
Window: empty_selections -> clear_selections
...
clear_selections also reset select_mode to Normal,
most editing operations now do a clear_selections.
2011-10-05 14:24:52 +00:00
Maxime Coste
4ce349fa02
Buffer: modification tracking
2011-10-05 14:21:24 +00:00
Maxime Coste
f4743e08bd
Filters: tweaks colorize_cplusplus
2011-10-04 19:08:34 +00:00
Maxime Coste
c8cf7bbaa9
Window: add a basic status line
2011-10-04 18:49:41 +00:00
Maxime Coste
4f771b084a
escape-key force return to normal mode
2011-10-03 18:41:05 +00:00
Maxime Coste
945426f47a
File: fix write_buffer_to_file
2011-10-03 18:40:12 +00:00
Maxime Coste
6a0b570e50
Filters: add a colorize_cplusplus filter and use it by default in Window
2011-10-03 14:30:14 +00:00
Maxime Coste
d99bcd7f2e
bind T and F as select_to_reverse non-inclusive and inclusive
2011-10-03 14:29:44 +00:00
Maxime Coste
01ac17ed04
Filters: add a colorize_regex filter
2011-09-30 19:16:23 +00:00
Maxime Coste
36c3bb6ae3
ncurses: quick'n'dirty color support
2011-09-30 19:15:14 +00:00
Maxime Coste
e351acd997
Window: fix blink_void
2011-09-29 14:23:46 +00:00
Maxime Coste
834e2d2fe3
DisplayBuffer: check_invariant method to assert atoms consistency
2011-09-29 09:10:27 +00:00
Maxime Coste
e659ea2dab
DisplayBuffer: add a split method to split an atom
2011-09-29 08:55:08 +00:00
Maxime Coste
822fc0f822
Window: add a test filter to make 'void' blink
2011-09-29 08:37:27 +00:00
Maxime Coste
ba2800ddac
Window: refactor DisplayBuffer generation
2011-09-28 20:54:11 +00:00
Maxime Coste
7746c78ccc
BufferIterator: add operator>{,=}
2011-09-28 20:53:29 +00:00
Maxime Coste
a30b7c1e9f
Window: fix scrolling when select_mode == Append
2011-09-28 19:21:49 +00:00
Maxime Coste
e619a81375
IncrementalInserter: Append, Insert or Change mode specified at construction
2011-09-28 19:14:39 +00:00
Maxime Coste
43fb64a913
Window: selection behaviour now depends on a window state
...
more vi-like behaviour, hit the v key to toggle append selection mode,
this means much more keys become available for mapping, as caps are now
longer reserved to append mode.
2011-09-28 14:23:43 +00:00
Maxime Coste
309b722df9
Window: cursors are now implicit, taken from current selections
...
Window hence guarantees that there is always at least one selection.
2011-09-27 18:45:22 +00:00
Maxime Coste
610acb3c0e
Selectors: add a count argument to select_to
2011-09-27 14:27:48 +00:00
Maxime Coste
01018a5eac
Handle paste before and paster after with p and P
2011-09-27 14:15:20 +00:00
Maxime Coste
924a85d14f
erase, change: yank current selection before erasing
2011-09-26 08:59:32 +00:00