The problem is when I would forward X connections over ssh, and then login from another machine, I could no longer forward any X programs. I found the following lifesaving article for how to fix X forwarding while using a persistent screen session:
SSH-Agent Forwarding and GNU Screen
Follow those directions, and then to enable X forwarding in emacs running in screen, I use the following elisp function:
(defun fixssh () "Run fixssh script for use in GNU screen with X forwarding" (interactive) (save-excursion (let ((buffer (find-file-noselect "~/bin/fixssh"))) (set-buffer buffer) (setq buffer-read-only t) (goto-char (point-min)) (while (re-search-forward "\\([A-Z_][A-Z0-9_]*\\) *= *\"\\([^\"]*\\)\"" nil t) (let ((key (match-string 1)) (val (match-string 2))) (setenv key val))) (kill-buffer buffer))))
Put that in your .emacs file and run it with "
M-x fixssh" and your ssh X forwarding environment variables will be imported for use in emacs!
Special thanks to Sam Rowe for the original article.