Algumas pessoas podem pensar que é mais simples de usar setq. Algumas pessoas podem pensar que é mais lispy. Na realidade, é ingênuo no caso geral.
É verdade que, para algumas opções de usuário, isso não importa. Mas para outros, isso importa, e setqé a abordagem errada para essas opções. Então, como regra geral, setqé a abordagem errada.
Se você usar custom-set-variablesou em customize-set-variablevez de setq, ou se você usar a interface do usuário Personalizar (por exemplo M-x customize-option), terá certeza de que qualquer código de inicialização ou atualização pretendido necessário para o valor da opção será automaticamente acionado e executado conforme necessário. Se você usar setq, isso não será feito.
Agora, também é o caso de a maioria das opções de usuário, especialmente muitas escritas para bibliotecas de terceiros, não fazem uso das defcustompalavras - chave :sete :initialize, e o uso setqnão importa para elas. Mas muitas opções de baunilha do Emacs usam essas palavras-chave e, para aquelas que o fazem, setqnão é a coisa certa. Portanto, se você deseja usar o código Lisp e não a interface do usuário Personalizar para definir suas opções, é melhor usar custom-set-variablesou em customize-set-variablevez de setq. Nunca dói e às vezes ajuda (muito).
Mas o que eu recomendo é fazer as duas coisas:
Use a interface do usuário Personalizar em vez de escrever o código Lisp para isso.
Defina a variávelcustom-file , para que o Customize grave personalizações nesse arquivo e não no seu arquivo init ( ~/.emacs). IOW, mantenha seu código de inicialização escrito à mão separado do código automático escrito por Customize.