I've came across this comment in an evil-surround issue, which stated this code:
;; use non-spaced pairs when surrounding with an opening brace
(evil-add-to-alist
'evil-surround-pairs-alist
?\( '("(" . ")")
?\[ '("[" . "]")
?\{ '("{" . "}")
?\) '("( " . " )")
?\] '("[ " . " ]")
?\} '("{ " . " }"))
And it actually works. but what are those strange ?\
symbols? What are they doing? What do they mean?