Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re: Desparately seeking a bilingual vim/Emacs expert

by ForgotPasswordAgain (Deacon)
on Mar 24, 2005 at 13:34 UTC ( #442036=note: print w/ replies, xml ) Need Help??


in reply to Desparately seeking a bilingual vim/Emacs expert

I'm not sure there are exact mappings between vim and emacs, since they use different concepts.

  1. I have several macro-like functions which I've defined for Perl programming convenience. For example, this creates a new sub:

    (defun perl-sub (name) "Insert a new subroutine" (interactive "*sName: ") (insert "sub {\n\n\n\n}\n") (previous-line 4) (indent-for-tab-command) (insert "my () = @_;") (search-backward "sub ") (goto-char (match-end 0)) (insert name) (search-forward "("))

    It prompts for the sub name, then outputs a bare subroutine with "my () = @_;" on the first line and putting the cursor inside the `my' list. You can then call this function with `ESC x perl-sub'; you could also bind it to key command, for example (global-set-key [f3] 'perl-sub), then you can just hit the F3 key to do it. Modifying this to output Data::Dumper stuff (good idea) would be straight-forward.

  2. I'm not sure what document templates are for. You could easily include a file with `C-x i', though, or use the above "macro" technique.

  3. For indenting, I have this inside (custom-set-variables):

    '(cperl-close-paren-offset -4) '(cperl-continued-statement-offset 2) '(cperl-indent-level 4) '(cperl-indent-parens-as-block t) '(cperl-label-offset 0) '(cperl-tab-always-indent t)

    That gets pretty close to (tab) indenting consistently with what I think is the style seen in most Perl books and documentation.


Comment on Re: Desparately seeking a bilingual vim/Emacs expert
Select or Download Code
Replies are listed 'Best First'.
Re^2: Desparately seeking a bilingual vim/Emacs expert
by TheDamian (Priest) on Mar 24, 2005 at 19:50 UTC
    Modifying this to output Data::Dumper stuff (good idea) would be straight-forward.
    Here's my attempt. I'd be very grateful if someone who knows Emacs could actually try it.
    (defun perl-dbg (name) "Insert a debugging print statement" (insert "use Data::Dumper qw( Dumper );\nwarn Dumper [ ]\n") (search-backward "[ ")
    I'm not sure what document templates are for.
    The idea is that you hit a key, and the editor pastes in a template from another file. Any suggestions for how to do that would be greatly appreciated.
    For indenting, I have this inside (custom-set-variables):
    I'm guessing:
    '(cperl-close-paren-offset -4)
    Outdent 4 columns on a closing paren?

    '(cperl-continued-statement-offset 2)
    Indent 2 columns when a statement wraps?

    '(cperl-indent-level 4)
    Indent four columns per indentation level?

    '(cperl-indent-parens-as-block t)
    Indent parens like blocks?

    '(cperl-label-offset 0)
    Put labels in the zeroth column?

    '(cperl-tab-always-indent t)
    Convert tabs to spaces?

    Could someone knowledgeable confirm (or correct) those guesses?

      (defun perl-dbg () "Insert a debugging print statement" (interactive) (insert "use Data::Dumper qw( Dumper );\nwarn Dumper [ ];\n") (search-backward "[ ")) (global-set-key "\C-c\C-p" 'perl-dbg)
      Then typing CTL-C CTL-p inserts this text:
      use Data::Dumper qw( Dumper ); warn Dumper [ ];
      and leaves the cursor under the [ character. I wasn't sure if you wanted to prompt for the name of the variable(s) to dump, so I changed (defun perl-dbg (name) to (defun perl-dbg (). The statement (interactive) makes it interactive, so that it can be bound to a key combination. Here's a version that prompts for a variable name (or names):
      (defun perl-dbg (name) "Insert a debugging print statement" (interactive "svariable to dump: ") (insert "use Data::Dumper qw( Dumper );\nwarn Dumper ") (insert name) (insert ";\n"))
      There are probably better ways to handle strings in Emacs-Lisp, but I've only recently started playing with it.
        Thanks for debugging my attempted debugging tool!
        Excellent. Thank-you!

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://442036]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (10)
As of 2015-07-30 10:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (271 votes), past polls