I have the following function to produce a form that can be "printed" to a ~/.gnus
file to configure gnus to use a certain stmp and imap server for an account:
(defun gnus-imap-smtp-form (email smtp-server-port imap-server-port)
(destructuring-bind ((smtp-server . smtp-port) . (imap-server . imap-port))
(cons smtp-server-port imap-server-port)
`(let ((email ,email)
(smtp-server ,smtp-server)
(smtp-port ,smtp-port)
(imap-server ,imap-server)
(imap-port ,imap-port))
(setf gnus-select-method
`(nnimap ,email
(nnimap-address ,imap-server)
(nnimap-server-port ,imap-port)
(nnimap-stream ssl)))
(setf message-send-mail-function 'smtpmail-send-it
smtpmail-starttls-credentials `((,smtp-server ,smtp-port nil nil))
smtpmail-auth-credentials `((,smtp-server ,smtp-port
,email nil))
smtpmail-default-smtp-server smtp-server
smtpmail-smtp-server smtp-server
smtpmail-smtp-service smtp-port
gnus-ignored-newsgroups
"^to\\.\\|^[0-9. ]+\\( \\|$\\)\\|^[\"]\"[#'()]")
(setf user-mail-address email)
(setf smtpmail-stream-type 'starttls))))
In the past, the above has generated the correct form:
(gnus-imap-smtp-form "[email protected]" '("my.company.smtp" . 587) '("my.company.imap" . 993))
(let
((email "[email protected]")
(smtp-server "my.company.smtp")
(smtp-port 25)
(imap-server "my.company.imap")
(imap-port 993))
(setf gnus-select-method
`(nnimap ,email
(nnimap-address ,imap-server)
(nnimap-server-port ,imap-port)
(nnimap-stream ssl)))
(setf message-send-mail-function 'smtpmail-send-it smtpmail-starttls-credentials
`((,smtp-server ,smtp-port nil nil))
smtpmail-auth-credentials
`((,smtp-server ,smtp-port ,email nil))
smtpmail-default-smtp-server smtp-server smtpmail-smtp-server smtp-server smtpmail-smtp-service smtp-port gnus-ignored-newsgroups "^to\\.\\|^[0-9. ]+\\( \\|$\\)\\|^[\"]\"[#'()]")
(setf user-mail-address email)
(setf smtpmail-stream-type 'starttls))
Today, I tried to generate the form for another account, but I am getting triple dots ...
instead of nested backquotes:
(gnus-imap-smtp-form "[email protected]" '("smtp.gmail.com" . 587) '("imap.gmail.com" . 993))
(let
((email "[email protected]")
(smtp-server "smtp.gmail.com")
(smtp-port 587)
(imap-server "imap.gmail.com")
(imap-port 993))
(setf gnus-select-method
`(nnimap ... ... ... ...))
(setf message-send-mail-function 'smtpmail-send-it smtpmail-starttls-credentials
`(...)
smtpmail-auth-credentials
`(...)
smtpmail-default-smtp-server smtp-server smtpmail-smtp-server smtp-server smtpmail-smtp-service ...)
(setf user-mail-address email)
(setf smtpmail-stream-type 'starttls))
What could be happening?
I've tried (prin1 form)
, let-binding to nil
both eval-expression-print-length
and eval-expression-print-level
, but prin1
still abbreviates the expression:
(let ((eval-expression-print-length nil)
(eval-expression-print-level nil))
(prin1 form))
(let ((email "[email protected]") (smtp-server "smtp.gmail.com") (smtp-port 587) (imap-server "imap.gmail.com") (imap-port 993)) (setf gnus-select-method (\` (nnimap ... ... ... ...))) (setf message-send-mail-function (quote smtpmail-send-it) smtpmail-starttls-credentials (\` (...)) smtpmail-auth-credentials (\` (...)) smtpmail-default-smtp-server smtp-server smtpmail-smtp-server smtp-server smtpmail-smtp-service ...) (setf user-mail-address email) (setf smtpmail-stream-type (quote starttls)))
(let
((email "[email protected]")
(smtp-server "smtp.gmail.com")
(smtp-port 587)
(imap-server "imap.gmail.com")
(imap-port 993))
(setf gnus-select-method
`(nnimap ... ... ... ...))
(setf message-send-mail-function 'smtpmail-send-it smtpmail-starttls-credentials
`(...)
smtpmail-auth-credentials
`(...)
smtpmail-default-smtp-server smtp-server smtpmail-smtp-server smtp-server smtpmail-smtp-service ...)
(setf user-mail-address email)
(setf smtpmail-stream-type 'starttls))
Binding print-level
and print-length
:
(let ((eval-expression-print-length nil)
(eval-expression-print-level nil)
(print-level nil)
(print-length nil))
(prin1 form))
(let ((email "[email protected]") (smtp-server "smtp.gmail.com") (smtp-port 587) (imap-server "imap.gmail.com") (imap-port 993)) (setf gnus-select-method (\` (nnimap (\, email) (nnimap-address (\, imap-server)) (nnimap-server-port (\, imap-port)) (nnimap-stream ssl)))) (setf message-send-mail-function (quote smtpmail-send-it) smtpmail-starttls-credentials (\` (((\, smtp-server) (\, smtp-port) nil nil))) smtpmail-auth-credentials (\` (((\, smtp-server) (\, smtp-port) (\, email) nil))) smtpmail-default-smtp-server smtp-server smtpmail-smtp-server smtp-server smtpmail-smtp-service smtp-port gnus-ignored-newsgroups "^to\\.\\|^[0-9. ]+\\( \\|$\\)\\|^[\"]\"[#'()]") (setf user-mail-address email) (setf smtpmail-stream-type (quote starttls)))
(let
((email "[email protected]")
(smtp-server "smtp.gmail.com")
(smtp-port 587)
(imap-server "imap.gmail.com")
(imap-port 993))
(setf gnus-select-method
`(nnimap ... ... ... ...))
(setf message-send-mail-function 'smtpmail-send-it smtpmail-starttls-credentials
`(...)
smtpmail-auth-credentials
`(...)
smtpmail-default-smtp-server smtp-server smtpmail-smtp-server smtp-server smtpmail-smtp-service ...)
(setf user-mail-address email)
(setf smtpmail-stream-type 'starttls))
eval-expression-print-level
. Try setting it tonil
; do you still get the same result? – Tianxiang Xiong Apr 11 '17 at 17:35eval-expression-print-level
andeval-expression-print-length
to nil, but I'm still getting the dots on(pp form)
– erjoalgo Apr 11 '17 at 18:10(prin1 form)
, which is in C source, but(prin1 form)
still produces the dots – erjoalgo Apr 11 '17 at 18:12pp
usesprin1
, so try bindingprint-level
instead ofeval-expression-print-level
. – Tianxiang Xiong Apr 11 '17 at 18:59eval-expression
and seeing the results in the echo area? That's controlled by theeval-expression-
vars. For general printing,print-
vars are used directly. See related question. – Tianxiang Xiong Apr 11 '17 at 19:18(macroexpand '(defun foo () (let ((bar)) (+ 1 2))))
on Emacs 25.1. – Tianxiang Xiong Apr 11 '17 at 19:24GNU Emacs 24.4.1 (x86_64-pc-linux-gnu, GTK+ Version 3.14.5) of 2015-03-07 on trouble, modified by Debian
. are you seeing the same (bad) behavior? – erjoalgo Apr 11 '17 at 20:32pp
, which usesprin1
– erjoalgo Apr 11 '17 at 23:48eval-expression-print-level
, I'd be happy to accept your answer if you could also address why thelet
binding didn't work – erjoalgo Apr 13 '17 at 17:28