Here is a new template I'm using which seems generally useful.  It
builds a for loop with an iterator and it "bound" to "foriter":

    for (Iterator <var> = <coll>.iterator(); <var>iter.hasNext();)
    {
      <var>.next();
    } // end of for (Iterator iter = dups.iterator(); iter.hasNext();)

The template prompts for <var> and <coll>.  I hope you find it useful
enough to include in jde.  If you'd prefer the submission in another
format (such as a compile jde-gen.el file, I'm happy to do that.


(defcustom jde-gen-cflow-for-iter
  '(
    "(if (jde-parse-comment-or-quoted-p)"
    "'(l \"foriter\")"
    "'(l '> \"for (Iterator \" (p \"variable: \" var) \" = \""
    "(p \"collection: \" coll) \".iterator(); \""
    "(s var) \".hasNext();\""
    "\")\""
    "(if jde-gen-k&r "
    "()"
    "'>'n)"
    "\"{\"'>'n'>'r'n"
    "(s var) \".next();\" '>'n'>"
    "\"} // end of for (Iterator \" (s var) \" = \" (s coll) \".iterator(); \""
    "(s var) \".hasNext();)\"'>'n'>)"
    ")"
  )
  "Skeleton for iterator statement. To insert the statement at point,
type foriter and then space.  Note that abbrev mode must be
enabled.  See `jde-enable-abbrev-mode' for more information."
  :group 'jde-gen
  :type '(repeat string)
  :set '(lambda (sym val)
          (tempo-define-template
             "jde-for-iter"
             (jde-gen-read-template val)
             "foriter"
             "Insert a Java for iterator statement"
             'jde-tempo-tags)
          (set-default sym val)))

(defun jde-gen-load-cflow-abbrevs ()
  "Defines jde-mode abbrevs for the control flow templates."
  (define-abbrev local-abbrev-table "if" "" 'tempo-template-jde-if 0)
  (define-abbrev local-abbrev-table "else" "" 'tempo-template-jde-else 0)
  (define-abbrev local-abbrev-table "ife" "" 'tempo-template-jde-if-else 0)
  (define-abbrev local-abbrev-table "while" "" 'tempo-template-jde-while 0)
  (define-abbrev local-abbrev-table "for" "" 'tempo-template-jde-for 0)
  (define-abbrev local-abbrev-table "fori" "" 'tempo-template-jde-for-i 0)
  (define-abbrev local-abbrev-table "foriter" "" 'tempo-template-jde-for-iter 0)
  (define-abbrev local-abbrev-table "switch" "" 'tempo-template-jde-switch 0)
  (define-abbrev local-abbrev-table "case" "" 'tempo-template-jde-case 0)
  (define-abbrev local-abbrev-table "try" "" 'tempo-template-jde-try-catch 0)
  (define-abbrev local-abbrev-table "catch" "" 'tempo-template-jde-catch 0)
  (define-abbrev local-abbrev-table "tryf" "" 'tempo-template-jde-try-finally 0)
  (define-abbrev local-abbrev-table "finally" "" 'tempo-template-jde-finally 0)
  (define-abbrev local-abbrev-table "main" "" 'tempo-template-jde-main 0))


Cheers,
-- 
Robert

Reply via email to