NAME

PLS::Parser::Document

DESCRIPTION

This is a class that represents a text document. It has methods for parsing and manipulating the document using PPI and PPR.

METHODS

new

This creates a new PLS::Parser::Document object. It takes named parameters.

Either uri or path must be passed.

line with a line number may be passed, which indicates that only one line of the document should be parsed. This greatly enhances performance for completion items.

set_index

This sets the PLS::Parser::Index object to be used by all PLS::Parser::Document objects.

get_index

This gets the PLS::Parser::Index object to use. It will set it for other objects to use if it does not already exist.

go_to_definition

This finds the definition of a symbol located at a given line and column number.

find_current_list

This finds the nearest list structure that surrounds the current column on the current line. This is useful for finding which parameter the cursor is on when calling a function.

go_to_definition_of_closest_subroutine

Given a list of elements, this finds the closest subroutine call to the current line and column.

search_elements_for_definition

This tries to find the definition in a list of elements, and returns the first definition found.

This determines if the line and column are within a POD L<> code, and returns the contents of the link if so.

find_pod

This attempts to find POD for the symbol at the given location.

find_external_subroutine

This attempts to find the location of a subroutine inside an external module, by name.

find_external_package

This attempts to find the location of an external package by name.

go_to_variable_definition

This finds the definition of a variable.

This probably only works correctly for my, local, and state variables, but may also work for our variables as long as they are in the same file.

open_file

This adds a file and its text to a list of open files.

open_files

This provides a list of names of files that are currently open.

update_file

This patches an open file in memory to keep it synched with the actual file in the editor.

close_file

This removes a file from the list of open files.

get_subroutines

This gets a list of all subroutines in a document.

get_constants

This gets a list of all constants in a document.

Only constants declared with use constant are found.

get_packages

This gets a list of all packages in a document.

get_variable_statements

This gets a list of all variable statements in a document. A variable statement is a statement which declares one or more variables.

get_full_text

This returns a SCALAR reference of the in-memory text of the current document.

get_variables_fast

This gets a list of all variables in the current document. It uses PPR to do so, which is faster than PPI, but only provides a list of strings.

get_packages_fast

This gets a list of all packages in the current document. It uses PPR to do so, which is faster than PPI, but only provides a list of strings.

get_subroutines_fast

This gets a list of all subroutines in the current document. It uses PPR to do so, which is faster than PPI, but only provides a list of strings.

get_constants_fast

This gets a list of all constants in the current document. It uses PPR to do so, which is faster than PPI, but only provides a list of strings.

This only finds constants declared with use constant.

format_range

This formats a range of text in the document using perltidy.

format

This formats the entire document using perltidy.

_ppi_location

This converts an LSP 0-indexed location to a PPI 1-indexed location.

text_from_uri

This returns a SCALAR reference to the text of a particular URI.

_get_ppi_document

This creates a PPI::Document object for a document. It will return an PPI::Document from memory if the file has not changed since it was last parsed.

_is_constant

Determines if a PPI element is a constant.

find_word_under_cursor

Gets information about the current word under the cursor. Returns a four-element list:

The range where the word is located
A boolean indicating whether the word is before an arrow (->) or not.
The name of the package where the word is located
The word under the cursor to be used as a filter for searching

get_list_index

Gets the index within a list where a cursor is.

This is useful for determining which function parameter the cursor is on within a function call.

sort_imports

This sorts the imports within a file. The order is:

use strict and use warnings
use parent and use base
Other pragmas (excluding use constant)
Core and external imports
Internal imports (from the current project)
Constants (use constant)

_sort_imports

Determines the sorting of two imports within a block of imports.

_pad_imports

Adds newlines to pad the various import sections from each other and from the rest of the document.

_split_lines

Splits a document into lines using $/ as the separator.