
#include "stdafx.h"
#include "NotepadPlusWrapper.h"
#include "ScintillaWrapper.h"

#include "ProcessExecute.h"
#include "InvalidValueProvidedException.h"

namespace NppPythonScript
{
	void translateProcessStart(const process_start_exception &e)
	{
		PyErr_SetString(PyExc_RuntimeError, e.what());
	}

void export_notepad()
{
	//lint -e1793 While calling �Symbol�: Initializing the implicit object parameter �Type� (a non-const reference) with a non-lvalue
	// The class and enum declarations are used as designed, but they mess up Lint.
	boost::python::register_exception_translator<process_start_exception>(&translateProcessStart);
	boost::python::register_exception_translator<InvalidValueProvidedException>(&translateInvalidValueProvidedException);

	boost::python::class_<NotepadPlusWrapper, boost::shared_ptr<NotepadPlusWrapper>, boost::noncopyable>("Notepad", boost::python::no_init)
		.add_property("hwnd", &NotepadPlusWrapper::hwnd)
		.def("new", &NotepadPlusWrapper::newDocument, "Create a new document")
		.def("new", &NotepadPlusWrapper::newDocumentWithFilename, boost::python::args("filename"), "Create a new document with the given filename")
		.def("save", &NotepadPlusWrapper::save, "Save the current file")
		.def("saveAs", &NotepadPlusWrapper::saveAs, boost::python::args("filename"), "Save the current file as the specified filename")
		.def("saveAsCopy", &NotepadPlusWrapper::saveAsCopy, boost::python::args("filename"), "Save the current file as the specified filename, but don't change the filename")
		.def("open", &NotepadPlusWrapper::open, boost::python::args("filename"), "Open a new document with the given filename")
		.def("getCurrentView", &NotepadPlusWrapper::getCurrentView, "Get the currently active view (0 or 1)")
		.def("getCurrentLang", &NotepadPlusWrapper::getCurrentLangType, "Get the current language type (returns the LANGTYPE.xxx constants)")
		.def("getFiles", &NotepadPlusWrapper::getFiles, "Gets a list of the open filenames, as a list of tuples (filename, bufferID, index, view)")
		.def("loadSession", &NotepadPlusWrapper::loadSession, boost::python::args("sessionFileName"), "Loads a session from a session file")
		.def("saveSession", &NotepadPlusWrapper::saveSession, boost::python::args("sessionFileName", "listOfFileNames"), "Saves a session file with the list of files (sessionFilename, filesList)")
		.def("getSessionFiles", &NotepadPlusWrapper::getSessionFiles, boost::python::args("sessionFileName"), "Gets a list of files within a session file")
		.def("saveCurrentSession", &NotepadPlusWrapper::saveCurrentSession, boost::python::args("sessionFileName"), "Save the current session (filename)")
		.def("createScintilla", &NotepadPlusWrapper::createScintilla, "Create a new Scintilla handle. Returns an Editor object")
		.def("destroyScintilla", &NotepadPlusWrapper::destroyScintilla, boost::python::args("editor"), "Destroy a Scintilla handle created with createScintilla.")
		.def("getCurrentDocIndex", &NotepadPlusWrapper::getCurrentDocIndex, boost::python::args("view"), "Gets the current active index for the given view (0 or 1)")
		.def("setStatusBar", &NotepadPlusWrapper::setStatusBar, boost::python::args("section", "text"), "Sets the status bar text. Call with the STATUSBARSECTION, and the string to show")
		.def("getPluginMenuHandle", &NotepadPlusWrapper::getPluginMenuHandle, "DEPRECATED Gets the handle for the Plugins menu.")
		.def("activateIndex", &NotepadPlusWrapper::activateIndex, boost::python::args("view", "index"), "Activates the document with the given view and index (view, index)")
		.def("reloadFile", &NotepadPlusWrapper::reloadFile, boost::python::args("filename", "alertUser"), "Reloads a filename.")
		.def("saveAllFiles", &NotepadPlusWrapper::saveAllFiles, "Saves all currently unsaved files")
		.def("getPluginConfigDir", &NotepadPlusWrapper::getPluginConfigDir, "Gets the plugin config directory")
		.def("getPluginHomePath", &NotepadPlusWrapper::getPluginHomePath, "Gets the plugin home directory path")
		.def("getSettingsOnCloudPath", &NotepadPlusWrapper::getSettingsOnCloudPath, "Gets the settings on cloud path")
		.def("getBookMarkID", &NotepadPlusWrapper::getBookMarkID, "Get the bookmark ID")
		.def("menuCommand", &NotepadPlusWrapper::menuCommand, boost::python::args("commandID"), "Runs a Notepad++ menu command - just pass the commandID (from the nativeLang file, or a MENUCOMMAND constant)")
		.def("getVersion", &NotepadPlusWrapper::getVersion, "Gets the Notepad++ version as a tuple - e.g. 5.6.8 becomes (5,6,8)")
		.def("hideTabBar", &NotepadPlusWrapper::hideTabBar, "Hides the Tab bar")
		.def("showTabBar", &NotepadPlusWrapper::showTabBar, "Shows the Tab bar")
		.def("getCurrentBufferID", &NotepadPlusWrapper::getCurrentBufferID, "Gets the bufferID of the currently active buffer")
		.def("reloadBuffer", &NotepadPlusWrapper::reloadBuffer, "Reloads a buffer - just pass the buffer ID")
		.def("getLangType", &NotepadPlusWrapper::getLangType, "Gets the language type of the current buffer. Pass a buffer ID to get the type of the specified buffer.")
		.def("getLangType", &NotepadPlusWrapper::getBufferLangType, "Gets the language type of the current buffer. Pass a buffer ID to get the type of the specified buffer.")
		.def("setLangType", &NotepadPlusWrapper::setCurrentLangType, boost::python::args("langType"), "Set the current language type (use LANGTYPE.xxx constants)")
		.def("setLangType", &NotepadPlusWrapper::setBufferLangType, boost::python::args("langType", "bufferID"), "Sets the language type of the current buffer. Pass a buffer ID as the second parameter to set the language for a specific buffer.")
		.def("getEncoding", &NotepadPlusWrapper::getEncoding, "Gets the encoding of the current buffer.  Pass a buffer ID to get the encoding of a specific buffer.")
		.def("getEncoding", &NotepadPlusWrapper::getBufferEncoding, boost::python::args("bufferID"), "Gets the encoding of the current buffer.  Pass a buffer ID to get the encoding of a specific buffer.")
		.def("setEncoding", &NotepadPlusWrapper::setEncoding, boost::python::args("encoding"), "Sets the encoding of the current buffer.  Use the BUFFERENCODING constants")
		.def("setEncoding", &NotepadPlusWrapper::setBufferEncoding, boost::python::args("encoding", "bufferID"), "Sets the encoding of the given bufferID.  Use the BUFFERENCODING constants to specify the encoding")
		.def("getFormatType", &NotepadPlusWrapper::getFormatType, "Gets the format type (i.e. Windows, Unix or Mac) of the current buffer.  Pass a buffer ID to get the format type of a specific buffer.")
		.def("getFormatType", &NotepadPlusWrapper::getBufferFormatType, boost::python::args("bufferID"), "Gets the format type (i.e. Windows, Unix or Mac) of the given bufferID")
		.def("setFormatType", &NotepadPlusWrapper::setFormatType, boost::python::args("formatType"), "Sets the format type (i.e. Windows, Unix or Mac) of the current buffer - use the FORMATTYPE enum.")
		.def("setFormatType", &NotepadPlusWrapper::setBufferFormatType, boost::python::args("formatType", "bufferID"), "Sets the format type (i.e. Windows, Unix or Mac) of the given buffer - use the FORMATTYPE enum.")
		.def("callback", &NotepadPlusWrapper::addCallback, boost::python::args("callable", "listOfNotifications"), "Registers a callback function for a notification. Arguments are (function, [list of NOTIFICATION IDs])")
		.def("activateFile", &NotepadPlusWrapper::activateFileString, boost::python::args("filename"), "Activates the document with the given filename")
		.def("close", &NotepadPlusWrapper::closeDocument, "Closes the currently active document")
		.def("closeAll", &NotepadPlusWrapper::closeAllDocuments, "Closes all open documents")
		.def("closeAllButCurrent", &NotepadPlusWrapper::closeAllButCurrentDocument, "Closes all but the currently active document")
		.def("reloadCurrentDocument", &NotepadPlusWrapper::reloadCurrentDocument, "Reloads the current document")
		.def("getCurrentFilename", &NotepadPlusWrapper::getCurrentFilename, "Gets the filename of the active document")
		.def("getBufferFilename", &NotepadPlusWrapper::getBufferFilename, boost::python::args("bufferID"), "Gets the filename of the given buffer ID")
		.def("activateBufferID", &NotepadPlusWrapper::activateBufferID, boost::python::args("bufferID"), "Activates the given bufferID")
		.def("messageBox", &NotepadPlusWrapper::messageBox, "Displays a message box. messageBox(message[, title[, flags]]).\nFlags can be 0 for a standard 'OK' message box, or a combination of MessageBoxFlags")
		.def("messageBox", &NotepadPlusWrapper::messageBoxNoFlags, "Displays a message box. messageBox(message[, title[, flags]]).\nFlags can be 0 for a standard 'OK' message box, or a combination of MessageBoxFlags")
		.def("messageBox", &NotepadPlusWrapper::messageBoxNoTitle, "Displays a message box. messageBox(message[, title[, flags]]).\nFlags can be 0 for a standard 'OK' message box, or a combination of MessageBoxFlags")
		.def("prompt", &NotepadPlusWrapper::promptDefault, boost::python::args("prompt", "title"), "Prompts the user for some text. enteredText = prompt(prompt, title). Returns None if cancelled")
		.def("prompt", &NotepadPlusWrapper::prompt, boost::python::args("prompt", "title", "defaultText"), "Prompts the user for some text. enteredText = prompt(prompt, title, defaultText). Returns None if cancelled")
		.def("runPluginCommand", &NotepadPlusWrapper::runPluginCommand, boost::python::args("pluginName", "optionName", "refreshMenuItemCache"), "Runs a command from the plugin menu.\nUse to run direct commands from the Plugins menu.\nTo call TextFX or other menu functions, either use notepad.menuCommand() (for Notepad++ menu commands), or notepad.runMenuCommand(menuName, menuOption) for TextFX or non built-in menus.")
		.def("runPluginCommand", &NotepadPlusWrapper::runPluginCommandNoRefresh, boost::python::args("pluginName", "optionName"), "Runs a command from the plugin menu.\nUse to run direct commands from the Plugins menu.\nTo call TextFX or other menu functions, either use notepad.menuCommand() (for Notepad++ menu commands), or notepad.runMenuCommand(menuName, menuOption) for TextFX or non built-in menus.\nrunPluginCommand(pluginName, menuOptionTitle)")
		.def("runMenuCommand", &NotepadPlusWrapper::runMenuCommand, boost::python::args("menuName", "optionName", "refreshMenuItemCache"), "Runs a command from the menus. For built-in menus use notepad.menuCommand(), for non built-in menus (e.g. TextFX), use notepad.runMenuCommand(menuName, menuOption[, refreshCache]).\n runMenuCommand('TextFX Edit', 'Delete Blank Lines')\n If refreshCache is true, then the menus will be searched again.")
		.def("runMenuCommand", &NotepadPlusWrapper::runMenuCommandNoRefresh, boost::python::args("menuName", "optionName"), "Runs a command from the menus. For built-in menus use notepad.menuCommand(), for non built-in menus (e.g. TextFX), use notepad.runMenuCommand(menuName, menuOption[, refreshCache]).\n runMenuCommand('TextFX Edit', 'Delete Blank Lines')\n If refreshCache is true, then the menus will be searched again.")
		.def("clearCallbacks", &NotepadPlusWrapper::clearAllCallbacks, "Clears all callbacks")
		.def("clearCallbacks", &NotepadPlusWrapper::clearCallbackFunction, boost::python::args("callable"), "Clears all callbacks for the given function")
		.def("clearCallbacks", &NotepadPlusWrapper::clearCallbackEvents, boost::python::args("notificationList"), "Clears all callbacks for the given list of events - list of NOTIFICATION constants")
		.def("clearCallbacks", &NotepadPlusWrapper::clearCallback, boost::python::args("callable", "notificationList"), "Clears the callback for the given callback function for the list of events (NOTIFICATION constants)")
		.def("getNppDir", &NotepadPlusWrapper::getNppDir, "Gets the Notepad++.exe directory")
		.def("getCommandLine", &NotepadPlusWrapper::getCommandLine, "Gets the command line used to start Notepad++")
		.def("allocateSupported", &NotepadPlusWrapper::allocateSupported, "Returns True if the Command ID allocation API is supported in this version of Notepad++")
		.def("allocateCmdID", &NotepadPlusWrapper::allocateCmdID, "allocateCmdID(numberRequested) -> int\nAllocates a Command ID for use in WM_COMMAND. Mainly used internally by plugins.")
		.def("allocateMarker", &NotepadPlusWrapper::allocateMarker, "allocateMarker(numberRequested) -> int\nAllocates a range of marker numbers for Scintilla. Use this to stop marker number collisions with other plugins / scripts.")
		.def("allocateIndicator", &NotepadPlusWrapper::allocateIndicator, "allocateIndicator(numberRequested) -> int\nAllocates a range of indicator numbers for Scintilla. Use this to stop indicator number collisions with other plugins / scripts.")
		.def("getPluginVersion", &NotepadPlusWrapper::getPluginVersion, "getPluginVersion() -> str\nGets the version number of the PythonScript plugin, in the format '0.9.0.1'")
		.def("outputDebugString", &NotepadPlusWrapper::outputDebugString, "Outputs a debug string using the Windows OutputDebugString API call - used primarily for debugging PythonScript itself")
		.def("getMenuHandle", &NotepadPlusWrapper::getMenuHandle, boost::python::args("menu"), "Gets the handle for the main or plugins menu.")
		.def("isTabBarHidden", &NotepadPlusWrapper::isTabBarHidden, "Returns True if tabbar is hidden else False")
		.def("hideToolBar", &NotepadPlusWrapper::hideToolBar, boost::python::args("boolean"), "True if it should be hidden, False if it should be shown")
		.def("isToolBarHidden", &NotepadPlusWrapper::isToolBarHidden, "Returns True if toolbar is hidden else False")
		.def("hideMenu", &NotepadPlusWrapper::hideMenu, boost::python::args("boolean"), "True if it should be hidden, False if it should be shown")
		.def("isMenuHidden", &NotepadPlusWrapper::isMenuHidden, "Returns True if menu is hidden else False")
		.def("hideStatusBar", &NotepadPlusWrapper::hideStatusBar, boost::python::args("boolean"), "True if it should be hidden, False if it should be shown")
		.def("isStatusBarHidden", &NotepadPlusWrapper::isStatusBarHidden, "Returns True if statusbar is hidden else False")
		.def("saveFile", &NotepadPlusWrapper::saveFile, boost::python::args("filename"), "Saves the provided file - must not be the active one")
		.def("showDocSwitcher", &NotepadPlusWrapper::showDocSwitcher, boost::python::args("boolean"), "True if it should be hidden, False if it should be shown")
		.def("isDocSwitcherShown", &NotepadPlusWrapper::isDocSwitcherShown, "Returns True if document switcher is shown else False")
		.def("docSwitcherDisableExtColumn", &NotepadPlusWrapper::docSwitcherDisableExtColumn, boost::python::args("boolean"), "True if it should be hidden, False if it should be shown")
		.def("docSwitcherDisablePathColumn", &NotepadPlusWrapper::docSwitcherDisablePathColumn, boost::python::args("boolean"), "True if it should be hidden, False if it should be shown")
		.def("isDarkModeEnabled", &NotepadPlusWrapper::isDarkModeEnabled, "Returns True if Dark Mode is enabled else False")
		.def("getCurrentNativeLangEncoding", &NotepadPlusWrapper::getCurrentNativeLangEncoding, "Returns the current native language encoding")
		.def("getLanguageName", &NotepadPlusWrapper::getLanguageName, boost::python::args("langType"), "Get programming language name from the given language type")
		.def("getLanguageDesc", &NotepadPlusWrapper::getLanguageDesc, boost::python::args("langType"), "Get programming language short description from the given language type")
		.def("getAppdataPluginsAllowed", &NotepadPlusWrapper::getAppdataPluginsAllowed, "Returns True if loading plugins from %APPDATA%\\Notepad++\\plugins is allowed, False otherwise")
		.def("getEditorDefaultForegroundColor", &NotepadPlusWrapper::getEditorDefaultForegroundColor, "Returns the default foreground color as tuple")
		.def("getEditorDefaultBackgroundColor", &NotepadPlusWrapper::getEditorDefaultBackgroundColor, "Returns the default background color as tuple")
		.def("setSmoothFont", &NotepadPlusWrapper::setSmoothFont, boost::python::args("boolean"), "True if smooth font should be set, False otherwise")
		.def("setEditorBorderEdge", &NotepadPlusWrapper::setEditorBorderEdge, boost::python::args("boolean"), "True if editor should use border edge, False otherwise")
		.def("getNbUserLang", &NotepadPlusWrapper::getNbUserLang, "Returns the number of user defined languages")
		.def("encodeSci", &NotepadPlusWrapper::encodeSci, boost::python::args("view"), "Returns the new unicodeMode")
		.def("decodeSci", &NotepadPlusWrapper::decodeSci, boost::python::args("view"), "Returns the old unicodeMode")
		.def("launchFindInFilesDlg", &NotepadPlusWrapper::launchFindInFilesDlg, boost::python::args("dir2Search, filter"), "Launches the find in files dialog for given directory and filter arguments")
		.def("getWindowsVersion", &NotepadPlusWrapper::getWindowsVersion, "Returns current windows version")
		.def("makeCurrentBufferDirty", &NotepadPlusWrapper::makeCurrentBufferDirty, "Makes current document dirty")
		.def("getEnableThemeTextureFunc", &NotepadPlusWrapper::getEnableThemeTextureFunc, "TODO")
		.def("triggerTabbarContextMenu", &NotepadPlusWrapper::triggerTabbarContextMenu, boost::python::args("view, index2Activate"), "Activates the context menu for provided view and tab index")
		.def("disableAutoUpdate", &NotepadPlusWrapper::disableAutoUpdate, "Disables notepad++ auto update functionality")
		.def("setUntitledName", &NotepadPlusWrapper::setUntitledName, (boost::python::arg("newName"), boost::python::arg("bufferID") = 0), "Sets a new name for an unnamed tab. If no bufferID is specified, the current tab is assumed")
		.def("getTabColorID", &NotepadPlusWrapper::getTabColorID, (boost::python::arg("view") = -1, boost::python::arg("tabIndex ") = -1), "Gets the tab color id for the given view and tab index")
		.def("getNativeLangFileName", &NotepadPlusWrapper::getNativeLangFileName, "Get the Current native language file name string")
		.def("getLineNumberWidthMode", &NotepadPlusWrapper::getLineNumberWidthMode, "Get line number margin width mode")
		.def("setLineNumberWidthMode", &NotepadPlusWrapper::setLineNumberWidthMode, boost::python::args("widthMode"), "Set line number margin width mode")
		.def("getExternalLexerAutoIndentMode", &NotepadPlusWrapper::getExternalLexerAutoIndentMode, boost::python::args("externalLexerName"), "Get ExternalLexerAutoIndentMode for an installed external programming language.")
		.def("setExternalLexerAutoIndentMode", &NotepadPlusWrapper::setExternalLexerAutoIndentMode, boost::python::args("externalLexerName", "indentMode"), "Set ExternalLexerAutoIndentMode for an installed external programming language.")
		.def("isAutoIndention", &NotepadPlusWrapper::isAutoIndention, "Returns True if autoindention is enabled else False")

		.def("isSingleView", &NotepadPlusWrapper::isSingleView, "True if only one view is used, False otherwise")
		.def("flashWindow", &NotepadPlusWrapper::flashWindow, boost::python::args("count", "milliseconds"), "Flashes notepad++ for the given count and timeout");

	boost::python::enum_<LangType>("LANGTYPE")
		.value("TXT", L_TEXT)
		.value("PHP", L_PHP)
		.value("C", L_C)
		.value("CPP", L_CPP)
		.value("CS", L_CS)
		.value("OBJC", L_OBJC)
		.value("JAVA", L_JAVA)
		.value("RC", L_RC)
		.value("HTML", L_HTML)
		.value("XML", L_XML)
		.value("MAKEFILE", L_MAKEFILE)
		.value("PASCAL", L_PASCAL)
		.value("BATCH", L_BATCH)
		.value("INI", L_INI)
		.value("USER", L_USER)
		.value("ASP", L_ASP)
		.value("SQL", L_SQL)
		.value("VB", L_VB)
		.value("JS", L_JS)
		.value("CSS", L_CSS)
		.value("PERL", L_PERL)
		.value("PYTHON", L_PYTHON)
		.value("LUA", L_LUA)
		.value("TEX", L_TEX)
		.value("FORTRAN", L_FORTRAN)
		.value("BASH", L_BASH)
		.value("FLASH", L_FLASH)
		.value("NSIS", L_NSIS)
		.value("TCL", L_TCL)
		.value("LISP", L_LISP)
		.value("SCHEME", L_SCHEME)
		.value("ASM", L_ASM)
		.value("DIFF", L_DIFF)
		.value("PROPS", L_PROPS)
		.value("PS", L_PS)
		.value("RUBY", L_RUBY)
		.value("SMALLTALK", L_SMALLTALK)
		.value("VHDL", L_VHDL)
		.value("KIX", L_KIX)
		.value("AU3", L_AU3)
		.value("CAML", L_CAML)
		.value("ADA", L_ADA)
		.value("VERILOG", L_VERILOG)
		.value("MATLAB", L_MATLAB)
		.value("HASKELL", L_HASKELL)
		.value("INNO", L_INNO)
		.value("SEARCHRESULT", L_SEARCHRESULT)
		.value("CMAKE", L_CMAKE)
		.value("YAML", L_YAML)
		.value("COBOL", L_COBOL)
		.value("GUI4CLI", L_GUI4CLI)
		.value("D", L_D)
		.value("POWERSHELL", L_POWERSHELL)
		.value("R", L_R)
		.value("JSP", L_JSP)
		.value("COFFEESCRIPT", L_COFFEESCRIPT)
		.value("JSON", L_JSON)
		.value("JAVASCRIPT", L_JAVASCRIPT)
		.value("FORTRAN_77", L_FORTRAN_77)
		.value("BAANC", L_BAANC)
		.value("SREC", L_SREC)
		.value("IHEX", L_IHEX)
		.value("TEHEX", L_TEHEX)
		.value("SWIFT", L_SWIFT)
		.value("ASN1", L_ASN1)
		.value("AVS", L_AVS)
		.value("BLITZBASIC", L_BLITZBASIC)
		.value("PUREBASIC", L_PUREBASIC)
		.value("FREEBASIC", L_FREEBASIC)
		.value("CSOUND", L_CSOUND)
		.value("ERLANG", L_ERLANG)
		.value("ESCRIPT", L_ESCRIPT)
		.value("FORTH", L_FORTH)
		.value("LATEX", L_LATEX)
		.value("MMIXAL", L_MMIXAL)
		.value("NIM", L_NIM)
		.value("NNCRONTAB", L_NNCRONTAB)
		.value("OSCRIPT", L_OSCRIPT)
		.value("REBOL", L_REBOL)
		.value("REGISTRY", L_REGISTRY)
		.value("RUST", L_RUST)
		.value("SPICE", L_SPICE)
		.value("TXT2TAGS", L_TXT2TAGS)
		.value("VISUALPROLOG", L_VISUALPROLOG)
		.value("TYPESCRIPT", L_TYPESCRIPT)
		.value("JSON5", L_JSON5)
		.value("MSSQL", L_MSSQL)
		.value("GDSCRIPT", L_GDSCRIPT)
		.value("HOLLYWOOD", L_HOLLYWOOD)
		.value("GOLANG", L_GOLANG)
		.value("RAKU", L_RAKU)
		.value("TOML", L_TOML);

	boost::python::enum_<winVer>("WINVER")
		.value("UNKNOWN", WV_UNKNOWN)
		.value("WIN32S", WV_WIN32S)
		.value("WIN95", WV_95)
		.value("WIN98", WV_98)
		.value("ME", WV_ME)
		.value("NT", WV_NT)
		.value("W2K", WV_W2K)
		.value("XP", WV_XP)
		.value("S2003", WV_S2003)
		.value("XPX64", WV_XPX64)
		.value("VISTA", WV_VISTA)
		.value("WIN7", WV_WIN7)
		.value("WIN8", WV_WIN8)
		.value("WIN81", WV_WIN81)
		.value("WIN10", WV_WIN10)
		.value("WIN11", WV_WIN11);

	boost::python::enum_<Platform>("PLATFORM")
		.value("UNKNOWN", PF_UNKNOWN)
		.value("X86", PF_X86)
		.value("X64", PF_X64)
		.value("IA64", PF_IA64);

	boost::python::enum_<FormatType>("FORMATTYPE")
		.value("WIN", WIN_FORMAT)
		.value("MAC", MAC_FORMAT)
		.value("UNIX", UNIX_FORMAT);

	boost::python::enum_<BufferEncoding>("BUFFERENCODING")
		.value("ENC8BIT", uni8Bit)
		.value("UTF8", uniUTF8)
		.value("UCS2BE", uni16BE)
		.value("UCS2LE", uni16LE)
		.value("COOKIE", uniCookie)
		.value("ANSI", uni7Bit)
		.value("UCS2BE_NOBOM", uni16BE_NoBOM)
		.value("UCS2LE_NOBOM", uni16LE_NoBOM);

	boost::python::enum_<StatusBarSection>("STATUSBARSECTION")
		.value("DOCTYPE", STATUSBARSECTION_DOCTYPE)
		.value("DOCSIZE", STATUSBARSECTION_DOCSIZE)
		.value("CURPOS", STATUSBARSECTION_CURPOS)
		.value("EOFFORMAT", STATUSBARSECTION_EOFFORMAT)
		.value("UNICODETYPE", STATUSBARSECTION_UNICODETYPE)
		.value("TYPINGMODE", STATUSBARSECTION_TYPINGMODE);

	boost::python::enum_<Notification>("NOTIFICATION")
		.value("READY", NPPNOTIF_READY)
		.value("TBMODIFICATION", NPPNOTIF_TBMODIFICATION)
		.value("FILEBEFORECLOSE", NPPNOTIF_FILEBEFORECLOSE)
		.value("FILEOPENED", NPPNOTIF_FILEOPENED)
		.value("FILECLOSED", NPPNOTIF_FILECLOSED)
		.value("FILEBEFOREOPEN", NPPNOTIF_FILEBEFOREOPEN)
		.value("FILEBEFORESAVE", NPPNOTIF_FILEBEFORESAVE)
		.value("FILESAVED", NPPNOTIF_FILESAVED)
		.value("SHUTDOWN", NPPNOTIF_SHUTDOWN)
		.value("BUFFERACTIVATED", NPPNOTIF_BUFFERACTIVATED)
		.value("LANGCHANGED", NPPNOTIF_LANGCHANGED)
		.value("WORDSTYLESUPDATED", NPPNOTIF_WORDSTYLESUPDATED)
		.value("SHORTCUTREMAPPED", NPPNOTIF_SHORTCUTREMAPPED)
		.value("FILEBEFORELOAD", NPPNOTIF_FILEBEFORELOAD)
		.value("FILELOADFAILED", NPPNOTIF_FILELOADFAILED)
		.value("READONLYCHANGED", NPPNOTIF_READONLYCHANGED)
		.value("DOCORDERCHANGED", NPPNOTIF_DOCORDERCHANGED)
		.value("SNAPSHOTDIRTYFILELOADED", NPPNOTIF_SNAPSHOTDIRTYFILELOADED)
		.value("BEFORESHUTDOWN", NPPNOTIF_BEFORESHUTDOWN)
		.value("CANCELSHUTDOWN", NPPNOTIF_CANCELSHUTDOWN)
		.value("FILEBEFORERENAME", NPPNOTIF_FILEBEFORERENAME)
		.value("FILERENAMECANCEL", NPPNOTIF_FILERENAMECANCEL)
		.value("FILERENAMED", NPPNOTIF_FILERENAMED)
		.value("FILEBEFOREDELETE", NPPNOTIF_FILEBEFOREDELETE)
		.value("FILEDELETEFAILED", NPPNOTIF_FILEDELETEFAILED)
		.value("FILEDELETED", NPPNOTIF_FILEDELETED)
		.value("DARKMODECHANGED", NPPNOTIF_DARKMODECHANGED)
		.value("CMDLINEPLUGINMSG", NPPNOTIF_CMDLINEPLUGINMSG)
		.value("EXTERNALLEXERBUFFER", NPPNOTIF_EXTERNALLEXERBUFFER)
		.value("GLOBALMODIFIED", NPPNOTIF_GLOBALMODIFIED)
		.value("NATIVELANGCHANGED", NPPNOTIF_NATIVELANGCHANGED);

	boost::python::enum_<MessageBoxFlags>("MESSAGEBOXFLAGS")
		.value("OK", NPPMB_OK)
		.value("OKCANCEL", NPPMB_OKCANCEL)
		.value("ABORTRETRYIGNORE", NPPMB_ABORTRETRYIGNORE)
		.value("YESNOCANCEL", NPPMB_YESNOCANCEL)
		.value("YESNO", NPPMB_YESNO)
		.value("RETRYCANCEL", NPPMB_RETRYCANCEL)
		.value("CANCELTRYCONTINUE", NPPMB_CANCELTRYCONTINUE)
		.value("ICONHAND", NPPMB_ICONHAND)
		.value("ICONQUESTION", NPPMB_ICONQUESTION)
		.value("ICONEXCLAMATION", NPPMB_ICONEXCLAMATION)
		.value("ICONASTERISK", NPPMB_ICONASTERISK)
		.value("ICONWARNING", NPPMB_ICONWARNING)
		.value("ICONERROR", NPPMB_ICONERROR)
		.value("ICONINFORMATION", NPPMB_ICONINFORMATION)
		.value("ICONSTOP", NPPMB_ICONSTOP)
		.value("DEFBUTTON1", NPPMB_DEFBUTTON1)
		.value("DEFBUTTON2", NPPMB_DEFBUTTON2)
		.value("DEFBUTTON3", NPPMB_DEFBUTTON3)
		.value("DEFBUTTON4", NPPMB_DEFBUTTON4)
		.value("RESULTCONTINUE", NPPMB_RESULTCONTINUE)
		.value("RESULTABORT", NPPMB_RESULTABORT)
		.value("RESULTCANCEL", NPPMB_RESULTCANCEL)
		.value("RESULTIGNORE", NPPMB_RESULTIGNORE)
		.value("RESULTNO", NPPMB_RESULTNO)
		.value("RESULTOK", NPPMB_RESULTOK)
		.value("RESULTRETRY", NPPMB_RESULTRETRY)
		.value("RESULTTRYAGAIN", NPPMB_RESULTTRYAGAIN)
		.value("RESULTYES", NPPMB_RESULTYES);


	boost::python::enum_<MenuCommands>("MENUCOMMAND")
		.value("FILE_NEW", NPPIDM_FILE_NEW)
		.value("FILE_OPEN", NPPIDM_FILE_OPEN)
		.value("FILE_CLOSE", NPPIDM_FILE_CLOSE)
		.value("FILE_CLOSEALL", NPPIDM_FILE_CLOSEALL)
		.value("FILE_CLOSEALL_BUT_CURRENT", NPPIDM_FILE_CLOSEALL_BUT_CURRENT)
		.value("FILE_SAVE", NPPIDM_FILE_SAVE)
		.value("FILE_SAVEALL", NPPIDM_FILE_SAVEALL)
		.value("FILE_SAVEAS", NPPIDM_FILE_SAVEAS)
		.value("FILE_CLOSEALL_TOLEFT", NPPIDM_FILE_CLOSEALL_TOLEFT)
		.value("FILE_PRINT", NPPIDM_FILE_PRINT)
		.value("FILE_PRINTNOW", NPPIDM_FILE_PRINTNOW)
		.value("FILE_EXIT", NPPIDM_FILE_EXIT)
		.value("FILE_LOADSESSION", NPPIDM_FILE_LOADSESSION)
		.value("FILE_SAVESESSION", NPPIDM_FILE_SAVESESSION)
		.value("FILE_RELOAD", NPPIDM_FILE_RELOAD)
		.value("FILE_SAVECOPYAS", NPPIDM_FILE_SAVECOPYAS)
		.value("FILE_DELETE", NPPIDM_FILE_DELETE)
		.value("FILE_RENAME", NPPIDM_FILE_RENAME)
		.value("FILE_CLOSEALL_TORIGHT", NPPIDM_FILE_CLOSEALL_TORIGHT)
		.value("FILE_OPEN_FOLDER", NPPIDM_FILE_OPEN_FOLDER)
		.value("FILE_OPEN_CMD", NPPIDM_FILE_OPEN_CMD)
		.value("FILE_RESTORELASTCLOSEDFILE", NPPIDM_FILE_RESTORELASTCLOSEDFILE)
		.value("FILE_OPENFOLDERASWORSPACE", NPPIDM_FILE_OPENFOLDERASWORSPACE)
		.value("FILE_OPEN_DEFAULT_VIEWER", NPPIDM_FILE_OPEN_DEFAULT_VIEWER)
		.value("FILE_CLOSEALL_UNCHANGED", NPPIDM_FILE_CLOSEALL_UNCHANGED)
		.value("FILE_CONTAININGFOLDERASWORKSPACE", NPPIDM_FILE_CONTAININGFOLDERASWORKSPACE)
		.value("FILE_CLOSEALL_BUT_PINNED", NPPIDM_FILE_CLOSEALL_BUT_PINNED)
		.value("FILEMENU_EXISTCMDPOSITION", NPPIDM_FILEMENU_EXISTCMDPOSITION)

		.value("EDIT_CUT", NPPIDM_EDIT_CUT)
		.value("EDIT_COPY", NPPIDM_EDIT_COPY)
		.value("EDIT_UNDO", NPPIDM_EDIT_UNDO)
		.value("EDIT_REDO", NPPIDM_EDIT_REDO)
		.value("EDIT_PASTE", NPPIDM_EDIT_PASTE)
		.value("EDIT_DELETE", NPPIDM_EDIT_DELETE)
		.value("EDIT_SELECTALL", NPPIDM_EDIT_SELECTALL)
		.value("EDIT_INS_TAB", NPPIDM_EDIT_INS_TAB)
		.value("EDIT_RMV_TAB", NPPIDM_EDIT_RMV_TAB)
		.value("EDIT_DUP_LINE", NPPIDM_EDIT_DUP_LINE)
		.value("EDIT_TRANSPOSE_LINE", NPPIDM_EDIT_TRANSPOSE_LINE)
		.value("EDIT_SPLIT_LINES", NPPIDM_EDIT_SPLIT_LINES)
		.value("EDIT_JOIN_LINES", NPPIDM_EDIT_JOIN_LINES)
		.value("EDIT_LINE_UP", NPPIDM_EDIT_LINE_UP)
		.value("EDIT_LINE_DOWN", NPPIDM_EDIT_LINE_DOWN)
		.value("EDIT_UPPERCASE", NPPIDM_EDIT_UPPERCASE)
		.value("EDIT_LOWERCASE", NPPIDM_EDIT_LOWERCASE)
		.value("MACRO_STARTRECORDINGMACRO", NPPIDM_MACRO_STARTRECORDINGMACRO)
		.value("MACRO_STOPRECORDINGMACRO", NPPIDM_MACRO_STOPRECORDINGMACRO)
		.value("EDIT_BEGINENDSELECT", NPPIDM_EDIT_BEGINENDSELECT)
		.value("MACRO_PLAYBACKRECORDEDMACRO", NPPIDM_MACRO_PLAYBACKRECORDEDMACRO)
		.value("EDIT_BLOCK_COMMENT", NPPIDM_EDIT_BLOCK_COMMENT)
		.value("EDIT_STREAM_COMMENT", NPPIDM_EDIT_STREAM_COMMENT)
		.value("EDIT_TRIMTRAILING", NPPIDM_EDIT_TRIMTRAILING)
		.value("MACRO_SAVECURRENTMACRO", NPPIDM_MACRO_SAVECURRENTMACRO)
		.value("EDIT_RTL", NPPIDM_EDIT_RTL)
		.value("EDIT_LTR", NPPIDM_EDIT_LTR)
		.value("EDIT_SETREADONLY", NPPIDM_EDIT_SETREADONLY)
		.value("EDIT_FULLPATHTOCLIP", NPPIDM_EDIT_FULLPATHTOCLIP)
		.value("EDIT_FILENAMETOCLIP", NPPIDM_EDIT_FILENAMETOCLIP)
		.value("EDIT_CURRENTDIRTOCLIP", NPPIDM_EDIT_CURRENTDIRTOCLIP)
		.value("MACRO_RUNMULTIMACRODLG", NPPIDM_MACRO_RUNMULTIMACRODLG)
		.value("EDIT_CLEARREADONLY", NPPIDM_EDIT_CLEARREADONLY)
		.value("EDIT_COLUMNMODE", NPPIDM_EDIT_COLUMNMODE)
		.value("EDIT_BLOCK_COMMENT_SET", NPPIDM_EDIT_BLOCK_COMMENT_SET)
		.value("EDIT_BLOCK_UNCOMMENT", NPPIDM_EDIT_BLOCK_UNCOMMENT)
		.value("EDIT_COLUMNMODETIP", NPPIDM_EDIT_COLUMNMODETIP)
		.value("EDIT_PASTE_AS_HTML", NPPIDM_EDIT_PASTE_AS_HTML)
		.value("EDIT_PASTE_AS_RTF", NPPIDM_EDIT_PASTE_AS_RTF)
		.value("OPEN_ALL_RECENT_FILE", NPPIDM_OPEN_ALL_RECENT_FILE)
		.value("CLEAN_RECENT_FILE_LIST", NPPIDM_CLEAN_RECENT_FILE_LIST)
		.value("EDIT_TRIMLINEHEAD", NPPIDM_EDIT_TRIMLINEHEAD)
		.value("EDIT_TRIM_BOTH", NPPIDM_EDIT_TRIM_BOTH)
		.value("EDIT_EOL2WS", NPPIDM_EDIT_EOL2WS)
		.value("EDIT_TRIMALL", NPPIDM_EDIT_TRIMALL)
		.value("EDIT_TAB2SW", NPPIDM_EDIT_TAB2SW)
		.value("EDIT_STREAM_UNCOMMENT", NPPIDM_EDIT_STREAM_UNCOMMENT)
		.value("EDIT_COPY_BINARY", NPPIDM_EDIT_COPY_BINARY)
		.value("EDIT_CUT_BINARY", NPPIDM_EDIT_CUT_BINARY)
		.value("EDIT_PASTE_BINARY", NPPIDM_EDIT_PASTE_BINARY)
		.value("EDIT_CHAR_PANEL", NPPIDM_EDIT_CHAR_PANEL)
		.value("EDIT_CLIPBOARDHISTORY_PANEL", NPPIDM_EDIT_CLIPBOARDHISTORY_PANEL)
		.value("EDIT_SW2TAB_LEADING", NPPIDM_EDIT_SW2TAB_LEADING)
		.value("EDIT_SW2TAB_ALL", NPPIDM_EDIT_SW2TAB_ALL)
		.value("EDIT_REMOVEEMPTYLINES", NPPIDM_EDIT_REMOVEEMPTYLINES)
		.value("EDIT_REMOVEEMPTYLINESWITHBLANK", NPPIDM_EDIT_REMOVEEMPTYLINESWITHBLANK)
		.value("EDIT_BLANKLINEABOVECURRENT", NPPIDM_EDIT_BLANKLINEABOVECURRENT)
		.value("EDIT_BLANKLINEBELOWCURRENT", NPPIDM_EDIT_BLANKLINEBELOWCURRENT)
		.value("EDIT_SORTLINES_LEXICOGRAPHIC_ASCENDING", NPPIDM_EDIT_SORTLINES_LEXICOGRAPHIC_ASCENDING)
		.value("EDIT_SORTLINES_LEXICOGRAPHIC_DESCENDING", NPPIDM_EDIT_SORTLINES_LEXICOGRAPHIC_DESCENDING)
		.value("EDIT_SORTLINES_INTEGER_ASCENDING", NPPIDM_EDIT_SORTLINES_INTEGER_ASCENDING)
		.value("EDIT_SORTLINES_INTEGER_DESCENDING", NPPIDM_EDIT_SORTLINES_INTEGER_DESCENDING)
		.value("EDIT_SORTLINES_DECIMALCOMMA_ASCENDING", NPPIDM_EDIT_SORTLINES_DECIMALCOMMA_ASCENDING)
		.value("EDIT_SORTLINES_DECIMALCOMMA_DESCENDING", NPPIDM_EDIT_SORTLINES_DECIMALCOMMA_DESCENDING)
		.value("EDIT_SORTLINES_DECIMALDOT_ASCENDING", NPPIDM_EDIT_SORTLINES_DECIMALDOT_ASCENDING)
		.value("EDIT_SORTLINES_DECIMALDOT_DESCENDING", NPPIDM_EDIT_SORTLINES_DECIMALDOT_DESCENDING)
		.value("EDIT_PROPERCASE_FORCE", NPPIDM_EDIT_PROPERCASE_FORCE)
		.value("EDIT_PROPERCASE_BLEND", NPPIDM_EDIT_PROPERCASE_BLEND)
		.value("EDIT_SENTENCECASE_FORCE", NPPIDM_EDIT_SENTENCECASE_FORCE)
		.value("EDIT_SENTENCECASE_BLEND", NPPIDM_EDIT_SENTENCECASE_BLEND)
		.value("EDIT_INVERTCASE", NPPIDM_EDIT_INVERTCASE)
		.value("EDIT_RANDOMCASE", NPPIDM_EDIT_RANDOMCASE)
		.value("EDIT_OPENASFILE", NPPIDM_EDIT_OPENASFILE)
		.value("EDIT_OPENINFOLDER", NPPIDM_EDIT_OPENINFOLDER)
		.value("EDIT_SEARCHONINTERNET", NPPIDM_EDIT_SEARCHONINTERNET)
		.value("EDIT_CHANGESEARCHENGINE", NPPIDM_EDIT_CHANGESEARCHENGINE)
		.value("EDIT_REMOVE_CONSECUTIVE_DUP_LINES", NPPIDM_EDIT_REMOVE_CONSECUTIVE_DUP_LINES)
		.value("EDIT_SORTLINES_RANDOMLY", NPPIDM_EDIT_SORTLINES_RANDOMLY)
		.value("EDIT_REMOVE_ANY_DUP_LINES", NPPIDM_EDIT_REMOVE_ANY_DUP_LINES)
		.value("EDIT_SORTLINES_LEXICO_CASE_INSENS_ASCENDING", NPPIDM_EDIT_SORTLINES_LEXICO_CASE_INSENS_ASCENDING)
		.value("EDIT_SORTLINES_LEXICO_CASE_INSENS_DESCENDING", NPPIDM_EDIT_SORTLINES_LEXICO_CASE_INSENS_DESCENDING)
		.value("EDIT_COPY_LINK", NPPIDM_EDIT_COPY_LINK)
		.value("EDIT_SORTLINES_REVERSE_ORDER", NPPIDM_EDIT_SORTLINES_REVERSE_ORDER)
		.value("EDIT_INSERT_DATETIME_SHORT", NPPIDM_EDIT_INSERT_DATETIME_SHORT)
		.value("EDIT_INSERT_DATETIME_LONG", NPPIDM_EDIT_INSERT_DATETIME_LONG)
		.value("EDIT_INSERT_DATETIME_CUSTOMIZED", NPPIDM_EDIT_INSERT_DATETIME_CUSTOMIZED)
		.value("EDIT_COPY_ALL_NAMES", NPPIDM_EDIT_COPY_ALL_NAMES)
		.value("EDIT_COPY_ALL_PATHS", NPPIDM_EDIT_COPY_ALL_PATHS)
		.value("EDIT_BEGINENDSELECT_COLUMNMODE", NPPIDM_EDIT_BEGINENDSELECT_COLUMNMODE)
		.value("EDIT_MULTISELECTALL", NPPIDM_EDIT_MULTISELECTALL)
		.value("EDIT_MULTISELECTALLMATCHCASE", NPPIDM_EDIT_MULTISELECTALLMATCHCASE)
		.value("EDIT_MULTISELECTALLWHOLEWORD", NPPIDM_EDIT_MULTISELECTALLWHOLEWORD)
		.value("EDIT_MULTISELECTALLMATCHCASEWHOLEWORD", NPPIDM_EDIT_MULTISELECTALLMATCHCASEWHOLEWORD)
		.value("EDIT_MULTISELECTNEXT", NPPIDM_EDIT_MULTISELECTNEXT)
		.value("EDIT_MULTISELECTNEXTMATCHCASE", NPPIDM_EDIT_MULTISELECTNEXTMATCHCASE)
		.value("EDIT_MULTISELECTNEXTWHOLEWORD", NPPIDM_EDIT_MULTISELECTNEXTWHOLEWORD)
		.value("EDIT_MULTISELECTNEXTMATCHCASEWHOLEWORD", NPPIDM_EDIT_MULTISELECTNEXTMATCHCASEWHOLEWORD)
		.value("EDIT_MULTISELECTUNDO", NPPIDM_EDIT_MULTISELECTUNDO)
		.value("EDIT_MULTISELECTSSKIP", NPPIDM_EDIT_MULTISELECTSSKIP)
		.value("EDIT_AUTOCOMPLETE", NPPIDM_EDIT_AUTOCOMPLETE)
		.value("EDIT_AUTOCOMPLETE_CURRENTFILE", NPPIDM_EDIT_AUTOCOMPLETE_CURRENTFILE)
		.value("EDIT_FUNCCALLTIP", NPPIDM_EDIT_FUNCCALLTIP)
		.value("EDIT_AUTOCOMPLETE_PATH", NPPIDM_EDIT_AUTOCOMPLETE_PATH)
		.value("EDIT_FUNCCALLTIP_PREVIOUS", NPPIDM_EDIT_FUNCCALLTIP_PREVIOUS)
		.value("EDIT_FUNCCALLTIP_NEXT", NPPIDM_EDIT_FUNCCALLTIP_NEXT)

		.value("SEARCH_FIND", NPPIDM_SEARCH_FIND)
		.value("SEARCH_FINDNEXT", NPPIDM_SEARCH_FINDNEXT)
		.value("SEARCH_REPLACE", NPPIDM_SEARCH_REPLACE)
		.value("SEARCH_GOTOLINE", NPPIDM_SEARCH_GOTOLINE)
		.value("SEARCH_TOGGLE_BOOKMARK", NPPIDM_SEARCH_TOGGLE_BOOKMARK)
		.value("SEARCH_NEXT_BOOKMARK", NPPIDM_SEARCH_NEXT_BOOKMARK)
		.value("SEARCH_PREV_BOOKMARK", NPPIDM_SEARCH_PREV_BOOKMARK)
		.value("SEARCH_CLEAR_BOOKMARKS", NPPIDM_SEARCH_CLEAR_BOOKMARKS)
		.value("SEARCH_GOTOMATCHINGBRACE", NPPIDM_SEARCH_GOTOMATCHINGBRACE)
		.value("SEARCH_FINDPREV", NPPIDM_SEARCH_FINDPREV)
		.value("SEARCH_FINDINCREMENT", NPPIDM_SEARCH_FINDINCREMENT)
		.value("SEARCH_FINDINFILES", NPPIDM_SEARCH_FINDINFILES)
		.value("SEARCH_VOLATILE_FINDNEXT", NPPIDM_SEARCH_VOLATILE_FINDNEXT)
		.value("SEARCH_VOLATILE_FINDPREV", NPPIDM_SEARCH_VOLATILE_FINDPREV)
		.value("SEARCH_CUTMARKEDLINES", NPPIDM_SEARCH_CUTMARKEDLINES)
		.value("SEARCH_COPYMARKEDLINES", NPPIDM_SEARCH_COPYMARKEDLINES)
		.value("SEARCH_PASTEMARKEDLINES", NPPIDM_SEARCH_PASTEMARKEDLINES)
		.value("SEARCH_DELETEMARKEDLINES", NPPIDM_SEARCH_DELETEMARKEDLINES)
		.value("SEARCH_MARKALLEXT1", NPPIDM_SEARCH_MARKALLEXT1)
		.value("SEARCH_UNMARKALLEXT1", NPPIDM_SEARCH_UNMARKALLEXT1)
		.value("SEARCH_MARKALLEXT2", NPPIDM_SEARCH_MARKALLEXT2)
		.value("SEARCH_UNMARKALLEXT2", NPPIDM_SEARCH_UNMARKALLEXT2)
		.value("SEARCH_MARKALLEXT3", NPPIDM_SEARCH_MARKALLEXT3)
		.value("SEARCH_UNMARKALLEXT3", NPPIDM_SEARCH_UNMARKALLEXT3)
		.value("SEARCH_MARKALLEXT4", NPPIDM_SEARCH_MARKALLEXT4)
		.value("SEARCH_UNMARKALLEXT4", NPPIDM_SEARCH_UNMARKALLEXT4)
		.value("SEARCH_MARKALLEXT5", NPPIDM_SEARCH_MARKALLEXT5)
		.value("SEARCH_UNMARKALLEXT5", NPPIDM_SEARCH_UNMARKALLEXT5)
		.value("SEARCH_CLEARALLMARKS", NPPIDM_SEARCH_CLEARALLMARKS)
		.value("SEARCH_GOPREVMARKER1", NPPIDM_SEARCH_GOPREVMARKER1)
		.value("SEARCH_GOPREVMARKER2", NPPIDM_SEARCH_GOPREVMARKER2)
		.value("SEARCH_GOPREVMARKER3", NPPIDM_SEARCH_GOPREVMARKER3)
		.value("SEARCH_GOPREVMARKER4", NPPIDM_SEARCH_GOPREVMARKER4)
		.value("SEARCH_GOPREVMARKER5", NPPIDM_SEARCH_GOPREVMARKER5)
		.value("SEARCH_GOPREVMARKER_DEF", NPPIDM_SEARCH_GOPREVMARKER_DEF)
		.value("SEARCH_GONEXTMARKER1", NPPIDM_SEARCH_GONEXTMARKER1)
		.value("SEARCH_GONEXTMARKER2", NPPIDM_SEARCH_GONEXTMARKER2)
		.value("SEARCH_GONEXTMARKER3", NPPIDM_SEARCH_GONEXTMARKER3)
		.value("SEARCH_GONEXTMARKER4", NPPIDM_SEARCH_GONEXTMARKER4)
		.value("SEARCH_GONEXTMARKER5", NPPIDM_SEARCH_GONEXTMARKER5)
		.value("SEARCH_GONEXTMARKER_DEF", NPPIDM_SEARCH_GONEXTMARKER_DEF)
		.value("FOCUS_ON_FOUND_RESULTS", NPPIDM_FOCUS_ON_FOUND_RESULTS)
		.value("SEARCH_GOTONEXTFOUND", NPPIDM_SEARCH_GOTONEXTFOUND)
		.value("SEARCH_GOTOPREVFOUND", NPPIDM_SEARCH_GOTOPREVFOUND)
		.value("SEARCH_SETANDFINDNEXT", NPPIDM_SEARCH_SETANDFINDNEXT)
		.value("SEARCH_SETANDFINDPREV", NPPIDM_SEARCH_SETANDFINDPREV)
		.value("SEARCH_INVERSEMARKS", NPPIDM_SEARCH_INVERSEMARKS)
		.value("SEARCH_DELETEUNMARKEDLINES", NPPIDM_SEARCH_DELETEUNMARKEDLINES)
		.value("SEARCH_FINDCHARINRANGE", NPPIDM_SEARCH_FINDCHARINRANGE)
		.value("SEARCH_SELECTMATCHINGBRACES", NPPIDM_SEARCH_SELECTMATCHINGBRACES)
		.value("SEARCH_MARK", NPPIDM_SEARCH_MARK)
		.value("SEARCH_STYLE1TOCLIP", NPPIDM_SEARCH_STYLE1TOCLIP)
		.value("SEARCH_STYLE2TOCLIP", NPPIDM_SEARCH_STYLE2TOCLIP)
		.value("SEARCH_STYLE3TOCLIP", NPPIDM_SEARCH_STYLE3TOCLIP)
		.value("SEARCH_STYLE4TOCLIP", NPPIDM_SEARCH_STYLE4TOCLIP)
		.value("SEARCH_STYLE5TOCLIP", NPPIDM_SEARCH_STYLE5TOCLIP)
		.value("SEARCH_ALLSTYLESTOCLIP", NPPIDM_SEARCH_ALLSTYLESTOCLIP)
		.value("SEARCH_MARKEDTOCLIP", NPPIDM_SEARCH_MARKEDTOCLIP)
		.value("SEARCH_MARKONEEXT1", NPPIDM_SEARCH_MARKONEEXT1)
		.value("SEARCH_MARKONEEXT2", NPPIDM_SEARCH_MARKONEEXT2)
		.value("SEARCH_MARKONEEXT3", NPPIDM_SEARCH_MARKONEEXT3)
		.value("SEARCH_MARKONEEXT4", NPPIDM_SEARCH_MARKONEEXT4)
		.value("SEARCH_MARKONEEXT5", NPPIDM_SEARCH_MARKONEEXT5)
		.value("SEARCH_CHANGED_NEXT", NPPIDM_SEARCH_CHANGED_NEXT)
		.value("SEARCH_CHANGED_PREV", NPPIDM_SEARCH_CHANGED_PREV)
		.value("SEARCH_CLEAR_CHANGE_HISTORY", NPPIDM_SEARCH_CLEAR_CHANGE_HISTORY)

		.value("DOCLIST_FILESCLOSE", NPPIDM_DOCLIST_FILESCLOSE)
		.value("DOCLIST_FILESCLOSEOTHERS", NPPIDM_DOCLIST_FILESCLOSEOTHERS)
		.value("DOCLIST_COPYNAMES", NPPIDM_DOCLIST_COPYNAMES)
		.value("DOCLIST_COPYPATHS", NPPIDM_DOCLIST_COPYPATHS)

		.value("VIEW_POSTIT", NPPIDM_VIEW_POSTIT)
		.value("VIEW_FOLDALL", NPPIDM_VIEW_FOLDALL)
		.value("VIEW_DISTRACTIONFREE", NPPIDM_VIEW_DISTRACTIONFREE)
		.value("VIEW_ALL_CHARACTERS", NPPIDM_VIEW_ALL_CHARACTERS)
		.value("VIEW_INDENT_GUIDE", NPPIDM_VIEW_INDENT_GUIDE)
		.value("VIEW_WRAP", NPPIDM_VIEW_WRAP)
		.value("VIEW_ZOOMIN", NPPIDM_VIEW_ZOOMIN)
		.value("VIEW_ZOOMOUT", NPPIDM_VIEW_ZOOMOUT)
		.value("VIEW_TAB_SPACE", NPPIDM_VIEW_TAB_SPACE)
		.value("VIEW_EOL", NPPIDM_VIEW_EOL)
		.value("VIEW_UNFOLDALL", NPPIDM_VIEW_UNFOLDALL)
		.value("VIEW_FOLD_CURRENT", NPPIDM_VIEW_FOLD_CURRENT)
		.value("VIEW_UNFOLD_CURRENT", NPPIDM_VIEW_UNFOLD_CURRENT)
		.value("VIEW_FULLSCREENTOGGLE", NPPIDM_VIEW_FULLSCREENTOGGLE)
		.value("VIEW_ZOOMRESTORE", NPPIDM_VIEW_ZOOMRESTORE)
		.value("VIEW_ALWAYSONTOP", NPPIDM_VIEW_ALWAYSONTOP)
		.value("VIEW_SYNSCROLLV", NPPIDM_VIEW_SYNSCROLLV)
		.value("VIEW_SYNSCROLLH", NPPIDM_VIEW_SYNSCROLLH)
		.value("VIEW_WRAP_SYMBOL", NPPIDM_VIEW_WRAP_SYMBOL)
		.value("VIEW_HIDELINES", NPPIDM_VIEW_HIDELINES)
		.value("PINTAB", NPPIDM_PINTAB)
		.value("VIEW_SUMMARY", NPPIDM_VIEW_SUMMARY)
		.value("VIEW_FOLD", NPPIDM_VIEW_FOLD)
		.value("VIEW_FOLD_1", NPPIDM_VIEW_FOLD_1)
		.value("VIEW_FOLD_2", NPPIDM_VIEW_FOLD_2)
		.value("VIEW_FOLD_3", NPPIDM_VIEW_FOLD_3)
		.value("VIEW_FOLD_4", NPPIDM_VIEW_FOLD_4)
		.value("VIEW_FOLD_5", NPPIDM_VIEW_FOLD_5)
		.value("VIEW_FOLD_6", NPPIDM_VIEW_FOLD_6)
		.value("VIEW_FOLD_7", NPPIDM_VIEW_FOLD_7)
		.value("VIEW_FOLD_8", NPPIDM_VIEW_FOLD_8)
		.value("VIEW_UNFOLD", NPPIDM_VIEW_UNFOLD)
		.value("VIEW_UNFOLD_1", NPPIDM_VIEW_UNFOLD_1)
		.value("VIEW_UNFOLD_2", NPPIDM_VIEW_UNFOLD_2)
		.value("VIEW_UNFOLD_3", NPPIDM_VIEW_UNFOLD_3)
		.value("VIEW_UNFOLD_4", NPPIDM_VIEW_UNFOLD_4)
		.value("VIEW_UNFOLD_5", NPPIDM_VIEW_UNFOLD_5)
		.value("VIEW_UNFOLD_6", NPPIDM_VIEW_UNFOLD_6)
		.value("VIEW_UNFOLD_7", NPPIDM_VIEW_UNFOLD_7)
		.value("VIEW_UNFOLD_8", NPPIDM_VIEW_UNFOLD_8)
		.value("VIEW_DOCLIST", NPPIDM_VIEW_DOCLIST)
		.value("VIEW_SWITCHTO_OTHER_VIEW", NPPIDM_VIEW_SWITCHTO_OTHER_VIEW)
		.value("EXPORT_FUNC_LIST_AND_QUIT", NPPIDM_EXPORT_FUNC_LIST_AND_QUIT)
		.value("VIEW_DOC_MAP", NPPIDM_VIEW_DOC_MAP)
		.value("VIEW_PROJECT_PANEL_1", NPPIDM_VIEW_PROJECT_PANEL_1)
		.value("VIEW_PROJECT_PANEL_2", NPPIDM_VIEW_PROJECT_PANEL_2)
		.value("VIEW_PROJECT_PANEL_3", NPPIDM_VIEW_PROJECT_PANEL_3)
		.value("VIEW_FUNC_LIST", NPPIDM_VIEW_FUNC_LIST)
		.value("VIEW_FILEBROWSER", NPPIDM_VIEW_FILEBROWSER)
		.value("VIEW_TAB1", NPPIDM_VIEW_TAB1)
		.value("VIEW_TAB2", NPPIDM_VIEW_TAB2)
		.value("VIEW_TAB3", NPPIDM_VIEW_TAB3)
		.value("VIEW_TAB4", NPPIDM_VIEW_TAB4)
		.value("VIEW_TAB5", NPPIDM_VIEW_TAB5)
		.value("VIEW_TAB6", NPPIDM_VIEW_TAB6)
		.value("VIEW_TAB7", NPPIDM_VIEW_TAB7)
		.value("VIEW_TAB8", NPPIDM_VIEW_TAB8)
		.value("VIEW_TAB9", NPPIDM_VIEW_TAB9)
		.value("VIEW_TAB_NEXT", NPPIDM_VIEW_TAB_NEXT)
		.value("VIEW_TAB_PREV", NPPIDM_VIEW_TAB_PREV)
		.value("VIEW_MONITORING", NPPIDM_VIEW_MONITORING)
		.value("VIEW_TAB_MOVEFORWARD", NPPIDM_VIEW_TAB_MOVEFORWARD)
		.value("VIEW_TAB_MOVEBACKWARD", NPPIDM_VIEW_TAB_MOVEBACKWARD)
		.value("VIEW_IN_FIREFOX", NPPIDM_VIEW_IN_FIREFOX)
		.value("VIEW_IN_CHROME", NPPIDM_VIEW_IN_CHROME)
		.value("VIEW_IN_EDGE", NPPIDM_VIEW_IN_EDGE)
		.value("VIEW_IN_IE", NPPIDM_VIEW_IN_IE)
		.value("VIEW_SWITCHTO_PROJECT_PANEL_1", NPPIDM_VIEW_SWITCHTO_PROJECT_PANEL_1)
		.value("VIEW_SWITCHTO_PROJECT_PANEL_2", NPPIDM_VIEW_SWITCHTO_PROJECT_PANEL_2)
		.value("VIEW_SWITCHTO_PROJECT_PANEL_3", NPPIDM_VIEW_SWITCHTO_PROJECT_PANEL_3)
		.value("VIEW_SWITCHTO_FILEBROWSER", NPPIDM_VIEW_SWITCHTO_FILEBROWSER)
		.value("VIEW_SWITCHTO_FUNC_LIST", NPPIDM_VIEW_SWITCHTO_FUNC_LIST)
		.value("VIEW_SWITCHTO_DOCLIST", NPPIDM_VIEW_SWITCHTO_DOCLIST)
		.value("VIEW_TAB_COLOUR_NONE", NPPIDM_VIEW_TAB_COLOUR_NONE)
		.value("VIEW_TAB_COLOUR_1", NPPIDM_VIEW_TAB_COLOUR_1)
		.value("VIEW_TAB_COLOUR_2", NPPIDM_VIEW_TAB_COLOUR_2)
		.value("VIEW_TAB_COLOUR_3", NPPIDM_VIEW_TAB_COLOUR_3)
		.value("VIEW_TAB_COLOUR_4", NPPIDM_VIEW_TAB_COLOUR_4)
		.value("VIEW_TAB_COLOUR_5", NPPIDM_VIEW_TAB_COLOUR_5)
		.value("VIEW_TAB_START", NPPIDM_VIEW_TAB_START)
		.value("VIEW_TAB_END", NPPIDM_VIEW_TAB_END)
		.value("VIEW_NPC", NPPIDM_VIEW_NPC)
		.value("VIEW_NPC_CCUNIEOL", NPPIDM_VIEW_NPC_CCUNIEOL)
		.value("VIEW_GOTO_ANOTHER_VIEW", NPPIDM_VIEW_GOTO_ANOTHER_VIEW)
		.value("VIEW_CLONE_TO_ANOTHER_VIEW", NPPIDM_VIEW_CLONE_TO_ANOTHER_VIEW)
		.value("VIEW_GOTO_NEW_INSTANCE", NPPIDM_VIEW_GOTO_NEW_INSTANCE)
		.value("VIEW_LOAD_IN_NEW_INSTANCE", NPPIDM_VIEW_LOAD_IN_NEW_INSTANCE)
		.value("VIEW_GOTO_START", NPPIDM_VIEW_GOTO_START)
		.value("VIEW_GOTO_END", NPPIDM_VIEW_GOTO_END)

		.value("FORMAT_TODOS", NPPIDM_FORMAT_TODOS)
		.value("FORMAT_TOUNIX", NPPIDM_FORMAT_TOUNIX)
		.value("FORMAT_TOMAC", NPPIDM_FORMAT_TOMAC)
		.value("FORMAT_ANSI", NPPIDM_FORMAT_ANSI)
		.value("FORMAT_UTF_8", NPPIDM_FORMAT_UTF_8)
		.value("FORMAT_UTF_16BE", NPPIDM_FORMAT_UTF_16BE)
		.value("FORMAT_UTF_16LE", NPPIDM_FORMAT_UTF_16LE)
		.value("FORMAT_AS_UTF_8", NPPIDM_FORMAT_AS_UTF_8)
		.value("FORMAT_CONV2_ANSI", NPPIDM_FORMAT_CONV2_ANSI)
		.value("FORMAT_CONV2_AS_UTF_8", NPPIDM_FORMAT_CONV2_AS_UTF_8)
		.value("FORMAT_CONV2_UTF_8", NPPIDM_FORMAT_CONV2_UTF_8)
		.value("FORMAT_CONV2_UTF_16BE", NPPIDM_FORMAT_CONV2_UTF_16BE)
		.value("FORMAT_CONV2_UTF_16LE", NPPIDM_FORMAT_CONV2_UTF_16LE)
		.value("FORMAT_ENCODE", NPPIDM_FORMAT_ENCODE)
		.value("FORMAT_WIN_1250", NPPIDM_FORMAT_WIN_1250)
		.value("FORMAT_WIN_1251", NPPIDM_FORMAT_WIN_1251)
		.value("FORMAT_WIN_1252", NPPIDM_FORMAT_WIN_1252)
		.value("FORMAT_WIN_1253", NPPIDM_FORMAT_WIN_1253)
		.value("FORMAT_WIN_1254", NPPIDM_FORMAT_WIN_1254)
		.value("FORMAT_WIN_1255", NPPIDM_FORMAT_WIN_1255)
		.value("FORMAT_WIN_1256", NPPIDM_FORMAT_WIN_1256)
		.value("FORMAT_WIN_1257", NPPIDM_FORMAT_WIN_1257)
		.value("FORMAT_WIN_1258", NPPIDM_FORMAT_WIN_1258)
		.value("FORMAT_ISO_8859_1", NPPIDM_FORMAT_ISO_8859_1)
		.value("FORMAT_ISO_8859_2", NPPIDM_FORMAT_ISO_8859_2)
		.value("FORMAT_ISO_8859_3", NPPIDM_FORMAT_ISO_8859_3)
		.value("FORMAT_ISO_8859_4", NPPIDM_FORMAT_ISO_8859_4)
		.value("FORMAT_ISO_8859_5", NPPIDM_FORMAT_ISO_8859_5)
		.value("FORMAT_ISO_8859_6", NPPIDM_FORMAT_ISO_8859_6)
		.value("FORMAT_ISO_8859_7", NPPIDM_FORMAT_ISO_8859_7)
		.value("FORMAT_ISO_8859_8", NPPIDM_FORMAT_ISO_8859_8)
		.value("FORMAT_ISO_8859_9", NPPIDM_FORMAT_ISO_8859_9)
		.value("FORMAT_ISO_8859_13", NPPIDM_FORMAT_ISO_8859_13)
		.value("FORMAT_ISO_8859_14", NPPIDM_FORMAT_ISO_8859_14)
		.value("FORMAT_ISO_8859_15", NPPIDM_FORMAT_ISO_8859_15)
		.value("FORMAT_DOS_437", NPPIDM_FORMAT_DOS_437)
		.value("FORMAT_DOS_720", NPPIDM_FORMAT_DOS_720)
		.value("FORMAT_DOS_737", NPPIDM_FORMAT_DOS_737)
		.value("FORMAT_DOS_775", NPPIDM_FORMAT_DOS_775)
		.value("FORMAT_DOS_850", NPPIDM_FORMAT_DOS_850)
		.value("FORMAT_DOS_852", NPPIDM_FORMAT_DOS_852)
		.value("FORMAT_DOS_855", NPPIDM_FORMAT_DOS_855)
		.value("FORMAT_DOS_857", NPPIDM_FORMAT_DOS_857)
		.value("FORMAT_DOS_858", NPPIDM_FORMAT_DOS_858)
		.value("FORMAT_DOS_860", NPPIDM_FORMAT_DOS_860)
		.value("FORMAT_DOS_861", NPPIDM_FORMAT_DOS_861)
		.value("FORMAT_DOS_862", NPPIDM_FORMAT_DOS_862)
		.value("FORMAT_DOS_863", NPPIDM_FORMAT_DOS_863)
		.value("FORMAT_DOS_865", NPPIDM_FORMAT_DOS_865)
		.value("FORMAT_DOS_866", NPPIDM_FORMAT_DOS_866)
		.value("FORMAT_DOS_869", NPPIDM_FORMAT_DOS_869)
		.value("FORMAT_BIG5", NPPIDM_FORMAT_BIG5)
		.value("FORMAT_GB2312", NPPIDM_FORMAT_GB2312)
		.value("FORMAT_SHIFT_JIS", NPPIDM_FORMAT_SHIFT_JIS)
		.value("FORMAT_KOREAN_WIN", NPPIDM_FORMAT_KOREAN_WIN)
		.value("FORMAT_EUC_KR", NPPIDM_FORMAT_EUC_KR)
		.value("FORMAT_TIS_620", NPPIDM_FORMAT_TIS_620)
		.value("FORMAT_MAC_CYRILLIC", NPPIDM_FORMAT_MAC_CYRILLIC)
		.value("FORMAT_KOI8U_CYRILLIC", NPPIDM_FORMAT_KOI8U_CYRILLIC)
		.value("FORMAT_KOI8R_CYRILLIC", NPPIDM_FORMAT_KOI8R_CYRILLIC)

		.value("LANGSTYLE_CONFIG_DLG", NPPIDM_LANGSTYLE_CONFIG_DLG)
		.value("LANG_C", NPPIDM_LANG_C)
		.value("LANG_CPP", NPPIDM_LANG_CPP)
		.value("LANG_JAVA", NPPIDM_LANG_JAVA)
		.value("LANG_HTML", NPPIDM_LANG_HTML)
		.value("LANG_XML", NPPIDM_LANG_XML)
		.value("LANG_JS", NPPIDM_LANG_JS)
		.value("LANG_PHP", NPPIDM_LANG_PHP)
		.value("LANG_ASP", NPPIDM_LANG_ASP)
		.value("LANG_CSS", NPPIDM_LANG_CSS)
		.value("LANG_PASCAL", NPPIDM_LANG_PASCAL)
		.value("LANG_PYTHON", NPPIDM_LANG_PYTHON)
		.value("LANG_PERL", NPPIDM_LANG_PERL)
		.value("LANG_OBJC", NPPIDM_LANG_OBJC)
		.value("LANG_ASCII", NPPIDM_LANG_ASCII)
		.value("LANG_TEXT", NPPIDM_LANG_TEXT)
		.value("LANG_RC", NPPIDM_LANG_RC)
		.value("LANG_MAKEFILE", NPPIDM_LANG_MAKEFILE)
		.value("LANG_INI", NPPIDM_LANG_INI)
		.value("LANG_SQL", NPPIDM_LANG_SQL)
		.value("LANG_VB", NPPIDM_LANG_VB)
		.value("LANG_BATCH", NPPIDM_LANG_BATCH)
		.value("LANG_CS", NPPIDM_LANG_CS)
		.value("LANG_LUA", NPPIDM_LANG_LUA)
		.value("LANG_TEX", NPPIDM_LANG_TEX)
		.value("LANG_FORTRAN", NPPIDM_LANG_FORTRAN)
		.value("LANG_BASH", NPPIDM_LANG_BASH)
		.value("LANG_FLASH", NPPIDM_LANG_FLASH)
		.value("LANG_NSIS", NPPIDM_LANG_NSIS)
		.value("LANG_TCL", NPPIDM_LANG_TCL)
		.value("LANG_LISP", NPPIDM_LANG_LISP)
		.value("LANG_SCHEME", NPPIDM_LANG_SCHEME)
		.value("LANG_ASM", NPPIDM_LANG_ASM)
		.value("LANG_DIFF", NPPIDM_LANG_DIFF)
		.value("LANG_PROPS", NPPIDM_LANG_PROPS)
		.value("LANG_PS", NPPIDM_LANG_PS)
		.value("LANG_RUBY", NPPIDM_LANG_RUBY)
		.value("LANG_SMALLTALK", NPPIDM_LANG_SMALLTALK)
		.value("LANG_VHDL", NPPIDM_LANG_VHDL)
		.value("LANG_CAML", NPPIDM_LANG_CAML)
		.value("LANG_KIX", NPPIDM_LANG_KIX)
		.value("LANG_ADA", NPPIDM_LANG_ADA)
		.value("LANG_VERILOG", NPPIDM_LANG_VERILOG)
		.value("LANG_AU3", NPPIDM_LANG_AU3)
		.value("LANG_MATLAB", NPPIDM_LANG_MATLAB)
		.value("LANG_HASKELL", NPPIDM_LANG_HASKELL)
		.value("LANG_INNO", NPPIDM_LANG_INNO)
		.value("LANG_CMAKE", NPPIDM_LANG_CMAKE)
		.value("LANG_YAML", NPPIDM_LANG_YAML)
		.value("LANG_COBOL", NPPIDM_LANG_COBOL)
		.value("LANG_D", NPPIDM_LANG_D)
		.value("LANG_GUI4CLI", NPPIDM_LANG_GUI4CLI)
		.value("LANG_POWERSHELL", NPPIDM_LANG_POWERSHELL)
		.value("LANG_R", NPPIDM_LANG_R)
		.value("LANG_JSP", NPPIDM_LANG_JSP)
		.value("LANG_COFFEESCRIPT", NPPIDM_LANG_COFFEESCRIPT)
		.value("LANG_JSON", NPPIDM_LANG_JSON)
		.value("LANG_FORTRAN_77", NPPIDM_LANG_FORTRAN_77)
		.value("LANG_BAANC", NPPIDM_LANG_BAANC)
		.value("LANG_SREC", NPPIDM_LANG_SREC)
		.value("LANG_IHEX", NPPIDM_LANG_IHEX)
		.value("LANG_TEHEX", NPPIDM_LANG_TEHEX)
		.value("LANG_SWIFT", NPPIDM_LANG_SWIFT)
		.value("LANG_ASN1", NPPIDM_LANG_ASN1)
		.value("LANG_AVS", NPPIDM_LANG_AVS)
		.value("LANG_BLITZBASIC", NPPIDM_LANG_BLITZBASIC)
		.value("LANG_PUREBASIC", NPPIDM_LANG_PUREBASIC)
		.value("LANG_FREEBASIC", NPPIDM_LANG_FREEBASIC)
		.value("LANG_CSOUND", NPPIDM_LANG_CSOUND)
		.value("LANG_ERLANG", NPPIDM_LANG_ERLANG)
		.value("LANG_ESCRIPT", NPPIDM_LANG_ESCRIPT)
		.value("LANG_FORTH", NPPIDM_LANG_FORTH)
		.value("LANG_LATEX", NPPIDM_LANG_LATEX)
		.value("LANG_MMIXAL", NPPIDM_LANG_MMIXAL)
		.value("LANG_NIM", NPPIDM_LANG_NIM)
		.value("LANG_NNCRONTAB", NPPIDM_LANG_NNCRONTAB)
		.value("LANG_OSCRIPT", NPPIDM_LANG_OSCRIPT)
		.value("LANG_REBOL", NPPIDM_LANG_REBOL)
		.value("LANG_REGISTRY", NPPIDM_LANG_REGISTRY)
		.value("LANG_RUST", NPPIDM_LANG_RUST)
		.value("LANG_SPICE", NPPIDM_LANG_SPICE)
		.value("LANG_TXT2TAGS", NPPIDM_LANG_TXT2TAGS)
		.value("LANG_VISUALPROLOG", NPPIDM_LANG_VISUALPROLOG)
		.value("LANG_TYPESCRIPT", NPPIDM_LANG_TYPESCRIPT)
		.value("LANG_JSON5", NPPIDM_LANG_JSON5)
		.value("LANG_MSSQL", NPPIDM_LANG_MSSQL)
		.value("LANG_GDSCRIPT", NPPIDM_LANG_GDSCRIPT)
		.value("LANG_HOLLYWOOD", NPPIDM_LANG_HOLLYWOOD)
		.value("LANG_GOLANG", NPPIDM_LANG_GOLANG)
		.value("LANG_RAKU", NPPIDM_LANG_RAKU)
		.value("LANG_TOML", NPPIDM_LANG_TOML)
		.value("LANG_EXTERNAL", NPPIDM_LANG_EXTERNAL)
		.value("LANG_EXTERNAL_LIMIT", NPPIDM_LANG_EXTERNAL_LIMIT)
		.value("LANG_USER", NPPIDM_LANG_USER)
		.value("LANG_USER_LIMIT", NPPIDM_LANG_USER_LIMIT)
		.value("LANG_USER_DLG", NPPIDM_LANG_USER_DLG)
		.value("LANG_OPENUDLDIR", NPPIDM_LANG_OPENUDLDIR)
		.value("LANG_UDLCOLLECTION_PROJECT_SITE", NPPIDM_LANG_UDLCOLLECTION_PROJECT_SITE)

		.value("ABOUT", NPPIDM_ABOUT)
		.value("HOMESWEETHOME", NPPIDM_HOMESWEETHOME)
		.value("PROJECTPAGE", NPPIDM_PROJECTPAGE)
		.value("ONLINEDOCUMENT", NPPIDM_ONLINEDOCUMENT)
		.value("FORUM", NPPIDM_FORUM)
		.value("UPDATE_NPP", NPPIDM_UPDATE_NPP)
		.value("WIKIFAQ", NPPIDM_WIKIFAQ)
		.value("CONFUPDATERPROXY", NPPIDM_CONFUPDATERPROXY)
		.value("CMDLINEARGUMENTS", NPPIDM_CMDLINEARGUMENTS)
		.value("DEBUGINFO", NPPIDM_DEBUGINFO)

		.value("SETTING_IMPORTPLUGIN", NPPIDM_SETTING_IMPORTPLUGIN)
		.value("SETTING_IMPORTSTYLETHEMES", NPPIDM_SETTING_IMPORTSTYLETHEMES)
		.value("SETTING_TRAYICON", NPPIDM_SETTING_TRAYICON)
		.value("SETTING_SHORTCUT_MAPPER", NPPIDM_SETTING_SHORTCUT_MAPPER)
		.value("SETTING_REMEMBER_LAST_SESSION", NPPIDM_SETTING_REMEMBER_LAST_SESSION)
		.value("SETTING_PREFERENCE", NPPIDM_SETTING_PREFERENCE)
		.value("SETTING_OPENPLUGINSDIR", NPPIDM_SETTING_OPENPLUGINSDIR)
		.value("SETTING_PLUGINADM", NPPIDM_SETTING_PLUGINADM)
		.value("SETTING_SHORTCUT_MAPPER_MACRO", NPPIDM_SETTING_SHORTCUT_MAPPER_MACRO)
		.value("SETTING_SHORTCUT_MAPPER_RUN", NPPIDM_SETTING_SHORTCUT_MAPPER_RUN)
		.value("SETTING_EDITCONTEXTMENU", NPPIDM_SETTING_EDITCONTEXTMENU)

		.value("TOOL_MD5_GENERATE", NPPIDM_TOOL_MD5_GENERATE)
		.value("TOOL_MD5_GENERATEFROMFILE", NPPIDM_TOOL_MD5_GENERATEFROMFILE)
		.value("TOOL_MD5_GENERATEINTOCLIPBOARD", NPPIDM_TOOL_MD5_GENERATEINTOCLIPBOARD)
		.value("TOOL_SHA256_GENERATE", NPPIDM_TOOL_SHA256_GENERATE)
		.value("TOOL_SHA256_GENERATEFROMFILE", NPPIDM_TOOL_SHA256_GENERATEFROMFILE)
		.value("TOOL_SHA256_GENERATEINTOCLIPBOARD", NPPIDM_TOOL_SHA256_GENERATEINTOCLIPBOARD)
		.value("TOOL_SHA1_GENERATE", NPPIDM_TOOL_SHA1_GENERATE)
		.value("TOOL_SHA1_GENERATEFROMFILE", NPPIDM_TOOL_SHA1_GENERATEFROMFILE)
		.value("TOOL_SHA1_GENERATEINTOCLIPBOARD", NPPIDM_TOOL_SHA1_GENERATEINTOCLIPBOARD)
		.value("TOOL_SHA512_GENERATE", NPPIDM_TOOL_SHA512_GENERATE)
		.value("TOOL_SHA512_GENERATEFROMFILE", NPPIDM_TOOL_SHA512_GENERATEFROMFILE)
		.value("TOOL_SHA512_GENERATEINTOCLIPBOARD", NPPIDM_TOOL_SHA512_GENERATEINTOCLIPBOARD)

		.value("EXECUTE", NPPIDM_EXECUTE)

		.value("SYSTRAYPOPUP_ACTIVATE", NPPIDM_SYSTRAYPOPUP_ACTIVATE)
		.value("SYSTRAYPOPUP_NEWDOC", NPPIDM_SYSTRAYPOPUP_NEWDOC)
		.value("SYSTRAYPOPUP_NEW_AND_PASTE", NPPIDM_SYSTRAYPOPUP_NEW_AND_PASTE)
		.value("SYSTRAYPOPUP_OPENFILE", NPPIDM_SYSTRAYPOPUP_OPENFILE)
		.value("SYSTRAYPOPUP_CLOSE", NPPIDM_SYSTRAYPOPUP_CLOSE)

		.value("WINDOW_WINDOWS", NPPIDM_WINDOW_WINDOWS)
		.value("WINDOW_SORT_FN_ASC", NPPIDM_WINDOW_SORT_FN_ASC)
		.value("WINDOW_SORT_FN_DSC", NPPIDM_WINDOW_SORT_FN_DSC)
		.value("WINDOW_SORT_FP_ASC", NPPIDM_WINDOW_SORT_FP_ASC)
		.value("WINDOW_SORT_FP_DSC", NPPIDM_WINDOW_SORT_FP_DSC)
		.value("WINDOW_SORT_FT_ASC", NPPIDM_WINDOW_SORT_FT_ASC)
		.value("WINDOW_SORT_FT_DSC", NPPIDM_WINDOW_SORT_FT_DSC)
		.value("WINDOW_SORT_FS_ASC", NPPIDM_WINDOW_SORT_FS_ASC)
		.value("WINDOW_SORT_FS_DSC", NPPIDM_WINDOW_SORT_FS_DSC)
		.value("WINDOW_MRU_FIRST", NPPIDM_WINDOW_MRU_FIRST)
		.value("WINDOW_MRU_LIMIT", NPPIDM_WINDOW_MRU_LIMIT)
		.value("WINDOW_COPY_NAME", NPPIDM_WINDOW_COPY_NAME)
		.value("WINDOW_COPY_PATH", NPPIDM_WINDOW_COPY_PATH)

		.value("DROPLIST_LIST", NPPIDM_DROPLIST_LIST)
		.value("DROPLIST_MRU_FIRST", NPPIDM_DROPLIST_MRU_FIRST);

	boost::python::enum_<LineNumWidthMode>("LINENUMWIDTHMODE")
		.value("DYNAMIC", LINENUMWIDTHMODE_DYNAMIC)
		.value("CONSTANT", LINENUMWIDTHMODE_CONSTANT);

	boost::python::enum_<AutoIndentMode>("AUTOINDENTMODE")
		.value("STANDARD", AUTOINDENTMODE_STANDARD)
		.value("CLIKE", AUTOINDENTMODE_CLIKE)
		.value("CUSTOM", AUTOINDENTMODE_CUSTOM);

	//lint +e1793

}

}
