Skip to content

Commit

Permalink
feat: add nasm language (helix-editor#6068)
Browse files Browse the repository at this point in the history
  • Loading branch information
mtoohey31 authored and wes-adams committed Jul 3, 2023
1 parent a2d42ca commit 2eaab42
Show file tree
Hide file tree
Showing 5 changed files with 157 additions and 0 deletions.
1 change: 1 addition & 0 deletions book/src/generated/lang-support.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@
| meson || || |
| mint | | | | `mint` |
| msbuild || || |
| nasm ||| | |
| nickel || || `nls` |
| nix || | | `nil` |
| nu || | | |
Expand Down
13 changes: 13 additions & 0 deletions languages.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2218,3 +2218,16 @@ comment-token = "#"
[[grammar]]
name = "po"
source = { git = "https://github.com/erasin/tree-sitter-po", rev = "417cee9abb2053ed26b19e7de972398f2da9b29e" }

[[language]]
name = "nasm"
scope = "source.nasm"
file-types = ["asm", "s", "S", "nasm"]
injection-regex = "n?asm"
roots = []
comment-token = ";"
indent = { tab-width = 8, unit = " " }

[[grammar]]
name = "nasm"
source = { git = "https://github.com/naclsn/tree-sitter-nasm", rev = "a0db15db6fcfb1bf2cc8702500e55e558825c48b" }
126 changes: 126 additions & 0 deletions runtime/queries/nasm/highlights.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
(comment) @comment

(label) @label

(preproc_expression) @keyword.directive

[
(line_here_token)
(section_here_token)
] @variable.builtin

(unary_expression
operator: _ @operator)
(binary_expression
operator: _ @operator)
(conditional_expression
"?" @operator
":" @operator)

[
":"
","
] @punctuation.delimiter

[
"("
")"
"["
"]"
"{"
"}"
] @punctuation.bracket

(instruction_prefix) @keyword
(actual_instruction
instruction: (word) @function)

(call_syntax_expression
base: (word) @function)

(size_hint) @type
(struc_declaration
name: (word) @type)
(struc_instance
name: (word) @type)

(effective_address
hint: _ @type)
(effective_address
segment: _ @constant.builtin)

(register) @constant.builtin

(number_literal) @constant.numeric.integer
(string_literal) @string
(float_literal) @constant.numeric.float
(packed_bcd_literal) @constant.numeric.integer

((word) @constant
(#match? @constant "^[A-Z_][?A-Z_0-9]+$"))
((word) @constant.builtin
(#match? @constant.builtin "^__\\?[A-Z_a-z0-9]+\\?__$"))
(word) @variable

(preproc_arg) @keyword.directive

[
(preproc_def)
(preproc_function_def)
(preproc_undef)
(preproc_alias)
(preproc_multiline_macro)
(preproc_multiline_unmacro)
(preproc_if)
(preproc_rotate)
(preproc_rep_loop)
(preproc_include)
(preproc_pathsearch)
(preproc_depend)
(preproc_use)
(preproc_push)
(preproc_pop)
(preproc_repl)
(preproc_arg)
(preproc_stacksize)
(preproc_local)
(preproc_reporting)
(preproc_pragma)
(preproc_line)
(preproc_clear)
] @keyword.directive
[
(pseudo_instruction_dx)
(pseudo_instruction_resx)
(pseudo_instruction_incbin_command)
(pseudo_instruction_equ_command)
(pseudo_instruction_times_prefix)
(pseudo_instruction_alignx_macro)
] @function.special
[
(assembl_directive_target)
(assembl_directive_defaults)
(assembl_directive_sections)
(assembl_directive_absolute)
(assembl_directive_symbols)
(assembl_directive_common)
(assembl_directive_symbolfixes)
(assembl_directive_cpu)
(assembl_directive_floathandling)
(assembl_directive_org)
(assembl_directive_sectalign)

(assembl_directive_primitive_target)
(assembl_directive_primitive_defaults)
(assembl_directive_primitive_sections)
(assembl_directive_primitive_absolute)
(assembl_directive_primitive_symbols)
(assembl_directive_primitive_common)
(assembl_directive_primitive_symbolfixes)
(assembl_directive_primitive_cpu)
(assembl_directive_primitive_floathandling)
(assembl_directive_primitive_org)
(assembl_directive_primitive_sectalign)
(assembl_directive_primitive_warning)
(assembl_directive_primitive_map)
] @keyword
2 changes: 2 additions & 0 deletions runtime/queries/nasm/injections.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
((comment) @injection.content
(#set! injection.language "comment"))
15 changes: 15 additions & 0 deletions runtime/queries/nasm/textobjects.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
(preproc_multiline_macro
body: (body) @function.inside) @function.around
(struc_declaration
body: (struc_declaration_body) @class.inside) @class.around
(struc_instance
body: (struc_instance_body) @class.inside) @class.around

(preproc_function_def_parameters
(word) @parameter.inside)
(call_syntax_arguments
(_) @parameter.inside)
(operand) @parameter.inside

(comment) @comment.inside
(comment)+ @comment.around

0 comments on commit 2eaab42

Please sign in to comment.