All pastes #632732 Raw Edit

Unnamed

public text v1 · immutable
#632732 ·published 2007-07-25 03:23 UTC
rendered paste body
;; Backtrace:
Debugger entered--Lisp error: (wrong-type-argument stringp nil)
  make-network-process(:name "ELispDRClient" :buffer #<buffer dragonrealms> :host "prime.dr.game.play.net" :port "4901" :filter dragonrealms-filter)
  (setq proc (make-network-process :name client-name :buffer buffer :host (gethash "GAMEHOST" drtable) :port (gethash "GAMEPORT" drtable) :filter (function dragonrealms-filter)))
  dragonrealms-connect("ELispDRClient" "dragonrealms" #<hash-table 'equal nil 8/65 0xe35920>)
  dragonrealms-mode()
  call-interactively(dragonrealms-mode)
  execute-extended-command(nil)
  call-interactively(execute-extended-command)

;; Code:
(defun dragonrealms-mode ()
  (interactive)
  (goto-char (point-min))
  (setq drtable (make-hash-table :test #'equal))
  (while (re-search-forward "^\\([^=\n]+\\)=\\([^\n]+\\)$" nil t)
    (puthash (match-string 1) (match-string 2) drtable))
  (dragonrealms-connect "ELispDRClient" "dragonrealms" drtable))

(defun dragonrealms-connect (client-name buffer-or-name drtable)
  (message client-name)
  (setq buffer (get-buffer-create buffer-or-name))
  (setq proc
        (make-network-process
         :name client-name
         :buffer buffer
         :host (gethash "GAMEHOST" drtable)
         :port (gethash "GAMEPORT" drtable)
         :filter #'dragonrealms-filter))
  (set-marker (process-mark proc) 0 buffer)
  (process-send-string proc (concat (gethash "KEY" drtable) "\n"))
  (process-send-string proc (concat "/FE:" client-name "/XML\n"))
  proc)

(defun dragonrealms-filter (proc input)
  (with-current-buffer (process-buffer proc)
    (let ((moving (= (point) (process-mark proc))))
      (save-excursion
        (goto-char (process-mark proc))
        (insert input)
        (set-marker (process-mark proc) (point)))
      (if moving (goto-char (process-mark proc))))))