unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* Elisp newbie trying a derived mode
@ 2006-09-28 19:02 davex
  2006-09-28 20:35 ` Kevin Rodgers
       [not found] ` <mailman.7564.1159475819.9609.help-gnu-emacs@gnu.org>
  0 siblings, 2 replies; 6+ messages in thread
From: davex @ 2006-09-28 19:02 UTC (permalink / raw)


Hello all, my first post here, and I've recently started coding elisp.
I want a simple method of interactively selecting multiple files or
directories, and passing the selection list to an external program.
My first thought was to tweak dired mode, so that I could just navigate
around dirs, marking files and dirs that I want (with 'm') and then
have a special key call dired-do-shell-command with something to
append each marked entry to a text file.

Question: is there something simpler than dired to tweak? All I really
need is the directory navigation and marking capability.

Another question: as long as I run dired first, the following code lets
me do M-x file-select-mode, showing a dired type buffer, and my
C-c k *does* print the message (yippee), but when I try to mark a
file with 'm', I get 'No subdir-alist in elisp'. Anyone know why?

(defun !fsm-keyfunc ()
  (interactive)
  (message "you pushed the key")
)
(defun !fsm-func ()
  (local-set-key "\C-ck" '!fsm-keyfunc)
)
(define-derived-mode file-select-mode
  dired-mode "file-select"
  "Major mode for file selection."
  (setq file-select-mode-hook '!fsm-func)
)

Thank you for your time! Any guidance will be greatly appreciated.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Elisp newbie trying a derived mode
  2006-09-28 19:02 Elisp newbie trying a derived mode davex
@ 2006-09-28 20:35 ` Kevin Rodgers
       [not found] ` <mailman.7564.1159475819.9609.help-gnu-emacs@gnu.org>
  1 sibling, 0 replies; 6+ messages in thread
From: Kevin Rodgers @ 2006-09-28 20:35 UTC (permalink / raw)


davex wrote:
> Hello all, my first post here, and I've recently started coding elisp.
> I want a simple method of interactively selecting multiple files or
> directories, and passing the selection list to an external program.
> My first thought was to tweak dired mode, so that I could just navigate
> around dirs, marking files and dirs that I want (with 'm') and then
> have a special key call dired-do-shell-command with something to
> append each marked entry to a text file.
> 
> Question: is there something simpler than dired to tweak? All I really
> need is the directory navigation and marking capability.

Why do you need to tweak anything at all, since dired already provides
all that?

-- 
Kevin

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Elisp newbie trying a derived mode (clarifying intent)
       [not found] ` <mailman.7564.1159475819.9609.help-gnu-emacs@gnu.org>
@ 2006-09-29  1:49   ` davex
  2006-09-29  9:06     ` Mathias Dahl
  0 siblings, 1 reply; 6+ messages in thread
From: davex @ 2006-09-29  1:49 UTC (permalink / raw)


Kevin Rodgers wrote:
> davex wrote:
> > Hello all, my first post here, and I've recently started coding elisp.
> > I want a simple method of interactively selecting multiple files or
> > directories, and passing the selection list to an external program.
> > My first thought was to tweak dired mode, so that I could just navigate
--- tweak = make a derived mode based on dired, with added functions
--(davex)
> > around dirs, marking files and dirs that I want (with 'm') and then
> > have a special key call dired-do-shell-command with something to
> > append each marked entry to a text file.
--- let me clarify the above--I'd like to make this simple to use
regularly, hence have a single keystroke call dired-do-shell-command,
with the correct shell command (to write out the filename) hard-coded--
i suppose i could do this as a keyboard macro, but if I can do a
derived mode in a clean concise way, I could apply this skill
elsewhere.
Am I on the right track? Is a derived mode a common useful solution?
---(davex)
> >
> > Question: is there something simpler than dired to tweak? All I really
> > need is the directory navigation and marking capability.
>
> Why do you need to tweak anything at all, since dired already provides
> all that?
> 
> -- 
> Kevin

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Elisp newbie trying a derived mode (clarifying intent)
  2006-09-29  1:49   ` Elisp newbie trying a derived mode (clarifying intent) davex
@ 2006-09-29  9:06     ` Mathias Dahl
  2006-09-29 16:48       ` Kevin Rodgers
       [not found]       ` <mailman.7597.1159548604.9609.help-gnu-emacs@gnu.org>
  0 siblings, 2 replies; 6+ messages in thread
From: Mathias Dahl @ 2006-09-29  9:06 UTC (permalink / raw)


"davex" <dmagill@attglobal.net> writes:

> let me clarify the above--I'd like to make this simple to use
> regularly, hence have a single keystroke call
> dired-do-shell-command, with the correct shell command (to write out
> the filename) hard-coded-- i suppose i could do this as a keyboard
> macro, but if I can do a derived mode in a clean concise way, I
> could apply this skill elsewhere.  Am I on the right track? Is a
> derived mode a common useful solution?

To me it seems overkill to create a new mode for this. Just create
your new defuns and bind a free key to one of them. You can add a hook
to dired mode that binds this key each time dired starts.

I have this in my .emacs:

;; if dired's already loaded, then the keymap will be bound
(if (boundp 'dired-mode-map)
    ;; we're good to go; just add our bindings
    (my-dired-init)
  ;; it's not loaded yet, so add our bindings to the load-hook
  (add-hook 'dired-load-hook 'my-dired-init))

`my-dired-init' does a lot of extra stuff I want in dired, like these
bindings, for example:

  ...
  (define-key mode-specific-map "xp" 'dired-w32-open-files)
  (define-key dired-mode-map [return] 'joc-dired-single-buffer)
  ...

YMMV, of course.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Elisp newbie trying a derived mode (clarifying intent)
  2006-09-29  9:06     ` Mathias Dahl
@ 2006-09-29 16:48       ` Kevin Rodgers
       [not found]       ` <mailman.7597.1159548604.9609.help-gnu-emacs@gnu.org>
  1 sibling, 0 replies; 6+ messages in thread
From: Kevin Rodgers @ 2006-09-29 16:48 UTC (permalink / raw)


Mathias Dahl wrote:
> "davex" <dmagill@attglobal.net> writes:
> 
>> let me clarify the above--I'd like to make this simple to use
>> regularly, hence have a single keystroke call
>> dired-do-shell-command, with the correct shell command (to write out
>> the filename) hard-coded-- i suppose i could do this as a keyboard
>> macro, but if I can do a derived mode in a clean concise way, I
>> could apply this skill elsewhere.  Am I on the right track? Is a
>> derived mode a common useful solution?
> 
> To me it seems overkill to create a new mode for this. Just create
> your new defuns and bind a free key to one of them. You can add a hook
> to dired mode that binds this key each time dired starts.

Definitely.

> I have this in my .emacs:
> 
> ;; if dired's already loaded, then the keymap will be bound
> (if (boundp 'dired-mode-map)
>     ;; we're good to go; just add our bindings
>     (my-dired-init)
>   ;; it's not loaded yet, so add our bindings to the load-hook
>   (add-hook 'dired-load-hook 'my-dired-init))

Why not just unconditionally (add-hook 'dired-mode-hook 'my-dired-init)?

> `my-dired-init' does a lot of extra stuff I want in dired, like these
> bindings, for example:
> 
>   ...
>   (define-key mode-specific-map "xp" 'dired-w32-open-files)
>   (define-key dired-mode-map [return] 'joc-dired-single-buffer)
>   ...

I generally prefer (local-set-key KEY COMMAND) to
(define-key 'some-mode-map KEY COMMAND)

For davex's situation, I think the command he wants would be
something like:

(defun davex-dired-do-shell-command (&optional next-files)
   "Run the \"davex.exe\" command on the marked files.
If no files are marked or a specific numeric prefix arg is given,
the next ARG files are used.  Just \\[universal-argument] means \
the current file."
   (interactive "P")
   (dired-do-shell-command "davex.exe"	; or "davex.exe *"
			  next-files	; prefix arg
			  (dired-get-marked-files t next-files)))

-- 
Kevin

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Elisp newbie trying a derived mode (clarifying intent)
       [not found]       ` <mailman.7597.1159548604.9609.help-gnu-emacs@gnu.org>
@ 2006-10-03  7:46         ` Mathias Dahl
  0 siblings, 0 replies; 6+ messages in thread
From: Mathias Dahl @ 2006-10-03  7:46 UTC (permalink / raw)


Kevin Rodgers <ihs_4664@yahoo.com> writes:

>> I have this in my .emacs:
>> ;; if dired's already loaded, then the keymap will be bound
>> (if (boundp 'dired-mode-map)
>>     ;; we're good to go; just add our bindings
>>     (my-dired-init)
>>   ;; it's not loaded yet, so add our bindings to the load-hook
>>   (add-hook 'dired-load-hook 'my-dired-init))
>
> Why not just unconditionally (add-hook 'dired-mode-hook 'my-dired-init)?

Not sure, really. I wondered the same myself. A copy-paste thing
probably :)

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2006-10-03  7:46 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-09-28 19:02 Elisp newbie trying a derived mode davex
2006-09-28 20:35 ` Kevin Rodgers
     [not found] ` <mailman.7564.1159475819.9609.help-gnu-emacs@gnu.org>
2006-09-29  1:49   ` Elisp newbie trying a derived mode (clarifying intent) davex
2006-09-29  9:06     ` Mathias Dahl
2006-09-29 16:48       ` Kevin Rodgers
     [not found]       ` <mailman.7597.1159548604.9609.help-gnu-emacs@gnu.org>
2006-10-03  7:46         ` Mathias Dahl

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).