       (let ((buf (find-file-noselect thy-file t)))
         (kill-buffer buf)		; Because of x-symbol problems if it already exists
         (sw:add-specware-to-isabelle-path)
-        (find-file-other-window (to-cygwin-name thy-file))
+        (find-file-other-window-0 (to-cygwin-name thy-file))
         (when (fboundp 'proof-unregister-buffer-file-name)
           (proof-unregister-buffer-file-name t))))))
+
+;; Version of find-file-other-window that doesn't create new windows willy-nilly on Gnu Emacs
+(defun find-file-other-window-0 (filename)
+  (let ((value (find-file-noselect filename)))
+    (pop-to-buffer value t)))
 
 (defun sw:add-specware-to-isabelle-path ()
   (when (fboundp 'proof-shell-invisible-command)

      (let ((buf (find-file-noselect thy-file t)))
        (kill-buffer buf)		; Because of x-symbol problems if it already exists
        (sw:add-specware-to-isabelle-path)
        (find-file-other-window (to-cygwin-name thy-file))
        (when (fboundp 'proof-unregister-buffer-file-name)
          (proof-unregister-buffer-file-name t))))))


				       (set-buffer sw:common-lisp-buffer-name)
				       default-directory))))
    (unless (equal (buffer-file-name) full-file)
      (find-file-other-window-0 full-file))
    (goto-line line)
    (when (> col 0)
      (forward-chars-counting-x-symbols col))))
