aboutsummaryrefslogtreecommitdiff
path: root/modules/textadept/filter_through.lua
diff options
context:
space:
mode:
authormitchell <70453897+667e-11@users.noreply.github.com>2013-04-24 10:06:11 -0400
committermitchell <70453897+667e-11@users.noreply.github.com>2013-04-24 10:06:11 -0400
commit36854c6ca8970714a6c672ca8774da4c5e9bd69e (patch)
treece192a95fef1f5f1202dd3008c85402656b35d2c /modules/textadept/filter_through.lua
parenta460a7a12a5465168b6ff89f3021cdc67f54ba76 (diff)
downloadtextadept-36854c6ca8970714a6c672ca8774da4c5e9bd69e.tar.gz
textadept-36854c6ca8970714a6c672ca8774da4c5e9bd69e.zip
Moved `_M.textadept.filter_through` functionality into `editing` module.
Diffstat (limited to 'modules/textadept/filter_through.lua')
-rw-r--r--modules/textadept/filter_through.lua61
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