Commit Graph

83 Commits

Author SHA1 Message Date
Maxime Coste
9ec10daf69 move clamp to utils.hh 2012-10-02 14:08:09 +02:00
Maxime Coste
e39086cd5f Buffer: reset undo data after executing hooks in constructor 2012-09-11 19:03:37 +02:00
Maxime Coste
f9e31856cf Buffer: Allow inserting at the end when the inserted text ends with an end of line
Adapted other code in consequence and added unit tests so that this behavior
is maintained.
2012-09-10 19:26:17 +02:00
Maxime Coste
e4fd839dda use a strongly typed int CharCount for character counts 2012-08-23 23:56:35 +02:00
Maxime Coste
0d8cce2728 use a strongly typed int LineCount for line counts 2012-08-22 23:33:52 +02:00
Maxime Coste
0eaf39b725 Add Buffer::iterator_at_line{begin,end}(size_t line) overloads 2012-08-21 20:52:49 +02:00
Maxime Coste
390d4ccdfc Buffer::{iterator_at,clamp} takes an optional avoid_eol parameter
when avoid_eol is true, clamping does avoid end-of-line if possible
2012-08-15 18:06:59 +02:00
Maxime Coste
260b30e6d9 misc cleanups 2012-08-15 17:55:58 +02:00
Maxime Coste
5393e9e78b Buffer: add a timestamp 2012-08-15 17:07:53 +02:00
Maxime Coste
4e34f777b0 Buffer: stronger invariant, a buffer is never empty and all lines finish by '\n' 2012-08-14 14:13:10 +02:00
Maxime Coste
759319ca44 Buffer: move back Modification as an implementation detail
* Filters now only works on insertion and take directly the
   iterator and content
 * use Buffer::insert and Buffer::erase to modify a buffer
2012-08-10 19:12:43 +02:00
Maxime Coste
54b599c1a7 Buffer: fix corner case in insert 2012-08-10 14:22:57 +02:00
Maxime Coste
c7fc2a9317 Buffer: add reset_undo_data method 2012-08-10 14:21:32 +02:00
Maxime Coste
ce99856bfa Refactor BufferManager 2012-08-08 19:36:40 +02:00
Maxime Coste
18ca422306 Context: only buffer context are not allowed, an editor is always needed 2012-08-05 20:12:43 +02:00
Maxime Coste
23f72851e4 Buffer: fix insert at end of buffer 2012-08-02 07:04:04 +02:00
Maxime Coste
4908b2c3ef Fix end_it computation in Buffer::insert, avoid clamping in iterator_at 2012-07-18 14:12:41 +02:00
Maxime Coste
31c0931dff Go back to a generic BufferChangeListener interface for selection update 2012-07-16 21:51:37 +02:00
Maxime Coste
49e1d91804 Buffer: pass by value instead of by reference when object will be copied anyway
Let copy elision and move semantics kick in
2012-06-29 13:19:29 +02:00
Maxime Coste
36e4dacdf5 Fix BufferIterator::on_erase and tweak Buffer 2012-06-28 14:26:01 +02:00
Maxime Coste
ccec35f88c code cleanups in buffer 2012-06-25 19:05:32 +02:00
Maxime Coste
eb34f6db73 execute BufClose hook in Buffer destructor 2012-06-14 17:44:28 +00:00
Maxime Coste
fd8517f91e fix some warnings detected with clang 2012-06-05 13:33:02 +00:00
Maxime Coste
bc359d7c90 BufCreate hook is always called for every buffer, BufNew is called when creating a new file 2012-06-12 18:27:57 +00:00
Maxime Coste
9bcfda3226 HookManager are now hierarchical from window to buffer to global
window hooks also executes buffer hook which also execute global hooks
2012-06-07 13:29:44 +00:00
Maxime Coste
a7c33207d6 check if no modification were made in Buffer::end_undo_group 2012-06-04 14:12:37 +00:00
Maxime Coste
9337938403 replace std::string references with String 2012-04-14 01:17:09 +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
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
9444c84b1c rename HooksManager to HookManager 2012-04-03 12:01:01 +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
792f0f7f2e BufferManager no longer owns buffers, only register them 2012-03-26 14:21:49 +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
df0f7b4689 rename BufferString to String 2012-03-08 21:23:29 +00:00
Maxime Coste
c98657a512 fix some unitialized variable use (thanks valgrind) 2012-03-08 20:49:10 +00:00
Maxime Coste
0ce3bc4621 simplify and optimize buffer line handling 2012-03-06 14:27:03 +00:00
Maxime Coste
c4ad372d91 call compute_lines before hooks at Buffer construction 2012-02-28 14:23:52 +00:00
Maxime Coste
5bddd166f1 fix Buffer::line_length for last line 2012-02-27 19:52:36 +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
96101b4392 Use an Editor instead of a Window as much as possible 2012-02-02 20:48:03 +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
945ad361fb HooksManager: forward declare Context instead of including context.hh 2012-01-23 13:56:43 +00:00