unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
From: formido <formido@gmail.com>
To: help-gnu-emacs@gnu.org
Subject: Re: Bash Script Editing Mode?
Date: Thu, 7 Aug 2008 14:59:34 -0700 (PDT)	[thread overview]
Message-ID: <82dfe063-1db1-4f7b-bb99-e552a1900acd@a2g2000prm.googlegroups.com> (raw)
In-Reply-To: 87hc9w1q0n.fsf@hubble.informatimago.com

On Aug 7, 2:20 pm, p...@informatimago.com (Pascal J. Bourguignon)
wrote:
> formido <form...@gmail.com> writes:
> > There's a shell mode, but it has a prompt and doesn't help you
> > incrementally create a shell script as efficiently as it could, unless
> > I'm missing something. Is there any shell script mode that works more
> > like the elisp, python, or erlang repls, where you can execute your
> > choice of several lines at once and you can go back and edit and
> > execute the lines in situ? If I write a bash function, editing and
> > reloading the function is a painful process. I'm looking for something
> > a little bit like the Mac's BBEdit shell worksheets (only better).
>
> First, try to get your terminology straight.

Heh. I've noticed that no matter with what care one designs his query,
a novice will invariably run afoul of the idioms or conventions of the
new culture...

<snip>

> > I considered altering the usual shell mode, but it would take more
> > than slight edits, so I'm hoping something's already out there. For
> > example, one should be able to go back to a function, tweak it, and
> > reload with a minimum of keyboard fuss.
>
> Well, if you consider the shell mode, there's an easy way to get what
> you want:  just edit your commands, one by one, and type RET to try
> them.  When you're happy with the result, type: history RET and
> copy-and-paste all the commands to a shell script buffer, add some
> minor edits, including a #!/bin/bash on the first line, and voilà.

This does not work very well with loops and functions and is more
cumbersome than necessary besides, avoiding which is the whole point
of learning Emacs.

> But really, I would rather start from the shell-script-mode.

<snip>

> Once you have implemented a pair of functions forward-shell-expression
> and backward-shell-expression, you can easily implement a function
> such as eval-last-shell-expression:
>
> (defun eval-last-shell-expression (point)
>   (interactiev "P")
>   (let ((start (progn (backward-shell-expression) (point)))
>         (end   (progn (forward-shell-expression)  (point))))
>     (comint-send-string (inferior-shell-proc)
>                         (buffer-substring start end))
>     (comint-send-string (inferior-shell-proc) "\n")))
>
> There remains only to bind these commands to C-M-f, C-M-b and C-x C-e.

Yes, I think this and shell-script-mode should put me well on my way.

> But if you're as lazy as me, perhaps the best option would be to use
> scsh.  You get a shell, but it's really a scheme, and there is already
> all you need to edit scheme scripts, and C-x C-e already works.

That does look really cool. I only hesitate because obviously regular
shells are installed everywhere. This is probably not as great an
advantage as it seems in my mind, though.

> --
> __Pascal Bourguignon__                    http://www.informatimago.com/
>

Michael


  reply	other threads:[~2008-08-07 21:59 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-07 20:21 Bash Script Editing Mode? formido
2008-08-07 20:49 ` Mike Treseler
2008-08-07 22:10   ` formido
2008-08-07 20:53 ` Lennart Borgman (gmail)
2008-08-07 21:06 ` Thierry Volpiatto
2008-08-07 21:20 ` Pascal J. Bourguignon
2008-08-07 21:59   ` formido [this message]
     [not found] ` <mailman.16033.1218143342.18990.help-gnu-emacs@gnu.org>
2008-08-07 22:01   ` formido
     [not found] ` <mailman.16028.1218142452.18990.help-gnu-emacs@gnu.org>
2008-08-07 22:03   ` formido

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=82dfe063-1db1-4f7b-bb99-e552a1900acd@a2g2000prm.googlegroups.com \
    --to=formido@gmail.com \
    --cc=help-gnu-emacs@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).