JDE for Emacs

JDEE Resources

using unzip with JDEE in win32

Should set archive-zip-use-pkzip to be nil before loading jde. The order is important especially if the jde version is 2.3.5 or later

   1 ;; should come before jde loaded
   2 ;; use unzip instead of pkunzip
   3 (setq archive-zip-use-pkzip nil)
   4 
   5 ;; ...
   6 ;; ...
   7 (require 'jde)

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 
  67    (setq variables (jde-wiz-filter-variables-by-typemodifier variables))
  68 
  69    (if jde-wiz-tostring-sort-variables
  70        (setq variables (semantic-sort-tokens-by-name-increasing variables)))
  71 
  72    (setq size (length variables))
  73 
  74    (while variables
  75      (let* ((var (car variables))
  76     (name (semantic-token-name var)) ;;variable name
  77     (type (semantic-token-type var)) ;;variable type i.e. boolean
  78     (staticp
  79      (member "static"
  80       (semantic-token-variable-modifiers var))) ;;is it static
  81     (finalp
  82      (member "final"
  83                    (semantic-token-variable-modifiers var)))) ;;is it final
  84 
  85        (if (or (not staticp) jde-wiz-tostring-static-members)
  86     (if (> (length variables) 1)
  87         (setq method (concat method name " - \" + " name "\n+ \", "))
  88       (setq method
  89      (concat method name " - \" + " name "\n+ \")\";\n}\n")))
  90          (progn
  91            (setq size (- size 1))
  92            (if (= (length variables) 1)
  93                (setq method ;; remove preceding ", "
  94                      (concat (substring method 0 (- (length method) 2)) ")\";\n}\n"))
  95                )
  96            )
  97          )
  98 
  99        (setq variables (cdr variables))))
 100    (if (= size 0)
 101        (setq method
 102              (concat method ")\";\n}\n")))
 103 
 104    (insert method))
 105 
 106  (jde-wiz-indent (point)))
 107 
 108 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 109 ;; ;;
 110 ;; jde-wiz-constructor - by yoonforh ;;
 111 ;; ;;
 112 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 113 
 114 (defun jde-wiz-constructor()
 115   "Generates a constructor() method for tbe class at point. The method
 116 returns a string comprising the values of the member variables defined
 117 by the class."
 118  (interactive)
 119  (let* ((class-name
 120   (jde-parse-get-unqualified-name
 121    (jde-parse-get-class-at-point)))
 122  (variables
 123   (semantic-find-nonterminal-by-token
 124    'variable
 125    (jde-wiz-get-class-parts
 126     class-name
 127     (semantic-find-nonterminal-by-token
 128      'type
 129      (semantic-bovinate-toplevel t)
 130      ))))
 131  (method
 132   (concat
 133    "public " class-name "("))
 134         (body)
 135         )
 136 
 137    (setq variables (jde-wiz-filter-variables-by-typemodifier variables))
 138 
 139    (if jde-wiz-tostring-sort-variables
 140        (setq variables (semantic-sort-tokens-by-name-increasing variables)))
 141 
 142    (setq size (length variables))
 143 
 144    (while variables
 145      (let* ((var (car variables))
 146     (name (semantic-token-name var)) ;;variable name
 147     (type (semantic-token-type var)) ;;variable type i.e. boolean
 148     (staticp
 149      (member "static"
 150       (semantic-token-variable-modifiers var))) ;;is it static
 151     (finalp
 152      (member "final"
 153                    (semantic-token-variable-modifiers var)))) ;;is it final
 154 
 155        (if (or (not staticp) jde-wiz-tostring-static-members)
 156            (progn
 157                    (if (> (length variables) 1)
 158                        (setq method (concat method type " " name ", "))
 159                      (setq method
 160                            (concat method type " " name (if jde-gen-k&r ") {\n" ")\n{\n")))
 161                      )
 162                    (setq body (concat body "this." name " = " name ";\n"))
 163                    ))
 164        (if staticp (setq size (- size 1)))
 165        (if finalp (setq size (- size 1)))
 166 
 167        (setq variables (cdr variables))))
 168    (if (= size 0)
 169        (setq method
 170              (concat method (if jde-gen-k&r ") {\n" ")\n{\n"))))
 171    (setq method
 172          (concat method body "}\n"))
 173 
 174    (insert method))
 175 
 176  (jde-wiz-indent (point)))
 177 
 178 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 179 ;; ;;
 180 ;; jde-wiz-log-method - by yoonforh ;;
 181 ;; ;;
 182 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 183 ;;;###autoload
 184 (defun jde-wiz-log-method()
 185   "insert logger statement of a method or constructor"
 186   (interactive)
 187   (if (not (eq major-mode 'jde-mode))
 188       (error "Major mode must be 'jde-mode'"))
 189   (let ((found (jde-yoonforh-nonterminal-at-line)))
 190     (if (not found)
 191         (error "No tag found at point")
 192       (let* ((modifiers (semantic-tag-modifiers found))
 193             (type (semantic-tag-type found))
 194             (name (semantic-tag-name found))
 195             (arguments (semantic-tag-function-arguments found))
 196             (throws (semantic-tag-function-throws found))
 197         (string
 198   (concat
 199    "if (logger.isLoggable(Level.FINEST))"
 200    (if jde-gen-k&r " {\n" "\n{\n")
 201    "logger.finest(\""
 202           name
 203           "(")))
 204 
 205         (setq size (length arguments))
 206 
 207         (while arguments
 208           (let* ((arg (car arguments))
 209                  (name (semantic-tag-name arg)) ;;argument name
 210                  (type (semantic-tag-type arg)) ;;argument type i.e. boolean
 211                  )
 212 
 213             (if (> (length arguments) 1)
 214                 (setq string (concat string name " - \" + " name " + \", "))
 215               (setq string
 216                     (concat string name " - \" + " name " + \")\");\n}\n\n")))
 217 
 218             (setq arguments (cdr arguments))))
 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 (defun jde-yoonforh-nonterminal-at-line ()
 229   "Search the bovine table for the tag at the current line."
 230   (save-excursion
 231     ;; Preserve current tags when the lexer fails (when there is an
 232     ;; unclosed block or an unterminated string for example).
 233     (let ((semantic-flex-unterminated-syntax-end-function
 234            #'(lambda (syntax &rest ignore)
 235                (throw 'jde-yoonforh-flex-error syntax))))
 236       (catch 'jde-yoonforh-flex-error
 237         (semantic-fetch-tags))))
 238   (save-excursion
 239     ;; Move the point to the first non-blank character found. Skip
 240     ;; spaces, tabs and newlines.
 241     (beginning-of-line)
 242     (forward-comment (point-max))
 243     (semantic-current-tag)))
 244 
 245 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 246 ;; ;;
 247 ;; jde-wiz-logger-decl - by yoonforh ;;
 248 ;; ;;
 249 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 250 (defun jde-wiz-logger-decl()
 251   "insert logger declaration statement of current class"
 252   (interactive)
 253   (if (not (eq major-mode 'jde-mode))
 254       (error "Major mode must be 'jde-mode'"))
 255   (let* ((class-name
 256   (jde-parse-get-unqualified-name
 257    (jde-parse-get-class-at-point)))
 258         (package (jde-wiz-get-package-name)))
 259     (progn
 260       (if (not package)
 261           (setq string (concat "private static Logger logger = Logger.getLogger(" class-name ".class.getName());\n\n"))
 262          (setq string (concat "private static final Logger logger = Logger.getLogger(\"" package "\");\n\n"))
 263 ;; (setq string (concat "private static Logger logger = Logger.getLogger(" class-name ".class.getPackage().getName());\n\n"))
 264         (insert string)
 265         (jde-wiz-indent (point))
 266       )
 267     ))
 268 )
 269 
 270 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 271 ;; ;;
 272 ;; jde-wiz-assign-args - by yoonforh ;;
 273 ;; ;;
 274 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 275 ;;;###autoload
 276 (defun jde-wiz-assign-args()
 277   "insert assign statements for each args of a method or constructor"
 278   (interactive)
 279   (if (not (eq major-mode 'jde-mode))
 280       (error "Major mode must be 'jde-mode'"))
 281   (let ((found (jde-yoonforh-nonterminal-at-line)))
 282     (if (not found)
 283         (error "No tag found at point")
 284       (let* ((modifiers (semantic-tag-modifiers found))
 285             (type (semantic-tag-type found))
 286             (name (semantic-tag-name found))
 287             (arguments (semantic-tag-function-arguments found))
 288             (throws (semantic-tag-function-throws found)))
 289         (while arguments
 290           (let* ((arg (car arguments))
 291                  (name (semantic-tag-name arg)) ;;argument name
 292                  (type (semantic-tag-type arg)) ;;argument type i.e. boolean
 293                  )
 294 
 295             (insert (concat "this." name " = " name ";\n"))
 296             (setq arguments (cdr arguments))))
 297         ))
 298 
 299     (jde-wiz-indent (point))
 300     ))
 301 
 302 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 303 ;; ;;
 304 ;; jde-wiz-serial-ver - by yoonforh ;;
 305 ;; ;;
 306 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 307 (defun jde-wiz-serial-ver()
 308   "insert serialver statement of current class"
 309   (interactive)
 310   (if (not (eq major-mode 'jde-mode))
 311       (error "Major mode must be 'jde-mode'"))
 312   (let* ((class-name
 313           (jde-parse-eval-type-of
 314            (jde-parse-get-class-at-point)))
 315          )
 316     (progn
 317       (setq serial-ver (jde-jeval
 318                         (concat "print(\" private static final long serialVersionUID = \" + java.io.ObjectStreamClass.lookup(Class.forName(\""
 319                                 class-name
 320                                 "\")).getSerialVersionUID() + \"L;\\n\");")
 321                         ))
 322       (if (= 0 (length serial-ver))
 323           (error "Cannot get serial version value")
 324         (insert serial-ver))
 325       (jde-wiz-indent (point))
 326       )
 327     )
 328   )
 329 
 330 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 331 ;; ;;
 332 ;; jde-wiz-delegate-impl - by yoonforh ;;
 333 ;; ;;
 334 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 335 ;;;###autoload
 336 (defun jde-wiz-delegate-impl()
 337   "insert impl delegate statement of a method or constructor"
 338   (interactive)
 339   (if (not (eq major-mode 'jde-mode))
 340       (error "Major mode must be 'jde-mode'"))
 341   (let ((found (jde-yoonforh-nonterminal-at-line)))
 342     (if (not found)
 343         (error "No tag found at point")
 344       (let* ((modifiers (semantic-tag-modifiers found))
 345              (method-type (semantic-tag-type found))
 346              (method-name (semantic-tag-name found))
 347              (arguments (semantic-tag-function-arguments found))
 348              (throws (semantic-tag-function-throws found))
 349              )
 350         (if (not (string= method-type "void"))
 351             (setq string (concat "return impl." method-name "("))
 352           (setq string (concat "impl." method-name "(")))
 353 
 354         (setq size (length arguments))
 355 
 356         (while arguments
 357           (let* ((arg (car arguments))
 358                  (name (semantic-tag-name arg)) ;;argument name
 359                  (type (semantic-tag-type arg)) ;;argument type i.e. boolean
 360                  )
 361             (if (> (length arguments) 1)
 362                 (setq string (concat string name ", "))
 363               (setq string
 364                     (concat string name ");")))
 365 
 366             (setq arguments (cdr arguments))))
 367         (if (= size 0)
 368             (setq string
 369                   (concat string ");")))
 370         (insert string)
 371         ))
 372 
 373     (jde-wiz-indent (point))
 374     ))
 375 
 376 (global-set-key [?\C-c?\C-v?l] 'jde-wiz-log-method)
 377 (global-set-key [?\C-c?\C-v?s] 'jde-wiz-tostring)
 378 (global-set-key [?\C-c?\C-v?a] 'jde-wiz-assign-args)
 379 (global-set-key [?\C-c?\C-v?c] 'jde-wiz-constructor)
 380 (global-set-key [?\C-c?\C-v?p] 'jde-wiz-logger-decl)
 381 (global-set-key [?\C-c?\C-v?d] 'jde-wiz-delegate-impl)

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

last edited 2006-07-20 18:05:55 by YoonKyungKoo