[Thread Prev][Thread Next][Index]

Re: [ferret_users] emacs



Hi Mark,

| I was the person who created the ferret mode for emacs. I haven't done
| anything with it for a while now, but I have started running it
| again. Maybe it is time to revisit the ferret mode and update it. That
| is an interesting idea about running ferret from within emacs, I am
| not currently aware of how to accomplish that — but it sounds like a
| great feature!

I haven't figured out everything, but here are key pieces which I've
tested and found to work:

 ;(start-process name-of-the-process buffer-for-output name-of-command)
 (start-process "ferret-process" "*ferret-output*" "/usr/local/bin/ferret")

 (defun ferret-send-buffer ()
   (interactive)
   (process-send-region "ferret-process" 1 (point-max)))
   ; send the process the entire buffer (from position 1 to the end).

Execute (evaluate) these expressions, go to a buffer that is
displaying a ferret script, then evaluate the following expression
to define the keys

  (local-set-key "\C-c\C-c" 'ferret-send-buffer)

and type C-c C-c.  In this way, I was able to send Ferret
the contents of the current buffer by C-c C-c.

I'm a novice in emacs lisp and I don't know how to
fill the remaining gaps at the moment:

1) Bind the keys only for Ferret buffers;
2) C-c C-c should start a Ferret process if none
   has been started;
3) Different Ferret buffers should use separate
   Ferret processes.

and I know there is one non-emacs problem:

4) Ferret cannot handle (as far as I know) long input lines from
  the standard input, so that we have to wrap the ferret around
  in a small shell script that feeds its standard input to Ferret
  through a named pipe "ferret -script namedpipe".

I hope these ideas are useful in extending your Ferret mode.

Regards,
Ryo



[Thread Prev][Thread Next][Index]

Contact Us
Dept of Commerce / NOAA / OAR / PMEL / TMAP

Privacy Policy | Disclaimer | Accessibility Statement