diff options
Diffstat (limited to 'modules/textadept/filter_through.lua')
-rw-r--r-- | modules/textadept/filter_through.lua | 61 |
1 files changed, 0 insertions, 61 deletions
diff --git a/modules/textadept/filter_through.lua b/modules/textadept/filter_through.lua deleted file mode 100644 index 59cb77b0..00000000 --- a/modules/textadept/filter_through.lua +++ /dev/null @@ -1,61 +0,0 @@ --- Copyright 2007-2013 Mitchell mitchell.att.foicica.com. See LICENSE. - -local M = {} - ---[[ This comment is for LuaDoc. ---- --- Filters text through shell commands. -module('_M.textadept.filter_through')]] - -local cat = not WIN32 and 'cat' or 'type' -local tmpfile = _USERHOME..'/.ft' - ---- --- Passes selected or all buffer text to string shell command *cmd* as standard --- input (stdin) and replaces the input text with the command's standard output --- (stdout). --- Standard input is as follows: --- --- 1. If text is selected and spans multiple lines, all text on the lines --- containing the selection is used. However, if the end of the selection is at --- the beginning of a line, only the EOL (end of line) characters from the --- previous line are included as input. The rest of the line is excluded. --- 2. If text is selected and spans a single line, only the selected text is --- used. --- 3. If no text is selected, the entire buffer is used. --- @param cmd The Linux, BSD, Mac OSX, or Windows shell command to filter text --- through. --- @name filter_through -function M.filter_through(cmd) - local buffer = buffer - local s, e = buffer.selection_start, buffer.selection_end - local input - if s ~= e then -- use selected lines as input - local i, j = buffer:line_from_position(s), buffer:line_from_position(e) - if i < j then - s = buffer:position_from_line(i) - if buffer.column[e] > 0 then e = buffer:position_from_line(j + 1) end - end - input = buffer:text_range(s, e) - else -- use whole buffer as input - input = buffer:get_text() - end - local f = io.open(tmpfile, 'wb') - f:write(input) - f:close() - local cmd = cat..' "'..tmpfile..'" | '..cmd - if WIN32 then cmd = cmd:gsub('/', '\\') end - local p = io.popen(cmd) - if s ~= e then - buffer.target_start, buffer.target_end = s, e - buffer:replace_target(p:read('*all')) - buffer:set_sel(buffer.target_start, buffer.target_end) - else - buffer:set_text(p:read('*all')) - buffer:goto_pos(s) - end - p:close() - os.remove(tmpfile) -end - -return M |