Convert multiple line into one big string in Emacs
This command converts selected region in Emacs into one string and put it into the kill ring.
Why I need this command? I'm doing some web developement now. I've got a javascript API whose parameter is a string in html syntax. I write that beautifully indented multiple lines string in html editor to make sure the string is correct. Then I convert the multiple lines string into one string without line breaks so that I can paste the one line string into my javascript code.
In certain situation, this method actually makes code more readable.
Here is code you can paste into your .emacs:
(defun strip-convert-lines-into-one-big-string (beg end)
"strip and convert selected lines into one big string which is copied into kill ring.
When transient-mark-mode is enabled, if no region is active then only the
current line is acted upon.
If the region begins or ends in the middle of a line, that entire line is
copied, even if the region is narrowed to the middle of a line.
Current position is preserved."
(interactive "r")
(let (str (orig-pos (point-marker)))
(save-restriction
(widen)
(when (and transient-mark-mode (not (use-region-p)))
(setq beg (line-beginning-position)
end (line-beginning-position 2)))
(goto-char beg)
(setq beg (line-beginning-position))
(goto-char end)
(unless (= (point) (line-beginning-position))
(setq end (line-beginning-position 2)))
(goto-char beg)
(setq str (replace-regexp-in-string "[ \t]*\n" "" (replace-regexp-in-string "^[ \t]+" "" (buffer-substring-no-properties beg end))))
;; (message "str=%s" str)
(kill-new str)
(goto-char orig-pos)))
)
(global-set-key (kbd "C-c C-y") 'strip-convert-lines-into-one-big-string)