[PLUGIN] SimpleComplete | Simple autocompletion plugin with table member docstrings, variable docstrings, module & service auto imports and more!

SimpleComplete is a relatively simple plugin which allows you to add docstrings to variables, table members and functions, add tags/attributes for your docstrings, as well as have shorthands for importing any of Roblox’s services.

How To Enable

The SimpleComplete plugin has 2 buttons which can be used to toggle on/off its features:

image

For example, if you wish to enable just the docstrings, simply click it until it is dark.
To disable it, just click it again until it is bright

Docstring Declaration Syntax

To declare a docstring for functions, it is as simple as putting a comment ontop of it, like this:
image

This functionality already exists in vanilla Studio, however SimpleComplete does allow you to use all the tags and attributes within function docstrings.

However, for variables and table members, you must declare docstrings like this, with the <docstring> tag:
image
image
Just putting a comment ontop won’t work.

Docstring Tags

Docstring tags add certain functionality to docstrings without needing any other value.

  1. <deprecated>

    • This tag simply crosses out the name for the item and hides it unless specifically searched for.
      image

  2. <client_only>

    • This tag makes it so that if the item is being accessed from somewhere other than a LocalScript or a Client RunContext script, it will not register as an autocomplete choice.

  3. <server_only>

    • This tag makes it so that if the item is being accessed from somewhere other than a non-Client RunContext Script, it will not register as an autocomplete choice.

  4. <plugin_only>

    • This tag makes it so that if the item is being accessed from somewhere other than a script with Plugin permissions, it will not register as an autocomplete choice.

  5. <cmd_line_only>

    • This tag makes it so that if the item is being accessed from somewhere other than the command line, it will not register as an autocomplete choice.

  6. <corescript_only>

    • This tag makes it so that if the item is being accessed from somewhere other than a CoreScript, it will not register as an autocomplete choice.

  7. <cursor_after_parens>

    • This tag will add () after the autocompleted variable, and put the cursor after the ).

  8. <cursor_in_parens>

    • This tag will add () after the autocompleted variable, and put the cursor after the (.

Docstring Attributes & Syntax

There is a special syntax for docstring values.

  1. Strings

    • Attribute strings are declared via $…$ for single line, and $$…$$ for multiline.
      Example:


  2. Booleans

    • Attribute booleans are declared the same way as strings, but with $true$ or $false$ as the value.

  3. Numbers

    • Attribute numbers are declared the same way as strings, but with $n$ as the value.
      Example:

Docstring attributes add certain functionality to docstrings using a provided value.

  1. <override_docstring>: @string

    • This attribute sets the docstring to the string.

  2. <code_sample>: @string

    • This attribute sets the code sample part of the docstring to the string.

  3. <learn_more>: @string

    • This attribute sets the “Open Documentation” link of the docstring to the specified url string.
      Note that if the url is not Roblox’s own documentation website, it will not display.

  4. <preselect>: @bool

    • I have no idea what this does, but I added it anyway :V

  5. <detail>: @string

  6. <num_overloads>: @number

    • Sets the #overloads part of the docstring to the number.

  7. <kind>: @string

    • Sets the Enum.CompletionItemKind of the item to the string.
      Example:
      image

Service Shorthands

Service shorthands can be used to quickly import Roblox services:

image

To change the “shorthand symbol”, simply type --?service-shorthand and then the symbol you wish to use, like so:

image

Note that the symbol currently cannot be multicharacter

Example:

Get SimpleComplete here! →

If you wanna donate to me for my work, feel free to do so here! →

Any donations mean alot to me and means I can make more stuff :slight_smile:

12 Likes

Oops forgot to public it, it’s public now

1 Like

Update 1:

1 Like

I need a better tutorial. The currwnt tutorial flies off my head

Essentially, there are 2 main things inside the docstrings: Tags and Attributes

These work similarly to Instance tags and attributes, tags are simply names and attributes have both a name and a value.

For example, <deprecated> is a tag, while <kind>: $Function$ is an attribute ($…$ is used to define strings)
These can be in any order inside the docstring, for example:

image

But for defining variable/table member docstrings, you need a special <docstring> tag at the start of the comment, like this:

--[[<docstring>

]]

on the top of it. This is as to not conflict with any existing comments

This makes alot more sense! Thx ill use it now

1 Like

Update 2:

  • Added service auto-imports

    Screenshot 2025-03-24 113040
    It does not work when writing inside strings/comments (multiline and single line) and also does not work when you have already defined the service names as their own variables
1 Like

Update 3:

  • Service auto imports no longer show up when defining a local variable and when doing a table member access via . or :
  • Docstrings & import utilities are now enabled by default
1 Like

Update 4:

  • Docstrings now are completely reliable, same for service auto imports and shorthands:

    The next update will be module autoimports!

Update 5:

  • Added module auto imports, with the syntax for determining what ancestors to check being the --?module-ancestors {..paths...} directive, like so:

Note that all descendants of the ancestor which are modulescripts will be considered.

Patch 5.1:

  • Fixed module imports showing up after a service shorthand
1 Like

Update 6:

  • Fixed module and service imports going in random order, now it goes directives → services → modules
  • Fixed service suggestions popping up in unwanted places such as string patterns or directives
  • Fixed a very big performance issue with auto imports, now it runs very smoothly even for relatively big scripts
1 Like

Patch 6.1:

Patch 6.2:

  • Made it so that module path refreshes are done incrementally instead of clearing the whole table and rebuilding it, this considerably improved performance for module auto imports

  • Improved the new isInNonImportContext function to return true when inside multiline comments/strings (Also works for scoped multiline comments)

Update 7:

  • Added “script” and “.Parent” as usable within the --?module-ancestors {} directive (for example, you can now do --?module-ancestors {script.Parent})

  • Service imports no longer appear in function parameter lists

  • --? directives are now autocompleted:

  • Directives no longer apply when used within strings

Known issues:

  • Service imports show up when defining tuple variables, e.g local a, b, c
1 Like

Patch 7.1:

  • Service imports no longer appear in tuple variable declarations