Java and Zeus File Navigation

Find Tips and tricks on how to better use the Zeus IDE. Feel free to post your own tips but please do not post bug reports, feature requests or questions here.
Post Reply
jussij
Site Admin
Posts: 2650
Joined: Fri Aug 13, 2004 5:10 pm

Java and Zeus File Navigation

Post by jussij »

The Zeus FileOpenInLine keyboard function is specifically designed to help with the navigation of source files. This function parses the current line for anything that might look like a file name and then tries to open the file for editing.

For languages like c/c++ where there are large source files and lots of include files this feature works well.

But for languages like Java, where there are no include files and each public class must be in a source file of it's own, then this function does not work so well :(

Fortunately it is possible to improve on the functionality using a macro script. The macro script shown below will take the word under the current cursor or any marked area and try to load it as a file.

Save the following code to the openinclude.lua in the Zeus zScript directory:

Code: Select all

function file_exists(file_name)
  -- use the Lua file functions to check if the file exists
  local file_handle = io.open(file_name, "r")

  -- check for success
  if file_handle ~= nil then
      -- close the Lua file handle
      file_handle:close()

      -- the file exists
      return 1
  end

  -- the file doe snot exist
  return 0
end

function key_macro()
  -- This macro will only work for document windows.
  local document = is_document ()

  if (document == 0) then
     message("This macro only works for document files!")
     beep()
     return 1
  end

  -- get the word under the cursor or the current marked area
  local current_word = macro_tag("$WEX")
  local current_len = string.len(current_word)

  if (current_len > 0) then
    -- get the extension of the current file
    local file_path      = macro_tag("$FDD")
    local file_extension = macro_tag("$E")

    -- build up a file name
    local file_name = file_path .. current_word .. file_extension

    -- check if the file exists
    if (file_exists(file_name) == 1) then

        -- open the file in Zeus
        file_open(file_name)

        -- all done
        return 1;
    end
  end

  -- no luck with the current word so try the built-in function
  FileOpenInLine()
end

key_macro() -- run the macro
To see how the macro will work consider this simple Java code:

Code: Select all

public class MyObject extends SomeBaseObject
{
}
Java requires the MyObject class to be in a file called MyObject.java and the SomeBaseObject class to be in a file called SomeBaseObject.java.

Using this macro it is posisble to load the SomeBaseObject.java file by placing the cursor on the word SomeBaseObject and simply running the macro.

For more information on running Zeus macros see the Binding a Macro to the Keyboard example.

For more information on Lua goto this link: http://www.lua.org/manual/5.0/manual.html
Post Reply