JDE for Emacs

JDEE Resources

My JDEE emacs lisp functions

   1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   2 ;;                                                                               ;;
   3 ;;    ToString Wizard - yoonforh edition                                         ;;
   4 ;;                                                                               ;;
   5 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   6 
   7 (defcustom jde-wiz-tostring-sort-variables nil
   8   "*Specifies whether or not to sort the list of variables in the
   9   generated method or list them in the order defined in the file."
  10   :group 'jde-wiz
  11   :type 'boolean)
  12 
  13 (defcustom jde-wiz-tostring-stringbuffer-size "100"
  14   "*Specifies the initial size of the StringBuffer used to create the
  15   result for the toString().  It is best to set this to a value large
  16   enough for most of your work to prevent expansion of the
  17   StringBuffer at runtime.  You can always change the value in the
  18   generated code to a smaller or larger one as needed."
  19   :group 'jde-wiz-tostring
  20   :type 'string)
  21 
  22 (defcustom jde-wiz-tostring-variable-separator "\", \""
  23   "*Specifies the string between each variable to separate them.
  24   Examples: 2 spaces (the default), a comma and a space, newline, or a
  25   method call (as long as the return value is a String).
  26 
  27   Note: Remember this must result in a String in Java!"
  28   :group 'jde-wiz-tostring
  29   :type 'string)
  30 
  31 (defcustom jde-wiz-tostring-static-members nil
  32   "If on (nonnil), `jde-wiz-tostring' generates information of 
  33  static members of the class in the current buffer."
  34   :group 'jde-wiz
  35   :type 'boolean)
  36 
  37 (defun jde-wiz-tostring()
  38   "Generates a toString() method for tbe class at point. The method
  39 returns a string comprising the values of the member variables defined
  40 by the class. The string lists the variables in alphabetical 
  41 order if `jde-wiz-tostring-sort-variables' is on. The string uses the
  42 string specified by `jde-wiz-tostring-variable-separator' to separate
  43 the variables. The generated method uses a string buffer of the size
  44 specified by `jde-wiz-tostring-stringbuffer-size' to build the string."
  45  (interactive)
  46  (let* ((class-name 
  47          (jde-parse-get-unqualified-name
  48           (jde-parse-get-class-at-point)))
  49         (variables 
  50          (semantic-find-nonterminal-by-token 
  51           'variable 
  52           (jde-wiz-get-class-parts 
  53            class-name 
  54            (semantic-find-nonterminal-by-token 
  55             'type 
  56             (semantic-bovinate-toplevel t)
  57             ))))
  58         (method
  59          (concat
  60           "/**\n"
  61           " * {@inheritDoc}\n"
  62           " */\n"
  63           "public String toString()"
  64           (if jde-gen-k&r " {\n" "\n{\n")
  65           "return \"" class-name "(")))
  66 ;;        "final int sbSize = " jde-wiz-tostring-stringbuffer-size  ";\n"
  67 ;;        "final String variableSeparator = " jde-wiz-tostring-variable-separator ";\n"
  68 ;;        "final StringBuffer sb = new StringBuffer(sbSize);\n\n")))
  69 
  70    (setq variables (jde-wiz-filter-variables-by-typemodifier variables))
  71 
  72    (if jde-wiz-tostring-sort-variables
  73        (setq variables (semantic-sort-tokens-by-name-increasing variables)))
  74 
  75    (setq size (length variables))
  76 
  77    (while variables
  78      (let* ((var (car variables))
  79            (name (semantic-token-name var)) ;;variable name
  80            (type (semantic-token-type var)) ;;variable type i.e. boolean
  81            (staticp
  82             (member "static"
  83                     (semantic-token-variable-modifiers var))) ;;is it static
  84            (finalp
  85             (member "final"
  86                    (semantic-token-variable-modifiers var)))) ;;is it final
  87 
  88        (if (or (not staticp) jde-wiz-tostring-static-members)
  89            (if (> (length variables) 1)
  90                (setq method (concat method name " - \" + " name "\n+ \", "))
  91              (setq method 
  92                    (concat method name " - \" + " name "\n+ \")\";\n}\n")))
  93          (setq size (- size 1))
  94          )
  95 
  96        (setq variables (cdr variables))))
  97 ;;   (setq method (concat method "[" (number-to-string size) "]"))
  98    (if (= size 0)
  99        (setq method 
 100              (concat method ")\";\n}\n")))
 101 
 102    (insert method))
 103 
 104  (jde-wiz-indent (point)))
 105 
 106 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 107 ;;                                                                               ;;
 108 ;;    jde-wiz-constructor - by yoonforh                                          ;;
 109 ;;                                                                               ;;
 110 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 111 
 112 (defun jde-wiz-constructor()
 113   "Generates a constructor() method for tbe class at point. The method
 114 returns a string comprising the values of the member variables defined
 115 by the class."
 116  (interactive)
 117  (let* ((class-name 
 118          (jde-parse-get-unqualified-name
 119           (jde-parse-get-class-at-point)))
 120         (variables 
 121          (semantic-find-nonterminal-by-token 
 122           'variable 
 123           (jde-wiz-get-class-parts 
 124            class-name 
 125            (semantic-find-nonterminal-by-token 
 126             'type 
 127             (semantic-bovinate-toplevel t)
 128             ))))
 129         (method
 130          (concat
 131           "public " class-name "("))
 132         (body)
 133         )
 134 
 135    (setq variables (jde-wiz-filter-variables-by-typemodifier variables))
 136 
 137    (if jde-wiz-tostring-sort-variables
 138        (setq variables (semantic-sort-tokens-by-name-increasing variables)))
 139 
 140    (setq size (length variables))
 141 
 142    (while variables
 143      (let* ((var (car variables))
 144            (name (semantic-token-name var)) ;;variable name
 145            (type (semantic-token-type var)) ;;variable type i.e. boolean
 146            (staticp
 147             (member "static"
 148                     (semantic-token-variable-modifiers var))) ;;is it static
 149            (finalp
 150             (member "final"
 151                    (semantic-token-variable-modifiers var)))) ;;is it final
 152 
 153        (if (or (not staticp) jde-wiz-tostring-static-members)
 154            (progn 
 155                    (if (> (length variables) 1)
 156                        (setq method (concat method type " " name ", "))
 157                      (setq method 
 158                            (concat method type " " name (if jde-gen-k&r ") {\n" ")\n{\n")))
 159                      )
 160                    (setq body (concat body "this." name " = " name ";\n"))
 161                    ))
 162        (if staticp (setq size (- size 1)))
 163        (if finalp (setq size (- size 1)))
 164 
 165        (setq variables (cdr variables))))
 166 ;;   (setq method (concat method "[" (number-to-string size) "]"))
 167    (if (= size 0)
 168        (setq method 
 169              (concat method (if jde-gen-k&r ") {\n" ")\n{\n"))))
 170    (setq method 
 171          (concat method body "}\n"))
 172 
 173    (insert method))
 174 
 175  (jde-wiz-indent (point)))
 176 
 177 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 178 ;;                                                                               ;;
 179 ;;    jde-wiz-log-method - by yoonforh                                           ;;
 180 ;;                                                                               ;;
 181 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 182 ;;;###autoload
 183 (defun jde-wiz-log-method()
 184   "insert logger statement of a method or constructor"
 185   (interactive)
 186   (if (not (eq major-mode 'jde-mode))
 187       (error "Major mode must be 'jde-mode'"))
 188   (let ((found (jde-javadoc-nonterminal-at-line)))
 189     (if (not found)
 190         (error "No tag found at point")
 191       (let* ((modifiers  (semantic-tag-modifiers found))
 192             (type       (semantic-tag-type               found))
 193             (name       (semantic-tag-name               found))
 194             (arguments       (semantic-tag-function-arguments found))
 195             (throws     (semantic-tag-function-throws    found))
 196         (string
 197          (concat
 198           "if (logger.isLoggable(Level.FINEST))"
 199           (if jde-gen-k&r " {\n" "\n{\n")
 200           "logger.finest(\""
 201           name
 202           "(")))
 203 
 204         (setq size (length arguments))
 205 
 206         (while arguments
 207           (let* ((arg (car arguments))
 208                  (name (semantic-tag-name arg)) ;;argument name
 209                  (type (semantic-tag-type arg)) ;;argument type i.e. boolean
 210                  )
 211 
 212             (if (> (length arguments) 1)
 213                 (setq string (concat string name " - \" + " name " + \", "))
 214               (setq string 
 215                     (concat string name " - \" + " name " + \")\");\n}\n\n")))
 216 
 217             (setq arguments (cdr arguments))))
 218 ;;        (setq string (concat string "[" (number-to-string size) "]"))
 219         (if (= size 0)
 220             (setq string
 221                   (concat string ")\");\n}\n\n")))
 222         (insert string)
 223         ))
 224 
 225     (jde-wiz-indent (point))
 226     ))
 227 
 228 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 229 ;;                                                                               ;;
 230 ;;    jde-wiz-logger-decl - by yoonforh                                          ;;
 231 ;;                                                                               ;;
 232 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 233 (defun jde-wiz-logger-decl()
 234   "insert logger declaration statement of current class"
 235   (interactive)
 236   (if (not (eq major-mode 'jde-mode))
 237       (error "Major mode must be 'jde-mode'"))
 238   (let* ((class-name 
 239          (jde-parse-get-unqualified-name
 240           (jde-parse-get-class-at-point)))
 241         (package (jde-wiz-get-package-name)))
 242     (progn
 243       (if (not package)
 244           (setq string (concat "private static Logger logger = Logger.getLogger(" class-name ".class.getName());\n\n"))
 245         (setq string (concat "private static Logger logger = Logger.getLogger(\"" package "\");\n\n"))
 246       (insert string)
 247       (jde-wiz-indent (point)))
 248     ))
 249 
 250 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 251 ;;                                                                               ;;
 252 ;;    jde-wiz-assign-args - by yoonforh                                          ;;
 253 ;;                                                                               ;;
 254 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 255 ;;;###autoload
 256 (defun jde-wiz-assign-args()
 257   "insert assign statements for each args of a method or constructor"
 258   (interactive)
 259   (if (not (eq major-mode 'jde-mode))
 260       (error "Major mode must be 'jde-mode'"))
 261   (let ((found (jde-yoonforh-nonterminal-at-line)))
 262     (if (not found)
 263         (error "No tag found at point")
 264       (let* ((modifiers  (semantic-tag-modifiers found))
 265             (type       (semantic-tag-type               found))
 266             (name       (semantic-tag-name               found))
 267             (arguments       (semantic-tag-function-arguments found))
 268             (throws     (semantic-tag-function-throws    found)))
 269         (while arguments
 270           (let* ((arg (car arguments))
 271                  (name (semantic-tag-name arg)) ;;argument name
 272                  (type (semantic-tag-type arg)) ;;argument type i.e. boolean
 273                  )
 274 
 275             (insert (concat "this." name " = " name ";\n"))
 276             (setq arguments (cdr arguments))))
 277 ;;        (setq string (concat string "[" (number-to-string size) "]"))
 278         ))
 279 
 280     (jde-wiz-indent (point))
 281     ))
 282 
 283 
 284 (global-set-key [?\C-c?\C-v?l] 'jde-wiz-log-method)
 285 (global-set-key [?\C-c?\C-v?s] 'jde-wiz-tostring)
 286 (global-set-key [?\C-c?\C-v?a] 'jde-wiz-assign-args)
 287 (global-set-key [?\C-c?\C-v?c] 'jde-wiz-constructor)
 288 (global-set-key [?\C-c?\C-v?p] 'jde-wiz-logger-decl)

Binding for keymap jde-mode-map

As of JDEE 2.3.4

key             binding
---             -------

<f4>            html-script-release-region
C-c             Prefix Command
/               c-electric-slash
*               c-electric-star
,               c-electric-semi&comma
DEL             c-electric-backspace
C-d             c-electric-delete-forward
TAB             c-indent-command
ESC             Prefix Command
)               c-electric-paren
(               c-electric-paren
:               c-electric-colon
#               c-electric-pound
;               c-electric-semi&comma
}               c-electric-brace
{               c-electric-brace

C-c C-v         Prefix Command
C-c .           c-set-style
C-c C-t         c-toggle-auto-hungry-state
C-c C-s         c-show-syntactic-information
C-c C-o         c-set-offset
C-c C-d         c-toggle-hungry-state
C-c C-c         comment-region
C-c C-b         c-submit-bug-report
C-c C-a         c-toggle-auto-state
C-c C-\         c-backslash-region
C-c C-q         c-indent-defun
C-c C-u         c-up-conditional
C-c C-p         c-backward-conditional
C-c C-n         c-forward-conditional

ESC q           c-fill-paragraph
ESC j           c-indent-new-comment-line
ESC C-j         c-indent-new-comment-line
ESC e           c-end-of-statement
ESC a           c-beginning-of-statement
ESC C-q         c-indent-exp
ESC C-h         c-mark-function

C-c C-v .       jde-complete-in-line
C-c C-v C-.     jde-complete
C-c C-v C-]     jde-run-etrace-next
C-c C-v ESC     jde-run-etrace-prev
C-c C-v z       jde-import-all
C-c C-v t       jde-gen-try-catch-wrapper
C-c C-v o       jde-wiz-override-method
C-c C-v j       jde-javadoc-autodoc-at-line
C-c C-v i       jde-wiz-implement-interface
C-c C-v f       jde-gen-try-finally-wrapper
C-c C-v e       jde-wiz-extend-abstract-class
C-c C-v C-z     jde-import-find-and-import
C-c C-v C-y     jde-open-class-at-point
C-c C-v C-x     jde-show-superclass-source
C-c C-v C-w     jde-help-symbol
C-c C-v C-t     jde-jdb-menu-debug-applet
C-c C-v C-s     speedbar-frame-mode
C-c C-v C-r     jde-run
C-c C-v C-q     jde-wiz-update-class-list
C-c C-v C-p     jde-save-project
C-c C-v C-n     jde-help-browse-jdk-doc
C-c C-v C-l     jde-gen-println
C-c C-v C-k     jde-bsh-run
C-c C-v C-g     jde-open-class-at-point
C-c C-v C-f     jde-find
C-c C-v C-d     jde-debug
C-c C-v C-c     jde-compile
C-c C-v C-b     jde-build
C-c C-v C-a     jde-run-menu-run-applet