in reply to Interactive Emacs/Perl environment

Unfortunately this does not work for me. I installed the required modules, than started emacs with
emacs -q -L ~/emacs
(where ~/emacs is the directory containing the Emacs::EPL lisp and your files). After doing pscope-init, emacs hangs. My environment is: RedHat 8.0, perl 5.8.0 (unthreaded), GNU Emacs 21.2.1.

Replies are listed 'Best First'.
Re: Re: Interactive Emacs/Perl environment
by educated_foo (Vicar) on Mar 31, 2004 at 16:47 UTC
    Hm... To be honest, I've only tested this on Emacs CVS on Mac OS 10.2. Can you:
    (load-library "epl") (load-library "perl") (setq epl-debugging t)
    then "perl-eval-expression"? If not, then it's a problem with EPL, and unfortunately, its code quite complex (state machine, cookie system for garbage collection, etc) and I'm not familiar with it. If you can send me the dump, I'll try to figure out what's going on, but no guarantees.
      (load-library "epl") (load-library "perl") (setq epl-debugging t) (perl-eval-expression "2+2")
      returns the following output (these are the relevant lines, I think):
      Debugger entered--Lisp error: (wrong-type-argument sequencep t) signal(wrong-type-argument (sequencep t)) (condition-case err (epl-loop) (error (epl-destroy) (signal ... ...) +)) (let* ((process-connection-type nil) (out ...) (epl-interp ...)) (co +ndition-case err (epl-loop) (error ... ...)) (epl-interp-set-status ( +quote ready)) epl-interp) perl-interpreter-new() (setq perl-interpreter (perl-interpreter-new)) (if perl-interpreter (epl-check) (setq perl-interpreter (perl-interp +reter-new))) epl-init() (epl-eval (epl-init) nil context "do { package main; " string " }") perl-eval("2+2" scalar-context)
        Ack. So somewhere in epl-loop, we're trying to treat 't as a sequence, but the condition-case in perl-interpreter-new is hiding where. If you can remove the condition-case and try again, you might get something more informative. Alternatively, you can instrument epl-loop by going to it and typing \C-u \C-\M-x, then step through to see where the bogosity occurs. Unfortunately, the function's sort of large, so I can't see where the error is :(.