diff options
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/init-text.el | 25 |
1 files changed, 25 insertions, 0 deletions
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) |