* 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
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.