From bf24b6b129620726943183169498a0f29949bc94 Mon Sep 17 00:00:00 2001 From: Kyle Meyer Date: Sun, 28 Sep 2014 01:18:18 -0400 Subject: Add columnify-file --- lisp/init-text.el | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'lisp/init-text.el') diff --git a/lisp/init-text.el b/lisp/init-text.el index c733927..ecd4831 100644 --- a/lisp/init-text.el +++ b/lisp/init-text.el @@ -31,4 +31,29 @@ is non-nil, the region is copied with `x-select-text'." (when arg (x-select-text (buffer-substring-no-properties (point-min) (point-max)))))) +(defun km/columnify-file (delim) + "Separate current file on DELIM using column program. + +By default, DELIM is set to \",\". With a single prefix argument, +use whitespace as the delimiter. With two prefix arguments, +prompt for a delimiter. + +If a columnified buffer already exists, just switch to it." + (interactive (list (cond ((not current-prefix-arg) ",") + ((> (prefix-numeric-value current-prefix-arg) 4) + (read-string "Delimiter: ")) + (t nil)))) + (let* ((bufname (buffer-name)) + (output-buffer-name (concat "*cols: " bufname "*")) + (output-buffer (get-buffer output-buffer-name)) + (fname (file-relative-name buffer-file-name)) + (col-args '("-t"))) + (unless output-buffer + (setq output-buffer (get-buffer-create output-buffer-name)) + (when delim + (add-to-list 'col-args (format "-s'%s'" delim))) + (apply 'call-process "column" fname output-buffer nil + col-args)) + (switch-to-buffer output-buffer))) + (provide 'init-text) -- cgit v1.2.3