aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sx.el9
1 files changed, 8 insertions, 1 deletions
diff --git a/sx.el b/sx.el
index f1d3634..3010bdc 100644
--- a/sx.el
+++ b/sx.el
@@ -189,24 +189,31 @@ Anything before the (sub)domain is removed."
"" url)))
(defun sx--unindent-text (text)
- "Remove indentation from TEXT."
+ "Remove indentation from TEXT.
+Primarily designed to extract the content of markdown code
+blocks."
(with-temp-buffer
(insert text)
(goto-char (point-min))
(let (result)
+ ;; Get indentation of each non-blank line
(while (null (eobp))
(skip-chars-forward "[:blank:]")
(unless (looking-at "$")
(push (current-column) result))
(forward-line 1))
(when result
+ ;; Build a regexp with the smallest indentation
(let ((rx (format "^ \\{0,%s\\}"
(apply #'min result))))
(goto-char (point-min))
+ ;; Use this regexp to remove that much indentation
+ ;; throughout the buffer.
(while (and (null (eobp))
(search-forward-regexp rx nil 'noerror))
(replace-match "")
(forward-line 1)))))
+ ;; Return the buffer
(buffer-string)))