Workspace Search File and Load

This forum allows you to share scripts with other Zeus users. Please do not post bug reports, feature requests or questions to this forum, but rather use it exclusively for posting scripts or for the discussion of scripts that have been posted.
Post Reply
jussij
Site Admin
Posts: 2650
Joined: Fri Aug 13, 2004 5:10 pm

Workspace Search File and Load

Post by jussij »

Code: Select all

--
--        Name: Workspace File Search and Load Example
--
--      Author: Jussi Jumppanen
--
--    Language: Lua Macro
--
-- Description: This simple Lua macro searches all the file names of the
--              current workspace for the user supplied input string value
--              and load any file that contains that value.
--
function seaarch_for_files(file_pattern)
    local count = 0

    -- create a table to store the results
    local files_found = {}

    -- get then names of all the projects
    local names = projects(",")

    file_pattern = string.lower(file_pattern)

    -- get all the files in each all the projects
    for name in string.gmatch(names, "[^,]+") do
        files = project_files(name, 1, ",")

        for file in string.gmatch(files, "[^,]+") do
            if string.find(string.lower(file), file_pattern) ~= nil then
                count = count + 1
                files_found[count] = file;
                --message_box(0, files_found[count])
            end
        end
    end

    if count > 0 then
        for i = 1, count, 1 do
            file_open(files_found[i])
        end
    end

    return count
end

function key_macro()
    is_open = is_workspace_open()

    if (is_open == 1) then

        -- default to the current word or highlighted text
        local nill = macro_tag("$WEX")

        -- ask for a user for a command line
        local file_name = user_input("File Name:", nill, "Search Workspace")

        if string.len(file_name) > 0 then
            -- try to load the files
            if seaarch_for_files(file_name) == 0 then
                message("No files of this pattern found in workspace: " .. file_name)
            end
        else
            message("Operation cancelled by user.")
        end
    else
        message("No workspace currently open.")
        beep()
    end
end

key_macro() -- run the macro
Post Reply