Skip to content

A vscode language server that enables code lens, references, hover information and symbol renaming in asssembler files.

License

Notifications You must be signed in to change notification settings

iSlans/asm-code-lens

 
 

Repository files navigation

FORK

a fork with custom functionality for Unipi Reti Logiche:

  • onhover documentation
  • snippets

See below for the original extension

Support

If you like ASM-Code-Lens please consider supporting it.

  

ASM Code Lens

'ASM Code Lens' is a language server extension for Visual Studio Code for assembler files. It provides support for:

  • Assembler syntax highlighting.
  • Completions: While you type completions are proposed based on the labels in your asm files.
  • "Find all references": through a right mouse click in your assembler source file. It will come up with all found references in the other files.
  • Hovering: When hovering over a symbol it shows the comments for the symbol.
  • Outline view: View your labels (code, data, constants) in the outline view.
  • Rename symbols.
  • Code Lens: Above symbols it shows the number of references. You can click it to get to the references.
  • Command: asm-code-lens.find-labels-with-no-reference to find all labels that are not EQU and are not referenced. Useful to find dead code.
  • Supports e.g. sjasmplus (with dot notation, also MODULE and STRUCTs), Savannah's z80asm, z88dk assembler and many other assemblers that use a standard notation for labels (e.g. "label:").

Please refer to the "Feature Contributions" tab to see how to enable/disable certain features

Installation

Install through Visual Studio Code Marketplace. The extension is called "ASM Code Lens".

It supports the following assembler file suffixes by default: .asm, .s, .inc, .a80, .list, .lis, .z80. Others are configurable. (Configuration not possible for syntax highlighting.)

Hexadecimal Calculator

A view in the sidebar of the explorer and in debug mode. It adds a decimal and hexadecimal calculator to vscode. It always shows 2 columns: decimal and hexadecimal. If you enter a number in one column it is automatically converted to the other type.

This way it is easily possible to mix calculations between decimal and hexadecimal.

The calculator allows the basic integer calculations:

  • addition
  • subtraction
  • multiplication
  • division

Outline View

An outline view of the assembly can be shown like this:

"ASM Code Lens" uses some heuristics to tell what labels are data, const or code. So be aware that it's decision might be wrong sometimes.

Note: The outline view also supports sjasmplus MODULE information.

Problem Matcher

For the sjasmplus assembler there is a problem matcher included to ease navigation to compile errors.

You can use it simply by adding this to your tasks.json:

"problemMatcher": "$problem-matcher-sjasmplus",

Hovers in Debug Mode

vscode turns the normal hovers off if in debug mode. To make them visible press the "ALT" key while hovering.

Syntax highlighting in Markdown code blocks

Assembler syntax highlighting can also be used within Markdown documents. Just add asm to your code blocks.

Here is an example:

# Mainloop

The following code is the main loop of the program:

~~~asm
main_loop:
    ; fill line with color
    ld hl,(fill_colors_ptr)
    ld a,(hl)
    call fill_bckg_line

    ; next line
    call inc_fill_colors_ptr

    jr main_loop
~~~

Which results in the following highlighting:

Known Issues

  • [CodeLens lifetime #57227](microsoft/vscode#57227): Updates of the CodeLens is not working optimal. At the moment it is necessary to reload or save the file to update the CodeLens info.
  • This extension doesn't use a structured approach but just looks at all asm files without hierarchy. This means that sjasmplus MODULE definitions are only taken into account if they are used within the same file.

License and Acknowledgements

ASM-Code-Lens is licensed under the MIT license.

This extension made use of 3 other packages:

I also included the grammar for syntax highlighting from Martin Bórik's vscode extension z80-macroasm-vscode because I got problems when running both extensions at the same time and I could not turn off features selectively. I.e. I copied the files language.configuration.json and z80-macroasm.tmLanguage.json. The z80-macroasm-vscode extension itself was forked from Imanol Barriuso's vscode extension z80asm-vscode. MIT license, copyright (c) 2016 Imanol Barriuso (Imanolea).

Many thanks to the authors.

I also would like to thank these authors for contributions:

About

A vscode language server that enables code lens, references, hover information and symbol renaming in asssembler files.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Assembly 39.9%
  • HTML 31.4%
  • CSS 28.7%