(defun make-regex-str (max-len) (++ "(.{1," (integer_to_list max-len) "}|\\S{" (integer_to_list (+ max-len 1)) ",})(?:\\s[^\\S\\r\\n]*|\\Z)")) (defun wrap-text (text max-len) (let ((find-patt (make-regex-str max-len)) (replace-patt "\\1\\\n")) (re:replace text find-patt replace-patt '(global #(return list)))))