Atom language support for NSIS, including grammar, snippets and a rudimentary build system
CoffeeScript JavaScript
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

NSIS for Atom

apm apm apm Travis David Gitter

Language syntax, auto-completions and build system for Nullsoft Scriptable Install System (NSIS), as well as language syntax for NSIS Language Files (NLF).


Screenshot of NSIS in Atom with Hopscotch theme


  • syntax grammar for NSIS and NSIS Language Files (.nlf)
  • auto-complete core NSIS commands, variables and predefines
  • auto-complete core Plugins:
    • AdvSplash
    • Banner
    • BgImage
    • Dialer
    • InstallOptions
    • LangDLL
    • Math
    • nsDialogs
    • nsExec
    • NSISdl
    • Splash
    • StartMenu
    • System
    • UserInfo
    • VPatch
  • auto-complete core libraries (“Useful Headers”):
    • FileFunc
    • LogicLib
    • Memento
    • Modern UI
    • MultiUser
    • Sections
    • StrFunc
    • WinMessages
    • WinVer
    • WordFunc
    • x64
  • Drunken NSIS
  • Build Tools

You can further extend this package with snippets for third-party plug-ins.



Install language-nsis from Atom's Package Manager or the command-line equivalent:

$ apm install language-nsis

Using Git

Change to your Atom packages directory:

# Windows
$ cd %USERPROFILE%\.atom\packages

# Linux & macOS
$ cd ~/.atom/packages/

Clone repository as language-nsis:

$ git clone language-nsis

Inside the cloned directory, install Node dependencies:

$ yarn || npm install

Package Dependencies

This package automatically installs third-party packages it depends on. You can prevent this by disabling the Manage Dependencies option in the package settings.



With most commands, you can specify available options before completion. For instance, rather than completing RequestExecutionLevel and then specifying an option, you can directly choose RequestExecutionLevel user from the completion menu.

To complete compile time commands, variables or predefines, make sure to omit special characters like !, $ and brackets:

  • include completes to !include
  • INSTDIR completes to $INSTDIR
  • NSIS_VERSION completes to ${NSIS_VERSION}

However, you have to type __LINE__ to complete to ${__LINE__}.

There are several special cases for your convenience:

  • MB_OK completes to MessageBox MB_OK "messagebox_text"
  • onInit completes to a Function .onInit block
  • LogicLib completes to !include "LogicLib.nsh"

Drunken NSIS

Fuzzy syntax completions are available through the “Drunken NSIS” snippets, which iron out some of the inconsistencies of the NSIS language, for instance word order.


  • FileRead equals ReadFile
  • ReadINIStr equals INIStrRead
  • SectionSetText equals SetSectionText
  • LogSet equals SetLog
  • FindFirst equals FirstFind
  • ${FindLine} equals ${LineFind}


There are many ways to compile NSIS scripts in Atom. But before you read on, make sure makensis is in your PATH environmental variable.

As of recently, this package contains build system to compile your NSIS scripts. To trigger a build, select “NSIS: Save & Compile” from the command-palette or use the keyboard shortcut.

If you prefer working with specific compiler arguments, you can specify them in your Atom configuration. Optionally, you can also specify the path to makensis.


  compilerArguments: "/WX /V3"
  pathToMakensis: "/usr/local/bin/makensis"

Third-party Build Tools

Should you prefer working with an existing third-party build system, the following packages already have support for NSIS.

Project files for build can be created by executing “NSIS: Create .atom-build file” from the command-palette or using the keyboard shortcut. An equivalent for building on Wine is also available. You can specify your preferred build file syntax (CSON/JSON/YAML) in the package settings.

You can set up atom-runner by executing “NSIS: Set default runner” from the command-palette or packages menu. To remove it, use “NSIS: Remove default runner”.


This work is dual-licensed under The MIT License and the GNU General Public License, version 2.0


You are welcome support this project using Flattr or Bitcoin 17CXJuPsmhuTzFV2k4RKYwpEHVjskJktRd