Emacs - expressões regulares no Lisp precisam ser escapadas duas vezes - por qu
Eu andei brincando com o emacs lisp e queria escrever uma pequena função para fazer uma pesquisa e substituição de expressões regulares. Demorou um pouco para que a expressão regular funcionasse corretamente porque não percebi que todos os caracteres especiais precisam ser escapados duas vezes ao escrever o código lisp (mas não ao usar o query-replace-regexp interativamente!).
or exemplo, usando query-replace-regexp interativamente, você pode usar
^\(.*\)[\t]-.*$
mas, ao escrever o código elisp, você precisa escapar duas vezes assim:
^\\(.*\\)[\t]-.*$
Finalmente encontrei uma referência a isso em um Steve Yeggeartig, mas eu queria saber se alguém sabia por que isso é?