From df5873b1e2edf8e2631db236546618cb3431e3c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Fri, 11 Mar 2016 19:04:17 +0100 Subject: Support sam's structural regular expression based command language For those not familiar with sam(1) more information can be found at http://sam.cat-v.org/ For now sam commands can be entered from the vis prompt via :sam A command behaves differently depending on the mode in which it is issued: - in visual mode it behaves as if an implicit extract x command matching the current selection(s) would be preceding it. That is the command is executed once for each selection. - in normal mode: * if an address for the command was provided it is evaluated starting from the current cursor position(s) i.e. dot is set to the current cursor position. * if no address was supplied to the command then: + if multiple cursors exist, the command is executed once for every cursor with dot set to the current line of the cursor + otherwise if there is only 1 cursor then the command is executed with dot set to the whole file The command syntax was slightly tweaked to accpet more terse commands. - When specifiying text or regular expressions the trailing delimiter can be elided if the meaning is unambigious. - If only an address is provided the print command will be executed. - The print command creates a selection matching its range. - In text entry \t inserts a literal tab character (sam only recognizes \n). Hence the sam command ,x/pattern/ can be abbreviated to x/pattern If a command is successful vis switches to normal mode (and hence removes any selections), otherwise the editor is kept in visual mode. The print command "fails" by definition. --- text-regex.h | 1 + 1 file changed, 1 insertion(+) (limited to 'text-regex.h') diff --git a/text-regex.h b/text-regex.h index 15b2340..c18caa3 100644 --- a/text-regex.h +++ b/text-regex.h @@ -1,6 +1,7 @@ #ifndef TEXT_REGEX_H #define TEXT_REGEX_H +#include #include "text.h" typedef struct Regex Regex; -- cgit v1.2.3