Hi Jeba, Hi Paul,

Paul Kinnucan <[EMAIL PROTECTED]> writes:
> Jeba Bhaskaran writes:
>  > I am currently using dabbrev-completion to complete
>  > variable names in a Java buffer. How difficult would
>  > it be to add this functionality to the JDE Complete
>  > Menu function? For example, if there is a ".", then
>  > the jde-complete-menu as it now would be called and if
>  > a "." is not present then dabbrev-completion function
>  > would be called. Can this be added to the wish list? 
>  > 
> 
> This would be easy to do but I don't believe it is
> the right thing to do. I don't see the point of calling
> dabbrev to complete field and method names defined
> or inherited by the class in the current buffer.
> 
> - Paul

I have a function `jde-indent-complete' which provides this
functionality.

Instead of dabbrev-expand I use hippie-expand, because of the support
semantic provides for it. Semantic automatically adds
`senator-try-expand-semantic' to your `hippie-expand-try-functions-list'.
This gives you local member name completion via semantic. If this fails,
hippie-expand calls abbrev-expand and dabbrev-expand afterwards.
For words with a dot in front `jde-complete' will be called.

I have bound this to function to TAB, so completion feels the same
as in the shell and in the rest of emacs. I couldn't live without it :-)

The function has gone though various changes/optimizations as my elisp
knowledge slowly grew from clueless to dilettante, here comes the
current version:

(defun jde-indent-complete ()
  "A special indent/complete function. I calls three different
functions depending on context:

- The region is active:
        reindent the region.

- The point is in front of the text on this line:
        try to reindent the line. 

- The point is directly after a dot character (\".\") or in/at
   the end of a word starting with a dot:
        call `jde-complete'

- Otherwise:
        call `hippie-expand'
"
  (interactive)
  (if (mark-or-region-active)
      (indent-region (mark) (point) nil)
    (if (save-excursion (skip-chars-backward " \t") (bolp))
        (indent-for-tab-command)
      (if (not (equal major-mode 'jde-mode))
          (hippie-expand 1)
        (if (or (char-equal (char-before) ?.)
                (save-excursion (backward-word 1) 
                                (char-equal (char-before) ?.)))
            (jde-complete)
          (hippie-expand 1))))))


; you probably need this also:

(require 'hippie-exp)
(setq hippie-expand-try-functions-list
      '(try-expand-all-abbrevs
        try-expand-dabbrev
        try-expand-dabbrev-all-buffers
        try-expand-dabbrev-from-kill))


-- 
Ole Arndt                     http://www.sugarshark.com
-------------------------------------------------------

Reply via email to