(Arne Babenhauserheide)
2013-12-31: blind implementation of non-inline paren preiffixes support-scheme-macro-paren-quoting blind implementation of non-inline paren preiffixes
diff --git a/wisp-guile.w b/wisp-guile.w --- a/wisp-guile.w +++ b/wisp-guile.w @@ -15,6 +15,7 @@ define-module : wisp . #:export : wisp2lisp wisp-chunkreader + . #:use-modules : srfi srfi-1 define : endsinunevenbackslashes text ; comment if : = 0 : string-length text @@ -459,15 +460,31 @@ define : last-indent levels list-ref levels 0 define : line-add-starting-bracket line - . "Add a starting bracket to the line, if it is no continuation line (it is more indented than the previous)." - ; TODO: If line starts with one of ' , ` #` #' #, #,@, then turn it into '(... instead of ('... - list - line-indent line - string-append - . "(" - line-content line - line-comment line + . "Add a starting bracket to the line, if it is no continuation line (it is more indented than the previous). +If line starts with one of ' , ` #` #' #, #,@, then turn it into '(... instead of ('..." + let loop : : paren-prefixes : list "'" "," "`" "#`" "#'" "#," "#,@," + ; first check whether we are done checking + if : null-list? paren-prefixes + ; construct the line structure: '(indentation-depth content comment) + list + line-indent line + string-append + . "(" + line-content line + line-comment line + ; otherwise check all possible prefixes + let : : prefix : car paren-prefix + if : string-prefix? prefix line + list + line-indent line + string-append + . prefix "(" + line-content line + line-comment line + ; else + loop : cdr paren-prefixes + define : line-add-closing-brackets line number . "Add a closing bracket to the line." list