feat: Add functionals with parameters
* The group of mut cursels has a new member that receives a parameter * Added a function to get the number of items(one visible cell characters) within a cursel.
This commit is contained in:
		
							parent
							
								
									3249c35c02
								
							
						
					
					
						commit
						411b26d4aa
					
				
					 1 changed files with 38 additions and 0 deletions
				
			
		|  | @ -1632,6 +1632,26 @@ pub const Editor = struct { | ||||||
|         return self.primary.col - self.view.col; |         return self.primary.col - self.view.col; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     pub fn cursel_length(root: Buffer.Root, cursel_: CurSel, metrics: Buffer.Metrics) usize { | ||||||
|  |         var length: usize = 0; | ||||||
|  |         var cursel = cursel_; | ||||||
|  |         cursel.check_selection(root, metrics); | ||||||
|  |         if (cursel.selection) |*sel| { | ||||||
|  |             sel.normalize(); | ||||||
|  |             if (sel.begin.row == sel.end.row) { | ||||||
|  |                 length = sel.end.col - sel.begin.col; | ||||||
|  |             } else { | ||||||
|  |                 var row = sel.begin.row; | ||||||
|  |                 while (row < sel.end.row) { | ||||||
|  |                     length += root.line_width(row, metrics) catch 0; | ||||||
|  |                     row += 1; | ||||||
|  |                 } | ||||||
|  |                 length = length + sel.end.col - sel.begin.col; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return length; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     fn update_event(self: *Self) !void { |     fn update_event(self: *Self) !void { | ||||||
|         const primary = self.get_primary(); |         const primary = self.get_primary(); | ||||||
|         const dirty = if (self.buffer) |buf| buf.is_dirty() else false; |         const dirty = if (self.buffer) |buf| buf.is_dirty() else false; | ||||||
|  | @ -2031,6 +2051,23 @@ pub const Editor = struct { | ||||||
|         return if (someone_stopped) error.Stop else {}; |         return if (someone_stopped) error.Stop else {}; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     fn with_cursel_mut_arg(self: *Self, root: Buffer.Root, op: cursel_operator_mut_arg, cursel: *CurSel, allocator: Allocator, ctx: Context) error{Stop}!Buffer.Root { | ||||||
|  |         return op(self, root, cursel, allocator, ctx); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     pub fn with_cursels_mut_once_arg(self: *Self, root_: Buffer.Root, move: cursel_operator_mut_arg, allocator: Allocator, ctx: Context) error{Stop}!Buffer.Root { | ||||||
|  |         var root = root_; | ||||||
|  |         var someone_stopped = false; | ||||||
|  |         for (self.cursels.items) |*cursel_| if (cursel_.*) |*cursel| { | ||||||
|  |             root = self.with_cursel_mut_arg(root, move, cursel, allocator, ctx) catch ret: { | ||||||
|  |                 someone_stopped = true; | ||||||
|  |                 break :ret root; | ||||||
|  |             }; | ||||||
|  |         }; | ||||||
|  |         self.collapse_cursors(); | ||||||
|  |         return if (someone_stopped) error.Stop else root; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     fn with_cursel_const(root: Buffer.Root, op: cursel_operator_const, cursel: *CurSel) error{Stop}!void { |     fn with_cursel_const(root: Buffer.Root, op: cursel_operator_const, cursel: *CurSel) error{Stop}!void { | ||||||
|         return op(root, cursel); |         return op(root, cursel); | ||||||
|     } |     } | ||||||
|  | @ -2100,6 +2137,7 @@ pub const Editor = struct { | ||||||
|     const cursor_operator = *const fn (root: Buffer.Root, cursor: *Cursor, allocator: Allocator) error{Stop}!Buffer.Root; |     const cursor_operator = *const fn (root: Buffer.Root, cursor: *Cursor, allocator: Allocator) error{Stop}!Buffer.Root; | ||||||
|     const cursel_operator = *const fn (root: Buffer.Root, cursel: *CurSel, allocator: Allocator) error{Stop}!Buffer.Root; |     const cursel_operator = *const fn (root: Buffer.Root, cursel: *CurSel, allocator: Allocator) error{Stop}!Buffer.Root; | ||||||
|     const cursel_operator_mut = *const fn (self: *Self, root: Buffer.Root, cursel: *CurSel, allocator: Allocator) error{Stop}!Buffer.Root; |     const cursel_operator_mut = *const fn (self: *Self, root: Buffer.Root, cursel: *CurSel, allocator: Allocator) error{Stop}!Buffer.Root; | ||||||
|  |     const cursel_operator_mut_arg = *const fn (self: *Self, root: Buffer.Root, cursel: *CurSel, allocator: Allocator, ctx: Context) error{Stop}!Buffer.Root; | ||||||
| 
 | 
 | ||||||
|     pub fn is_not_word_char(c: []const u8) bool { |     pub fn is_not_word_char(c: []const u8) bool { | ||||||
|         if (c.len == 0) return true; |         if (c.len == 0) return true; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Igor Támara
						Igor Támara