For example a marked region containing these values:
Code: Select all
apples
oranges
lemonsCode: Select all
'apple', 'orange', 'lemon'Code: Select all
--
--        Name: Qlines
--
--    Language: Lua Macro
--
-- Description: This quote lines macro will converts a region of marked
--              lines into a single comma separated line.
--
--     Example: Running the macro for these three marked lines:
--
--                  apples
--                  oranges
--                  lemons
--
--               will become this line:
--
--                  'apple', 'orange', 'lemon'
--
function key_macro()
    -- macro only works for documents
    local document = is_document()
    -- macro only works for read / write documents.
    local locked = is_read_only()
    if (locked == 1) or (document == 0) then
        message("This macro only works for writable document files.")
        beep()
        return
    end
    if is_marked() == 0 then
        message("This macro requires a marked region of lines.")
        beep()
        return;
    end
    screen_update_disable()
    -- get the marked text details
    local top    = get_marked_top()
    local bottom = get_marked_bottom()
    local range  = bottom - top + 1;
    if range > 1 then
        -- remove the markings
        MarkHide()
        -- first line of marked region
        set_line_pos(top, 1)
        -- quote the lines
        repeat
            MoveLineHome()
            set_cursor_pos(1)
            print("'")
            MoveLineEnd()
            if range > 1 then
                print("', ")
            else
                print("'")
            end
            MoveLineDown()
            range = range - 1
        until range == 0
        -- first line of marked region
        set_line_pos(top, 1)
        range = bottom - top;
        -- join the lines
        repeat
             LineJoinNext()
             range = range - 1
        until range == 0
        -- position the line and cursor location
        set_line_pos(top, 1)
    end
    screen_update_enable()
    screen_update()
end
key_macro() -- run the macro