Loading ...
Sorry, an error occurred while loading the content.

java-class/function-tree

Expand Messages
  • Detlef Groth
    Hello, almost christmas...., I am trying to build a tree of java-classes and it s function for easy navigating. Until no I only get the functions because:
    Message 1 of 5 , Dec 13, 2000
    • 0 Attachment
      Hello,
      almost christmas....,

      I am trying to build a tree of java-classes and it's function
      for easy navigating.
      Until no I only get the functions because:

      !force search-forward "^ [a-zA-Z].*\(.*\){"

      only get's the function's
      like:
      public void paint(Graphics g){
      etc.

      I tried to get eigther a function or a class like
      !force search-forward "(^ [a-zA-Z].*\(.*\){\| *class)"
      but it does not work.

      Any suggestions ?

      Best regards, Detlef

      My code altogether:

      define-macro list-java-functions
      ;set-variable $debug 1
      set-variable .buffer $buffer-bname
      delete-other-windows
      ; erase old-contents
      find-buffer &cat &cat "*" .buffer "functions*"
      split-window-horizontally
      25 shrink-window-horizontally
      set-variable :mouse-word-select "find-java-function"

      set-variable $buffer-hilight .hilight.java
      screen-update
      beginning-of-buffer
      set-mark
      end-of-buffer
      exchange-point-and-mark
      kill-region
      next-window-find-buffer .buffer
      set-alpha-mark "p"
      beginning-of-buffer
      !force search-forward "^ [a-zA-Z].*\(.*\){"
      !while $status
      beginning-of-line
      4 forward-char
      set-mark
      end-of-line
      exchange-point-and-mark
      copy-region
      set-variable .function @y
      -1 yank
      set-variable .line $window-line
      next-window-find-buffer &cat &cat "*" .buffer "functions*"
      execute-string &cat &cat &cat "" .function "\t\t\t Line:"
      .line
      insert-newline
      next-window-find-buffer .buffer
      !force search-forward "^ [a-zA-Z].*\(.*\){"
      !done
      goto-alpha-mark "p"
      !emacro

      define-macro find-java-function
      ; set-variable $debug 1
      search-forward "Line:"
      set-mark
      forward-word
      exchange-point-and-mark
      copy-region
      set-variable #l0 @y
      -1 yank
      next-window
      #l0 goto-line
      recenter
      !emacro

      buffer-bind-key "list-java-functions" "f7"
    • Jasspa
      Try being more specific in the search i.e. ^[ t]*[a-zA-Z0-9_]+[ t]*([^)]*)[ t]*{ There are too many .* s. The above was taken from the command line so you
      Message 2 of 5 , Dec 13, 2000
      • 0 Attachment
        Try being more specific in the search i.e.

        ^[ \t]*[a-zA-Z0-9_]+[ \t]*([^)]*)[ \t]*{

        There are too many ".*"'s. The above was taken from the
        command line so you need to macro it up a bit.

        Regards
        Jon.

        --- In jasspa@egroups.com, "Detlef Groth" <dgroth@g...> wrote:
        > Hello,
        > almost christmas....,
        >
        > I am trying to build a tree of java-classes and it's function
        > for easy navigating.
        > Until no I only get the functions because:
        >
        > !force search-forward "^ [a-zA-Z].*\(.*\){"
        >
        > only get's the function's
        > like:
        > public void paint(Graphics g){
        > etc.
        >
        > I tried to get eigther a function or a class like
        > !force search-forward "(^ [a-zA-Z].*\(.*\){\| *class)"
        > but it does not work.
        >
        > Any suggestions ?
        >
        > Best regards, Detlef
        >
        > My code altogether:
        >
        > define-macro list-java-functions
        > ;set-variable $debug 1
        > set-variable .buffer $buffer-bname
        > delete-other-windows
        > ; erase old-contents
        > find-buffer &cat &cat "*" .buffer "functions*"
        > split-window-horizontally
        > 25 shrink-window-horizontally
        > set-variable :mouse-word-select "find-java-function"
        >
        > set-variable $buffer-hilight .hilight.java
        > screen-update
        > beginning-of-buffer
        > set-mark
        > end-of-buffer
        > exchange-point-and-mark
        > kill-region
        > next-window-find-buffer .buffer
        > set-alpha-mark "p"
        > beginning-of-buffer
        > !force search-forward "^ [a-zA-Z].*\(.*\){"
        > !while $status
        > beginning-of-line
        > 4 forward-char
        > set-mark
        > end-of-line
        > exchange-point-and-mark
        > copy-region
        > set-variable .function @y
        > -1 yank
        > set-variable .line $window-line
        > next-window-find-buffer &cat &cat "*" .buffer "functions*"
        > execute-string &cat &cat &cat "" .function "\t\t\t Line:"
        > .line
        > insert-newline
        > next-window-find-buffer .buffer
        > !force search-forward "^ [a-zA-Z].*\(.*\){"
        > !done
        > goto-alpha-mark "p"
        > !emacro
        >
        > define-macro find-java-function
        > ; set-variable $debug 1
        > search-forward "Line:"
        > set-mark
        > forward-word
        > exchange-point-and-mark
        > copy-region
        > set-variable #l0 @y
        > -1 yank
        > next-window
        > #l0 goto-line
        > recenter
        > !emacro
        >
        > buffer-bind-key "list-java-functions" "f7"
      • Detlef Groth
        ... Okay a new version is the following: ^[ t]*[a-zA-Z0-9_ ]* ([a-zA-Z0-9_ ,]* ){ see: define-macro list-java-functions ; set-variable $debug 1
        Message 3 of 5 , Dec 14, 2000
        • 0 Attachment
          Jasspa wrote:

          > Try being more specific in the search i.e.
          >
          > ^[ \t]*[a-zA-Z0-9_]+[ \t]*([^)]*)[ \t]*{
          >
          > There are too many ".*"'s. The above was taken from the
          > command line so you need to macro it up a bit.
          >
          > Regards
          > Jon.

          Okay a new version is the following:
          "^[ \t]*[a-zA-Z0-9_ ]*\([a-zA-Z0-9_ ,]*\){"
          see:

          define-macro list-java-functions
          ; set-variable $debug 1
          set-variable .buffer $buffer-bname
          delete-other-windows
          ; erase old-contents
          find-buffer &cat &cat "*" .buffer "functions*"
          split-window-horizontally
          25 shrink-window-horizontally
          set-variable :mouse-word-select "find-java-function"
          set-variable $buffer-hilight .hilight.java
          screen-update
          beginning-of-buffer
          set-mark
          end-of-buffer
          exchange-point-and-mark
          kill-region
          next-window-find-buffer .buffer
          ; now search for functions
          set-alpha-mark "p"
          beginning-of-buffer
          set-variable .searchstring "^[ \t]*[a-zA-Z0-9_ ]*\([a-zA-Z0-9_ ,]*\){" ;
          for easier updates of two places
          !force search-forward .searchstring
          !while $status
          beginning-of-line
          4 forward-char
          set-mark
          end-of-line
          exchange-point-and-mark
          copy-region
          set-variable .function @y
          -1 yank
          set-variable .line $window-line
          next-window-find-buffer &cat &cat "*" .buffer "functions*"
          execute-string &cat &cat &cat "" .function "\t\t\t Line:" .line
          insert-newline
          next-window-find-buffer .buffer
          !force search-forward .searchstring
          !done
          goto-alpha-mark "p"
          !emacro

          but what is with classes:
          see:
          class Flag extends java.applet.Applet
          {
          int x ; int y ;
          int $size = 30 ;
          Image flagImage ;;
          Flag(int x, int y, Image flagImage){ // constructor
          this.x = x ;
          this.y = y ;
          this.flagImage = flagImage;
          }
          void drawFlag(Graphics g){
          g.drawRoundRect(x,y,$size+4,$size+4,10,10);
          g.drawRoundRect(x-1,y-1,$size+6,$size+6,11,11);
          g.drawImage(flagImage,x+2,y+2, $size, $size, this);
          }
          boolean isClicked(int x_evt, int y_evt){
          if (x_evt > x && x_evt < (x+$size) && y_evt > y && y_evt < (y+$size)){

          return true ;
          }else return false ;
          }
          }
          I get something like:
          Flag(int x, int y, Image flagImage){ Line:231
          void drawFlag(Graphics g){ Line:236
          boolean isClicked(int x_evt, int y_evt){ Line:241

          but i want that:

          class Flag extends java.applet.Applet
          Flag(int x, int y, Image flagImage){ Line:231
          void drawFlag(Graphics g){ Line:236
          boolean isClicked(int x_evt, int y_evt){ Line:241

          so I have to provide two(!) search-stringes in one expression using the `|'
          operator like
          in the following short perl-program:
          # can be used in tools, but requires perl !!
          # variables
          my $file = $ARGV[0];
          # Main
          open (JAVA, "$file");
          while (<JAVA>){
          if (/^[ \t]*[a-zA-Z0-9_ ]+\([a-zA-Z0-9_ ,]*\){|^[a-zA-Z0-9_ ]*class
          [a-zA-Z0-9_ .]*/){ #}
          print ;
          }
          }
          if compiled into a *toc* window I have what I wan't, but how to do this with
          a ME-search-string
          searching for two strings the `\|' failed....

          Any suggestions ?
          regards,
          Detlef

          my hktoc.emf:
          define-macro find-line
          beginning-of-line
          set-mark
          end-of-line
          exchange-point-and-mark
          copy-region
          set-variable #l0 @y
          -1 yank
          next-window
          set-alpha-mark "p"
          beginning-of-buffer
          !force search-forward #l0
          !if $status
          ml-write "Here it is !!!"
          recenter
          !else
          ml-write "Sorry not found ..."
          goto-alpha-mark "p"
          !endif
          !emacro
          define-macro fhook-toc
          set-variable :mouse-word-select find-line
          ; execute user extensions if enabled
          !emacro

          ml-write "[toc file hook loaded]"

          ; load in user extensions if found
          !force execute-file "mytoc"
        • jirko@cassuben.net
          Try using this: ^[ t]*class |^[ t]*[a-zA-Z0-9_ ]*([a-zA-Z0-9_ ,]*){ You need to double the before the | , otherwise it is ignored. See the help on
          Message 4 of 5 , Dec 14, 2000
          • 0 Attachment
            Try using this:

            "^[ \t]*class\\|^[ \t]*[a-zA-Z0-9_ ]*([a-zA-Z0-9_ ,]*){"

            You need to double the '\' before the '|', otherwise it is ignored. See the
            help on "set-variable".

            Also you should think about the "4 forward-char" a few lines below, because it
            cuts of the first four characters if your function or your class definition
            starts on the beginning of the line.

            regards

            Jirko



            On 14-Dec-2000 Detlef Groth wrote:
            >
            >
            > Jasspa wrote:
            >
            >> Try being more specific in the search i.e.
            >>
            >> ^[ \t]*[a-zA-Z0-9_]+[ \t]*([^)]*)[ \t]*{
            >>
            >> There are too many ".*"'s. The above was taken from the
            >> command line so you need to macro it up a bit.
            >>
            >> Regards
            >> Jon.
            >
            > Okay a new version is the following:
            > "^[ \t]*[a-zA-Z0-9_ ]*\([a-zA-Z0-9_ ,]*\){"
            > see:
            >
            > define-macro list-java-functions
            > ; set-variable $debug 1
            > set-variable .buffer $buffer-bname
            > delete-other-windows
            > ; erase old-contents
            > find-buffer &cat &cat "*" .buffer "functions*"
            > split-window-horizontally
            > 25 shrink-window-horizontally
            > set-variable :mouse-word-select "find-java-function"
            > set-variable $buffer-hilight .hilight.java
            > screen-update
            > beginning-of-buffer
            > set-mark
            > end-of-buffer
            > exchange-point-and-mark
            > kill-region
            > next-window-find-buffer .buffer
            > ; now search for functions
            > set-alpha-mark "p"
            > beginning-of-buffer
            > set-variable .searchstring "^[ \t]*[a-zA-Z0-9_ ]*\([a-zA-Z0-9_ ,]*\){" ;
            > for easier updates of two places
            > !force search-forward .searchstring
            > !while $status
            > beginning-of-line
            > 4 forward-char
            > set-mark
            > end-of-line
            > exchange-point-and-mark
            > copy-region
            > set-variable .function @y
            > -1 yank
            > set-variable .line $window-line
            > next-window-find-buffer &cat &cat "*" .buffer "functions*"
            > execute-string &cat &cat &cat "" .function "\t\t\t Line:" .line
            > insert-newline
            > next-window-find-buffer .buffer
            > !force search-forward .searchstring
            > !done
            > goto-alpha-mark "p"
            > !emacro
            >
            > but what is with classes:
            > see:
            > class Flag extends java.applet.Applet
            > {
            > int x ; int y ;
            > int $size = 30 ;
            > Image flagImage ;;
            > Flag(int x, int y, Image flagImage){ // constructor
            > this.x = x ;
            > this.y = y ;
            > this.flagImage = flagImage;
            > }
            > void drawFlag(Graphics g){
            > g.drawRoundRect(x,y,$size+4,$size+4,10,10);
            > g.drawRoundRect(x-1,y-1,$size+6,$size+6,11,11);
            > g.drawImage(flagImage,x+2,y+2, $size, $size, this);
            > }
            > boolean isClicked(int x_evt, int y_evt){
            > if (x_evt > x && x_evt < (x+$size) && y_evt > y && y_evt <
            > (y+$size)){
            >
            > return true ;
            > }else return false ;
            > }
            > }
            > I get something like:
            > Flag(int x, int y, Image flagImage){ Line:231
            > void drawFlag(Graphics g){ Line:236
            > boolean isClicked(int x_evt, int y_evt){ Line:241
            >
            > but i want that:
            >
            > class Flag extends java.applet.Applet
            > Flag(int x, int y, Image flagImage){ Line:231
            > void drawFlag(Graphics g){ Line:236
            > boolean isClicked(int x_evt, int y_evt){ Line:241
            >
            > so I have to provide two(!) search-stringes in one expression using the `|'
            > operator like
            > in the following short perl-program:
            ># can be used in tools, but requires perl !!
            ># variables
            > my $file = $ARGV[0];
            ># Main
            > open (JAVA, "$file");
            > while (<JAVA>){
            > if (/^[ \t]*[a-zA-Z0-9_ ]+\([a-zA-Z0-9_ ,]*\){|^[a-zA-Z0-9_ ]*class
            > [a-zA-Z0-9_ .]*/){ #}
            > print ;
            > }
            > }
            > if compiled into a *toc* window I have what I wan't, but how to do this with
            > a ME-search-string
            > searching for two strings the `\|' failed....
            >
            > Any suggestions ?
            > regards,
            > Detlef
            >
            > my hktoc.emf:
            > define-macro find-line
            > beginning-of-line
            > set-mark
            > end-of-line
            > exchange-point-and-mark
            > copy-region
            > set-variable #l0 @y
            > -1 yank
            > next-window
            > set-alpha-mark "p"
            > beginning-of-buffer
            > !force search-forward #l0
            > !if $status
            > ml-write "Here it is !!!"
            > recenter
            > !else
            > ml-write "Sorry not found ..."
            > goto-alpha-mark "p"
            > !endif
            > !emacro
            > define-macro fhook-toc
            > set-variable :mouse-word-select find-line
            > ; execute user extensions if enabled
            > !emacro
            >
            > ml-write "[toc file hook loaded]"
            >
            > ; load in user extensions if found
            > !force execute-file "mytoc"
            >
            >
            >
            >
            > __________________________________________________________________________
            >
            >
            >
            > This is an unmoderated list. JASSPA is not responsible for the content of
            >
            > any material posted to this list.
          • Detlef Groth
            ^[ t]*[a-zA-Z0-9_ ]* ([a-zA-Z0-9_ ,]* ){ | Wclass !!! ----------a space ! -------- two s sounds like a programmers poem. Thanks all, the trick
            Message 5 of 5 , Dec 15, 2000
            • 0 Attachment
              "^[ \t]*[a-zA-Z0-9_ ]*\([a-zA-Z0-9_ ,]*\){\\|\\Wclass " !!!
              '----------a space ! '-------- two \\s
              sounds like a programmers poem.
              Thanks all, the trick was simply `\\|',
              it is `|' in perl and it's competitors
              it is `\|' in the microemacs-commandline,
              it is `\\|' in the microemacs-macro.

              I got the followong tree :
              public class Start2 extends java.applet.Applet implements Runnable Line:2
              public void init(){ Line:39
              public void start(){ Line:77
              public void stop(){ Line:84
              public void run(){ Line:89
              while(true){ Line:110 // waiting for input not a function ..
              public void paint(Graphics g){ Line:144
              public void update(Graphics g){ Line:188
              public void drawSlogans(){ Line:191
              public boolean mouseDown(Event evt, int x, int y){ Line:208
              void show(String text){ Line:235
              class Flag extends java.applet.Applet Line:240
              Flag(int x, int y, Image flagImage){ Line:245
              void drawFlag(Graphics g){ Line:250
              boolean isClicked(int x_evt, int y_evt){ Line:255
              class Button extends java.applet.Applet Line:261
              Button(int x, int y, int modus){ Line:266
              void drawButton(Graphics g){ Line:271
              boolean isClicked(int x_evt, int y_evt){ Line:286

              what is almost that what I want. Of course this depends much on your coding style
              regarding the {}-brackets. Up to now I missed the javatags.emf. Did I miss a new
              release ?

              Follows the `final' release....

              define-macro list-java-functions
              ; set-variable $debug 1
              set-variable .buffer $buffer-bname
              delete-other-windows
              find-buffer &cat &cat "*" .buffer "functions*"
              split-window-horizontally
              25 shrink-window-horizontally
              ; to simple click the function
              set-variable :mouse-word-select "find-java-function"
              set-variable $buffer-hilight .hilight.java
              screen-update
              ; erase old-contents
              beginning-of-buffer
              set-mark
              end-of-buffer
              exchange-point-and-mark
              kill-region
              next-window-find-buffer .buffer
              set-alpha-mark "p"
              beginning-of-buffer
              ; declare what to find
              set-variable .searchstring "^[ \t]*[a-zA-Z0-9_ ]*\([a-zA-Z0-9_
              ,]*\){\\|\\Wclass "
              !force search-forward .searchstring
              !while $status ; if found put into the *function*-buffer
              beginning-of-line
              set-mark
              end-of-line
              exchange-point-and-mark
              copy-region
              end-of-line
              set-variable .function @y
              -1 yank
              set-variable .line $window-line
              next-window-find-buffer &cat &cat "*" .buffer "functions*"
              execute-string &cat &cat &cat "" .function "\t\t\t Line:" .line
              insert-newline
              next-window-find-buffer .buffer
              !force search-forward .searchstring
              !done
              goto-alpha-mark "p"
              !emacro

              define-macro find-java-function
              search-forward "Line:"
              set-mark
              forward-word
              exchange-point-and-mark
              copy-region
              set-variable #l0 @y
              -1 yank
              next-window
              #l0 goto-line
              recenter
              !emacro

              buffer-bind-key "list-java-functions" "f7"

              Best regards,
              Detlef
            Your message has been successfully submitted and would be delivered to recipients shortly.