play around with Scintilla and Lexilla

This commit is contained in:
2024-07-02 23:47:26 +08:00
parent d7c71f41b2
commit 727a2ec214
992 changed files with 281111 additions and 195 deletions

View File

@ -0,0 +1,35 @@
#!/usr/bin/env python3
# DepGen.py - produce a make dependencies file for Scintilla
# Copyright 2019 by Neil Hodgson <neilh@scintilla.org>
# The License.txt file describes the conditions under which this software may be distributed.
# Requires Python 3.6 or later
import sys
sys.path.append("..")
from scripts import Dependencies
topComment = "# Created by DepGen.py. To recreate, run DepGen.py.\n"
def Generate():
sources = ["../src/*.cxx"]
includes = ["../include", "../src"]
# Create the dependencies file for g++
deps = Dependencies.FindDependencies(["../win32/*.cxx"] + sources, ["../win32"] + includes, ".o", "../win32/")
# Place the objects in $(DIR_O)
deps = [["$(DIR_O)/"+obj, headers] for obj, headers in deps]
Dependencies.UpdateDependencies("../win32/deps.mak", deps, topComment)
# Create the dependencies file for MSVC
# Place the objects in $(DIR_O) and change extension from ".o" to ".obj"
deps = [["$(DIR_O)/"+Dependencies.PathStem(obj)+".obj", headers] for obj, headers in deps]
Dependencies.UpdateDependencies("../win32/nmdeps.mak", deps, topComment)
if __name__ == "__main__":
Generate()

View File

@ -0,0 +1,159 @@
// Scintilla source code edit control
/** @file HanjaDic.cxx
** Korean Hanja Dictionary
** Convert between Korean Hanja and Hangul by COM interface.
**/
// Copyright 2015 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#include <string>
#include <string_view>
#include <memory>
#define WIN32_LEAN_AND_MEAN 1
#include <windows.h>
#include <ole2.h>
#include "WinTypes.h"
#include "HanjaDic.h"
namespace Scintilla::Internal::HanjaDict {
interface IRadical;
interface IHanja;
interface IStrokes;
enum HANJA_TYPE { HANJA_UNKNOWN = 0, HANJA_K0 = 1, HANJA_K1 = 2, HANJA_OTHER = 3 };
interface IHanjaDic : IUnknown {
STDMETHOD(OpenMainDic)();
STDMETHOD(CloseMainDic)();
STDMETHOD(GetHanjaWords)(BSTR bstrHangul, SAFEARRAY* ppsaHanja, VARIANT_BOOL* pfFound);
STDMETHOD(GetHanjaChars)(unsigned short wchHangul, BSTR* pbstrHanjaChars, VARIANT_BOOL* pfFound);
STDMETHOD(HanjaToHangul)(BSTR bstrHanja, BSTR* pbstrHangul);
STDMETHOD(GetHanjaType)(unsigned short wchHanja, HANJA_TYPE* pHanjaType);
STDMETHOD(GetHanjaSense)(unsigned short wchHanja, BSTR* pbstrSense);
STDMETHOD(GetRadicalID)(short SeqNumOfRadical, short* pRadicalID, unsigned short* pwchRadical);
STDMETHOD(GetRadical)(short nRadicalID, IRadical** ppIRadical);
STDMETHOD(RadicalIDToHanja)(short nRadicalID, unsigned short* pwchRadical);
STDMETHOD(GetHanja)(unsigned short wchHanja, IHanja** ppIHanja);
STDMETHOD(GetStrokes)(short nStrokes, IStrokes** ppIStrokes);
STDMETHOD(OpenDefaultCustomDic)();
STDMETHOD(OpenCustomDic)(BSTR bstrPath, long* plUdr);
STDMETHOD(CloseDefaultCustomDic)();
STDMETHOD(CloseCustomDic)(long lUdr);
STDMETHOD(CloseAllCustomDics)();
STDMETHOD(GetDefaultCustomHanjaWords)(BSTR bstrHangul, SAFEARRAY** ppsaHanja, VARIANT_BOOL* pfFound);
STDMETHOD(GetCustomHanjaWords)(long lUdr, BSTR bstrHangul, SAFEARRAY** ppsaHanja, VARIANT_BOOL* pfFound);
STDMETHOD(PutDefaultCustomHanjaWord)(BSTR bstrHangul, BSTR bstrHanja);
STDMETHOD(PutCustomHanjaWord)(long lUdr, BSTR bstrHangul, BSTR bstrHanja);
STDMETHOD(MaxNumOfRadicals)(short* pVal);
STDMETHOD(MaxNumOfStrokes)(short* pVal);
STDMETHOD(DefaultCustomDic)(long* pVal);
STDMETHOD(DefaultCustomDic)(long pVal);
STDMETHOD(MaxHanjaType)(HANJA_TYPE* pHanjaType);
STDMETHOD(MaxHanjaType)(HANJA_TYPE pHanjaType);
};
extern "C" const GUID __declspec(selectany) IID_IHanjaDic =
{ 0xad75f3ac, 0x18cd, 0x48c6, { 0xa2, 0x7d, 0xf1, 0xe9, 0xa7, 0xdc, 0xe4, 0x32 } };
class ScopedBSTR {
BSTR bstr = nullptr;
public:
ScopedBSTR() noexcept = default;
explicit ScopedBSTR(const OLECHAR *psz) noexcept :
bstr(SysAllocString(psz)) {
}
explicit ScopedBSTR(OLECHAR character) noexcept :
bstr(SysAllocStringLen(&character, 1)) {
}
// Deleted so ScopedBSTR objects can not be copied. Moves are OK.
ScopedBSTR(const ScopedBSTR &) = delete;
ScopedBSTR &operator=(const ScopedBSTR &) = delete;
// Moves are OK.
ScopedBSTR(ScopedBSTR &&) = default;
ScopedBSTR &operator=(ScopedBSTR &&) = default;
~ScopedBSTR() {
SysFreeString(bstr);
}
BSTR get() const noexcept {
return bstr;
}
void reset(BSTR value=nullptr) noexcept {
// https://en.cppreference.com/w/cpp/memory/unique_ptr/reset
BSTR const old = bstr;
bstr = value;
SysFreeString(old);
}
};
class HanjaDic {
std::unique_ptr<IHanjaDic, UnknownReleaser> HJinterface;
bool OpenHanjaDic(LPCOLESTR lpszProgID) noexcept {
CLSID CLSID_HanjaDic;
HRESULT hr = CLSIDFromProgID(lpszProgID, &CLSID_HanjaDic);
if (SUCCEEDED(hr)) {
IHanjaDic *instance = nullptr;
hr = CoCreateInstance(CLSID_HanjaDic, nullptr,
CLSCTX_INPROC_SERVER, IID_IHanjaDic,
reinterpret_cast<LPVOID *>(&instance));
if (SUCCEEDED(hr) && instance) {
HJinterface.reset(instance);
hr = instance->OpenMainDic();
return SUCCEEDED(hr);
}
}
return false;
}
public:
bool Open() noexcept {
return OpenHanjaDic(OLESTR("imkrhjd.hanjadic"))
|| OpenHanjaDic(OLESTR("mshjdic.hanjadic"));
}
void Close() const noexcept {
HJinterface->CloseMainDic();
}
bool IsHanja(wchar_t hanja) const noexcept {
HANJA_TYPE hanjaType = HANJA_UNKNOWN;
const HRESULT hr = HJinterface->GetHanjaType(hanja, &hanjaType);
return SUCCEEDED(hr) && hanjaType > HANJA_UNKNOWN;
}
bool HanjaToHangul(const ScopedBSTR &bstrHanja, ScopedBSTR &bstrHangul) const noexcept {
BSTR result = nullptr;
const HRESULT hr = HJinterface->HanjaToHangul(bstrHanja.get(), &result);
bstrHangul.reset(result);
return SUCCEEDED(hr);
}
};
bool GetHangulOfHanja(std::wstring &inout) noexcept {
// Convert every hanja to hangul.
// Return whether any character been converted.
// Hanja linked to different notes in Hangul have different codes,
// so current character based conversion is enough.
// great thanks for BLUEnLIVE.
bool changed = false;
HanjaDic dict;
if (dict.Open()) {
for (wchar_t &character : inout) {
if (dict.IsHanja(character)) { // Pass hanja only!
ScopedBSTR bstrHangul;
if (dict.HanjaToHangul(ScopedBSTR(character), bstrHangul)) {
changed = true;
character = *(bstrHangul.get());
}
}
}
dict.Close();
}
return changed;
}
}

View File

@ -0,0 +1,22 @@
// Scintilla source code edit control
/** @file HanjaDic.h
** Korean Hanja Dictionary
** Convert between Korean Hanja and Hangul by COM interface.
**/
// Copyright 2015 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#ifndef HANJADIC_H
#define HANJADIC_H
namespace Scintilla::Internal {
namespace HanjaDict {
bool GetHangulOfHanja(std::wstring &inout) noexcept;
}
}
#endif

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,87 @@
// Scintilla source code edit control
/** @file PlatWin.h
** Implementation of platform facilities on Windows.
**/
// Copyright 1998-2011 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#ifndef PLATWIN_H
#define PLATWIN_H
namespace Scintilla::Internal {
#ifndef USER_DEFAULT_SCREEN_DPI
#define USER_DEFAULT_SCREEN_DPI 96
#endif
extern void Platform_Initialise(void *hInstance) noexcept;
extern void Platform_Finalise(bool fromDllMain) noexcept;
constexpr RECT RectFromPRectangle(PRectangle prc) noexcept {
const RECT rc = { static_cast<LONG>(prc.left), static_cast<LONG>(prc.top),
static_cast<LONG>(prc.right), static_cast<LONG>(prc.bottom) };
return rc;
}
constexpr POINT POINTFromPoint(Point pt) noexcept {
return POINT{ static_cast<LONG>(pt.x), static_cast<LONG>(pt.y) };
}
constexpr Point PointFromPOINT(POINT pt) noexcept {
return Point::FromInts(pt.x, pt.y);
}
constexpr HWND HwndFromWindowID(WindowID wid) noexcept {
return static_cast<HWND>(wid);
}
inline HWND HwndFromWindow(const Window &w) noexcept {
return HwndFromWindowID(w.GetID());
}
void *PointerFromWindow(HWND hWnd) noexcept;
void SetWindowPointer(HWND hWnd, void *ptr) noexcept;
HMONITOR MonitorFromWindowHandleScaling(HWND hWnd) noexcept;
UINT DpiForWindow(WindowID wid) noexcept;
float GetDeviceScaleFactorWhenGdiScalingActive(HWND hWnd) noexcept;
int SystemMetricsForDpi(int nIndex, UINT dpi) noexcept;
constexpr int defaultCursorBaseSize = 32;
HCURSOR LoadReverseArrowCursor(UINT dpi, int cursorBaseSize) noexcept;
class MouseWheelDelta {
int wheelDelta = 0;
public:
bool Accumulate(WPARAM wParam) noexcept {
wheelDelta -= GET_WHEEL_DELTA_WPARAM(wParam);
return std::abs(wheelDelta) >= WHEEL_DELTA;
}
int Actions() noexcept {
const int actions = wheelDelta / WHEEL_DELTA;
wheelDelta = wheelDelta % WHEEL_DELTA;
return actions;
}
};
#if defined(USE_D2D)
extern bool LoadD2D();
extern ID2D1Factory *pD2DFactory;
extern IDWriteFactory *pIDWriteFactory;
struct RenderingParams {
std::unique_ptr<IDWriteRenderingParams, UnknownReleaser> defaultRenderingParams;
std::unique_ptr<IDWriteRenderingParams, UnknownReleaser> customRenderingParams;
};
struct ISetRenderingParams {
virtual void SetRenderingParams(std::shared_ptr<RenderingParams> renderingParams_) = 0;
};
#endif
}
#endif

View File

@ -0,0 +1,21 @@
command.build.SConstruct=scons.bat .
command.name.1.SConstruct=scons clean
command.1.SConstruct=scons.bat --clean .
command.build.*.mak=nmake -f $(FileNameExt) DEBUG=1 QUIET=1
command.name.1.*.mak=nmake clean
command.1.*.mak=nmake -f $(FileNameExt) clean
command.name.2.*.mak=Borland Make
command.2.*.mak=make -f $(FileNameExt)
command.subsystem.2.*.mak=0
command.name.3.*.mak=make clean
command.3.*.mak=make -f $(FileNameExt) clean
command.name.4.*.mak=make debug
command.4.*.mak=make DEBUG=1 -f $(FileNameExt)
command.name.5.*.mak=nmake debug
command.5.*.mak=nmake DEBUG=1 -f $(FileNameExt)
# SciTE.properties is the per directory local options file and can be used to override
# settings made in SciTEGlobal.properties
command.build.*.cxx=nmake -f scintilla.mak DEBUG=1 QUIET=1
command.build.*.h=nmake -f scintilla.mak DEBUG=1 QUIET=1
command.build.*.rc=nmake -f scintilla.mak DEBUG=1 QUIET=1

View File

@ -0,0 +1,37 @@
// Resource file for Scintilla
// Copyright 1998-2010 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#include <windows.h>
#define VERSION_SCINTILLA "5.5.0"
#define VERSION_WORDS 5, 5, 0, 0
VS_VERSION_INFO VERSIONINFO
FILEVERSION VERSION_WORDS
PRODUCTVERSION VERSION_WORDS
FILEFLAGSMASK 0x3fL
FILEFLAGS 0
FILEOS VOS_NT_WINDOWS32
FILETYPE VFT_APP
FILESUBTYPE VFT2_UNKNOWN
BEGIN
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", "Neil Hodgson neilh@scintilla.org\0"
VALUE "FileDescription", "Scintilla.DLL - a Source Editing Component\0"
VALUE "FileVersion", VERSION_SCINTILLA "\0"
VALUE "InternalName", "Scintilla\0"
VALUE "LegalCopyright", "Copyright 1998-2012 by Neil Hodgson\0"
VALUE "OriginalFilename", "Scintilla.DLL\0"
VALUE "ProductName", "Scintilla\0"
VALUE "ProductVersion", VERSION_SCINTILLA "\0"
END
END
END

View File

@ -0,0 +1,2 @@
EXPORTS
Scintilla_DirectFunction

View File

@ -0,0 +1,186 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{19CCA8B8-46B9-4609-B7CE-198DA19F07BD}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>Scintilla</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup>
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<UseDebugLibraries>true</UseDebugLibraries>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<UseDebugLibraries>true</UseDebugLibraries>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
<UseDebugLibraries>true</UseDebugLibraries>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<IntDir>Intermediates\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<IntDir>Intermediates\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<IntDir>Intermediates\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<IntDir>Intermediates\$(Configuration)\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<PreprocessorDefinitions>_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\include;..\src;</AdditionalIncludeDirectories>
<BrowseInformation>true</BrowseInformation>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<MinimalRebuild>false</MinimalRebuild>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<AdditionalOptions>/source-charset:utf-8 %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>gdi32.lib;imm32.lib;ole32.lib;oleaut32.lib;advapi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<Link>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
<CETCompat>true</CETCompat>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<Link>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
<CETCompat>true</CETCompat>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
<ClCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<Link>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<CETCompat>true</CETCompat>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<CETCompat>true</CETCompat>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
<ClCompile>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\src\*.cxx" />
<ClCompile Include="..\win32\HanjaDic.cxx" />
<ClCompile Include="..\win32\PlatWin.cxx" />
<ClCompile Include="..\win32\ScintillaWin.cxx" />
<ClCompile Include="..\win32\ScintillaDLL.cxx" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\include\*.h" />
<ClInclude Include="..\src\*.h" />
<ClInclude Include="..\win32\*.h" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\win32\ScintRes.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -0,0 +1,37 @@
// Scintilla source code edit control
/** @file ScintillaDLL.cxx
** DLL entry point for Scintilla.
**/
// Copyright 1998-2018 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#undef _WIN32_WINNT
#define _WIN32_WINNT 0x0500
#undef WINVER
#define WINVER 0x0500
#include <windows.h>
#include "ScintillaTypes.h"
#include "ScintillaWin.h"
using namespace Scintilla;
extern "C"
__declspec(dllexport)
sptr_t __stdcall Scintilla_DirectFunction(
Internal::ScintillaWin *sci, UINT iMessage, uptr_t wParam, sptr_t lParam) {
return Internal::DirectFunction(sci, iMessage, wParam, lParam);
}
extern "C" int APIENTRY DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpvReserved) {
//Platform::DebugPrintf("Scintilla::DllMain %d %d\n", hInstance, dwReason);
if (dwReason == DLL_PROCESS_ATTACH) {
if (!Internal::RegisterClasses(hInstance))
return FALSE;
} else if (dwReason == DLL_PROCESS_DETACH) {
if (lpvReserved == NULL) {
Internal::ResourcesRelease(true);
}
}
return TRUE;
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,21 @@
// Scintilla source code edit control
/** @file ScintillaWin.h
** Define functions from ScintillaWin.cxx that can be called from ScintillaDLL.cxx.
**/
// Copyright 1998-2018 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#ifndef SCINTILLAWIN_H
#define SCINTILLAWIN_H
namespace Scintilla::Internal {
class ScintillaWin;
int ResourcesRelease(bool fromDllMain) noexcept;
int RegisterClasses(void *hInstance) noexcept;
Scintilla::sptr_t DirectFunction(ScintillaWin *sci, UINT iMessage, Scintilla::uptr_t wParam, Scintilla::sptr_t lParam);
}
#endif

View File

@ -0,0 +1,58 @@
// Scintilla source code edit control
/** @file WinTypes.h
** Implement safe release of COM objects and access to functions in DLLs.
** Header contains all implementation - there is no .cxx file.
**/
// Copyright 2020-2021 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#ifndef WINTYPES_H
#define WINTYPES_H
namespace Scintilla::Internal {
// Release an IUnknown* and set to nullptr.
// While IUnknown::Release must be noexcept, it isn't marked as such so produces
// warnings which are avoided by the catch.
template <class T>
inline void ReleaseUnknown(T *&ppUnknown) noexcept {
if (ppUnknown) {
try {
ppUnknown->Release();
} catch (...) {
// Never occurs
}
ppUnknown = nullptr;
}
}
struct UnknownReleaser {
// Called by unique_ptr to destroy/free the resource
template <class T>
void operator()(T *pUnknown) noexcept {
try {
pUnknown->Release();
} catch (...) {
// IUnknown::Release must not throw, ignore if it does.
}
}
};
/// Find a function in a DLL and convert to a function pointer.
/// This avoids undefined and conditionally defined behaviour.
template<typename T>
inline T DLLFunction(HMODULE hModule, LPCSTR lpProcName) noexcept {
if (!hModule) {
return nullptr;
}
FARPROC function = ::GetProcAddress(hModule, lpProcName);
static_assert(sizeof(T) == sizeof(function));
T fp {};
memcpy(&fp, &function, sizeof(T));
return fp;
}
}
#endif

View File

@ -0,0 +1,478 @@
# Created by DepGen.py. To recreate, run DepGen.py.
$(DIR_O)/HanjaDic.o: \
HanjaDic.cxx \
WinTypes.h \
HanjaDic.h
$(DIR_O)/PlatWin.o: \
PlatWin.cxx \
../include/ScintillaTypes.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/XPM.h \
../src/UniConversion.h \
../src/DBCS.h \
WinTypes.h \
PlatWin.h
$(DIR_O)/ScintillaDLL.o: \
ScintillaDLL.cxx \
../include/ScintillaTypes.h \
ScintillaWin.h
$(DIR_O)/ScintillaWin.o: \
ScintillaWin.cxx \
../include/ScintillaTypes.h \
../include/ScintillaMessages.h \
../include/ScintillaStructures.h \
../include/ILoader.h \
../include/Sci_Position.h \
../include/ILexer.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/CharacterCategoryMap.h \
../src/Position.h \
../src/UniqueString.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
../src/ContractionState.h \
../src/CellBuffer.h \
../src/CallTip.h \
../src/KeyMap.h \
../src/Indicator.h \
../src/LineMarker.h \
../src/Style.h \
../src/ViewStyle.h \
../src/CharClassify.h \
../src/Decoration.h \
../src/CaseFolder.h \
../src/Document.h \
../src/CaseConvert.h \
../src/UniConversion.h \
../src/Selection.h \
../src/PositionCache.h \
../src/EditModel.h \
../src/MarginView.h \
../src/EditView.h \
../src/Editor.h \
../src/ElapsedPeriod.h \
../src/AutoComplete.h \
../src/ScintillaBase.h \
WinTypes.h \
PlatWin.h \
HanjaDic.h \
ScintillaWin.h
$(DIR_O)/AutoComplete.o: \
../src/AutoComplete.cxx \
../include/ScintillaTypes.h \
../include/ScintillaMessages.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/CharacterType.h \
../src/Position.h \
../src/AutoComplete.h
$(DIR_O)/CallTip.o: \
../src/CallTip.cxx \
../include/ScintillaTypes.h \
../include/ScintillaMessages.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/Position.h \
../src/CallTip.h
$(DIR_O)/CaseConvert.o: \
../src/CaseConvert.cxx \
../src/CaseConvert.h \
../src/UniConversion.h
$(DIR_O)/CaseFolder.o: \
../src/CaseFolder.cxx \
../src/CharacterType.h \
../src/CaseFolder.h \
../src/CaseConvert.h
$(DIR_O)/CellBuffer.o: \
../src/CellBuffer.cxx \
../include/ScintillaTypes.h \
../src/Debugging.h \
../src/Position.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
../src/SparseVector.h \
../src/ChangeHistory.h \
../src/CellBuffer.h \
../src/UndoHistory.h \
../src/UniConversion.h
$(DIR_O)/ChangeHistory.o: \
../src/ChangeHistory.cxx \
../include/ScintillaTypes.h \
../src/Debugging.h \
../src/Position.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
../src/SparseVector.h \
../src/ChangeHistory.h
$(DIR_O)/CharacterCategoryMap.o: \
../src/CharacterCategoryMap.cxx \
../src/CharacterCategoryMap.h
$(DIR_O)/CharacterType.o: \
../src/CharacterType.cxx \
../src/CharacterType.h
$(DIR_O)/CharClassify.o: \
../src/CharClassify.cxx \
../src/CharacterType.h \
../src/CharClassify.h
$(DIR_O)/ContractionState.o: \
../src/ContractionState.cxx \
../src/Debugging.h \
../src/Position.h \
../src/UniqueString.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
../src/SparseVector.h \
../src/ContractionState.h
$(DIR_O)/DBCS.o: \
../src/DBCS.cxx \
../src/DBCS.h
$(DIR_O)/Decoration.o: \
../src/Decoration.cxx \
../include/ScintillaTypes.h \
../src/Debugging.h \
../src/Position.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
../src/Decoration.h
$(DIR_O)/Document.o: \
../src/Document.cxx \
../include/ScintillaTypes.h \
../include/ILoader.h \
../include/Sci_Position.h \
../include/ILexer.h \
../src/Debugging.h \
../src/CharacterType.h \
../src/CharacterCategoryMap.h \
../src/Position.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
../src/CellBuffer.h \
../src/PerLine.h \
../src/CharClassify.h \
../src/Decoration.h \
../src/CaseFolder.h \
../src/Document.h \
../src/RESearch.h \
../src/UniConversion.h \
../src/ElapsedPeriod.h
$(DIR_O)/EditModel.o: \
../src/EditModel.cxx \
../include/ScintillaTypes.h \
../include/ILoader.h \
../include/Sci_Position.h \
../include/ILexer.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/CharacterCategoryMap.h \
../src/Position.h \
../src/UniqueString.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
../src/ContractionState.h \
../src/CellBuffer.h \
../src/Indicator.h \
../src/LineMarker.h \
../src/Style.h \
../src/ViewStyle.h \
../src/CharClassify.h \
../src/Decoration.h \
../src/CaseFolder.h \
../src/Document.h \
../src/UniConversion.h \
../src/Selection.h \
../src/PositionCache.h \
../src/EditModel.h
$(DIR_O)/Editor.o: \
../src/Editor.cxx \
../include/ScintillaTypes.h \
../include/ScintillaMessages.h \
../include/ScintillaStructures.h \
../include/ILoader.h \
../include/Sci_Position.h \
../include/ILexer.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/CharacterType.h \
../src/CharacterCategoryMap.h \
../src/Position.h \
../src/UniqueString.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
../src/ContractionState.h \
../src/CellBuffer.h \
../src/PerLine.h \
../src/KeyMap.h \
../src/Indicator.h \
../src/LineMarker.h \
../src/Style.h \
../src/ViewStyle.h \
../src/CharClassify.h \
../src/Decoration.h \
../src/CaseFolder.h \
../src/Document.h \
../src/UniConversion.h \
../src/DBCS.h \
../src/Selection.h \
../src/PositionCache.h \
../src/EditModel.h \
../src/MarginView.h \
../src/EditView.h \
../src/Editor.h \
../src/ElapsedPeriod.h
$(DIR_O)/EditView.o: \
../src/EditView.cxx \
../include/ScintillaTypes.h \
../include/ScintillaMessages.h \
../include/ScintillaStructures.h \
../include/ILoader.h \
../include/Sci_Position.h \
../include/ILexer.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/CharacterType.h \
../src/CharacterCategoryMap.h \
../src/Position.h \
../src/UniqueString.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
../src/ContractionState.h \
../src/CellBuffer.h \
../src/PerLine.h \
../src/KeyMap.h \
../src/Indicator.h \
../src/LineMarker.h \
../src/Style.h \
../src/ViewStyle.h \
../src/CharClassify.h \
../src/Decoration.h \
../src/CaseFolder.h \
../src/Document.h \
../src/UniConversion.h \
../src/Selection.h \
../src/PositionCache.h \
../src/EditModel.h \
../src/MarginView.h \
../src/EditView.h \
../src/ElapsedPeriod.h
$(DIR_O)/Geometry.o: \
../src/Geometry.cxx \
../src/Geometry.h
$(DIR_O)/Indicator.o: \
../src/Indicator.cxx \
../include/ScintillaTypes.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/Indicator.h \
../src/XPM.h
$(DIR_O)/KeyMap.o: \
../src/KeyMap.cxx \
../include/ScintillaTypes.h \
../include/ScintillaMessages.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/KeyMap.h
$(DIR_O)/LineMarker.o: \
../src/LineMarker.cxx \
../include/ScintillaTypes.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/XPM.h \
../src/LineMarker.h \
../src/UniConversion.h
$(DIR_O)/MarginView.o: \
../src/MarginView.cxx \
../include/ScintillaTypes.h \
../include/ScintillaMessages.h \
../include/ScintillaStructures.h \
../include/ILoader.h \
../include/Sci_Position.h \
../include/ILexer.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/CharacterCategoryMap.h \
../src/Position.h \
../src/UniqueString.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
../src/ContractionState.h \
../src/CellBuffer.h \
../src/KeyMap.h \
../src/Indicator.h \
../src/LineMarker.h \
../src/Style.h \
../src/ViewStyle.h \
../src/CharClassify.h \
../src/Decoration.h \
../src/CaseFolder.h \
../src/Document.h \
../src/UniConversion.h \
../src/Selection.h \
../src/PositionCache.h \
../src/EditModel.h \
../src/MarginView.h \
../src/EditView.h
$(DIR_O)/PerLine.o: \
../src/PerLine.cxx \
../include/ScintillaTypes.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/Position.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/CellBuffer.h \
../src/PerLine.h
$(DIR_O)/PositionCache.o: \
../src/PositionCache.cxx \
../include/ScintillaTypes.h \
../include/ScintillaMessages.h \
../include/ILoader.h \
../include/Sci_Position.h \
../include/ILexer.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/CharacterType.h \
../src/CharacterCategoryMap.h \
../src/Position.h \
../src/UniqueString.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
../src/ContractionState.h \
../src/CellBuffer.h \
../src/KeyMap.h \
../src/Indicator.h \
../src/LineMarker.h \
../src/Style.h \
../src/ViewStyle.h \
../src/CharClassify.h \
../src/Decoration.h \
../src/CaseFolder.h \
../src/Document.h \
../src/UniConversion.h \
../src/DBCS.h \
../src/Selection.h \
../src/PositionCache.h
$(DIR_O)/RESearch.o: \
../src/RESearch.cxx \
../src/Position.h \
../src/CharClassify.h \
../src/RESearch.h
$(DIR_O)/RunStyles.o: \
../src/RunStyles.cxx \
../src/Debugging.h \
../src/Position.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h
$(DIR_O)/ScintillaBase.o: \
../src/ScintillaBase.cxx \
../include/ScintillaTypes.h \
../include/ScintillaMessages.h \
../include/ScintillaStructures.h \
../include/ILoader.h \
../include/Sci_Position.h \
../include/ILexer.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/CharacterCategoryMap.h \
../src/Position.h \
../src/UniqueString.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
../src/ContractionState.h \
../src/CellBuffer.h \
../src/CallTip.h \
../src/KeyMap.h \
../src/Indicator.h \
../src/LineMarker.h \
../src/Style.h \
../src/ViewStyle.h \
../src/CharClassify.h \
../src/Decoration.h \
../src/CaseFolder.h \
../src/Document.h \
../src/Selection.h \
../src/PositionCache.h \
../src/EditModel.h \
../src/MarginView.h \
../src/EditView.h \
../src/Editor.h \
../src/AutoComplete.h \
../src/ScintillaBase.h
$(DIR_O)/Selection.o: \
../src/Selection.cxx \
../src/Debugging.h \
../src/Position.h \
../src/Selection.h
$(DIR_O)/Style.o: \
../src/Style.cxx \
../include/ScintillaTypes.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/Style.h
$(DIR_O)/UndoHistory.o: \
../src/UndoHistory.cxx \
../include/ScintillaTypes.h \
../src/Debugging.h \
../src/Position.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
../src/SparseVector.h \
../src/ChangeHistory.h \
../src/CellBuffer.h \
../src/UndoHistory.h
$(DIR_O)/UniConversion.o: \
../src/UniConversion.cxx \
../src/UniConversion.h
$(DIR_O)/UniqueString.o: \
../src/UniqueString.cxx \
../src/UniqueString.h
$(DIR_O)/ViewStyle.o: \
../src/ViewStyle.cxx \
../include/ScintillaTypes.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/Position.h \
../src/UniqueString.h \
../src/Indicator.h \
../src/XPM.h \
../src/LineMarker.h \
../src/Style.h \
../src/ViewStyle.h
$(DIR_O)/XPM.o: \
../src/XPM.cxx \
../include/ScintillaTypes.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/XPM.h

View File

@ -0,0 +1,140 @@
# Make file for Scintilla on Windows
# @file makefile
# Copyright 1998-2010 by Neil Hodgson <neilh@scintilla.org>
# The License.txt file describes the conditions under which this software may be distributed.
# This makefile assumes Mingw-w64 GCC 9.0+ is used and changes will be needed to use other compilers.
# Clang 9.0+ can be used with CLANG=1 on command line.
.PHONY: all clean analyze depend
.SUFFIXES: .cxx .c .o .h .a
DIR_O=.
DIR_BIN=../bin
COMPONENT = $(DIR_BIN)/Scintilla.dll
LIBSCI = $(DIR_BIN)/libscintilla.a
WARNINGS = -Wpedantic -Wall -Wextra
ifdef CLANG
CXX = clang++
else
# MinGW GCC
LIBSMINGW = -lstdc++
STRIPOPTION = -s
endif
ARFLAGS = rc
RANLIB ?= ranlib
WINDRES ?= windres
# Environment variable windir always defined on Win32
# Take care of changing Unix style '/' directory separator to '\' on Windows
normalize = $(if $(windir),$(subst /,\,$1),$1)
PYTHON = $(if $(windir),pyw,python3)
ifdef windir
DEL = $(if $(wildcard $(dir $(SHELL))rm.exe), $(dir $(SHELL))rm.exe -f, del /q)
else
DEL = rm -f
endif
vpath %.h ../src ../include
vpath %.cxx ../src
LDFLAGS=-shared -static -mwindows
LIBS=-lgdi32 -luser32 -limm32 -lole32 -luuid -loleaut32 -ladvapi32 $(LIBSMINGW)
INCLUDES=-I ../include -I ../src
BASE_FLAGS += $(WARNINGS)
ifdef NO_CXX11_REGEX
DEFINES += -DNO_CXX11_REGEX
endif
DEFINES += -D$(if $(DEBUG),DEBUG,NDEBUG)
BASE_FLAGS += $(if $(DEBUG),-g,-O3)
ifndef DEBUG
STRIPFLAG=$(STRIPOPTION)
endif
CXX_BASE_FLAGS =--std=c++17 $(BASE_FLAGS)
CXX_ALL_FLAGS =$(DEFINES) $(INCLUDES) $(CXX_BASE_FLAGS)
all: $(COMPONENT) $(LIBSCI)
clean:
$(DEL) $(call normalize, $(addprefix $(DIR_O)/, *.exe *.o *.a *.obj *.dll *.res *.map *.plist) $(COMPONENT) $(LIBSCI))
$(DIR_O)/%.o: %.cxx
$(CXX) $(CXX_ALL_FLAGS) $(CXXFLAGS) -c $< -o $@
analyze:
$(CXX) --analyze $(CXX_ALL_FLAGS) $(CXXFLAGS) *.cxx ../src/*.cxx
depend deps.mak:
$(PYTHON) DepGen.py
# Required for base Scintilla
SRC_OBJS = \
$(DIR_O)/AutoComplete.o \
$(DIR_O)/CallTip.o \
$(DIR_O)/CaseConvert.o \
$(DIR_O)/CaseFolder.o \
$(DIR_O)/CellBuffer.o \
$(DIR_O)/ChangeHistory.o \
$(DIR_O)/CharacterCategoryMap.o \
$(DIR_O)/CharacterType.o \
$(DIR_O)/CharClassify.o \
$(DIR_O)/ContractionState.o \
$(DIR_O)/DBCS.o \
$(DIR_O)/Decoration.o \
$(DIR_O)/Document.o \
$(DIR_O)/EditModel.o \
$(DIR_O)/Editor.o \
$(DIR_O)/EditView.o \
$(DIR_O)/Geometry.o \
$(DIR_O)/Indicator.o \
$(DIR_O)/KeyMap.o \
$(DIR_O)/LineMarker.o \
$(DIR_O)/MarginView.o \
$(DIR_O)/PerLine.o \
$(DIR_O)/PositionCache.o \
$(DIR_O)/RESearch.o \
$(DIR_O)/RunStyles.o \
$(DIR_O)/Selection.o \
$(DIR_O)/Style.o \
$(DIR_O)/UndoHistory.o \
$(DIR_O)/UniConversion.o \
$(DIR_O)/UniqueString.o \
$(DIR_O)/ViewStyle.o \
$(DIR_O)/XPM.o
COMPONENT_OBJS = \
$(SRC_OBJS) \
$(DIR_O)/HanjaDic.o \
$(DIR_O)/PlatWin.o \
$(DIR_O)/ScintillaBase.o \
$(DIR_O)/ScintillaWin.o
SHARED_OBJS = \
$(DIR_O)/ScintillaDLL.o \
$(DIR_O)/ScintRes.o
$(COMPONENT): $(COMPONENT_OBJS) $(SHARED_OBJS)
$(CXX) $(LDFLAGS) -o $@ $(STRIPFLAG) $^ $(CXXFLAGS) $(LIBS)
$(LIBSCI): $(COMPONENT_OBJS)
$(AR) $(ARFLAGS) $@ $^
$(RANLIB) $@
# Automatically generate dependencies for most files with "make depend"
include deps.mak
$(DIR_O)/ScintRes.o: ScintRes.rc
$(WINDRES) $< $@

View File

@ -0,0 +1,478 @@
# Created by DepGen.py. To recreate, run DepGen.py.
$(DIR_O)/HanjaDic.obj: \
HanjaDic.cxx \
WinTypes.h \
HanjaDic.h
$(DIR_O)/PlatWin.obj: \
PlatWin.cxx \
../include/ScintillaTypes.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/XPM.h \
../src/UniConversion.h \
../src/DBCS.h \
WinTypes.h \
PlatWin.h
$(DIR_O)/ScintillaDLL.obj: \
ScintillaDLL.cxx \
../include/ScintillaTypes.h \
ScintillaWin.h
$(DIR_O)/ScintillaWin.obj: \
ScintillaWin.cxx \
../include/ScintillaTypes.h \
../include/ScintillaMessages.h \
../include/ScintillaStructures.h \
../include/ILoader.h \
../include/Sci_Position.h \
../include/ILexer.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/CharacterCategoryMap.h \
../src/Position.h \
../src/UniqueString.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
../src/ContractionState.h \
../src/CellBuffer.h \
../src/CallTip.h \
../src/KeyMap.h \
../src/Indicator.h \
../src/LineMarker.h \
../src/Style.h \
../src/ViewStyle.h \
../src/CharClassify.h \
../src/Decoration.h \
../src/CaseFolder.h \
../src/Document.h \
../src/CaseConvert.h \
../src/UniConversion.h \
../src/Selection.h \
../src/PositionCache.h \
../src/EditModel.h \
../src/MarginView.h \
../src/EditView.h \
../src/Editor.h \
../src/ElapsedPeriod.h \
../src/AutoComplete.h \
../src/ScintillaBase.h \
WinTypes.h \
PlatWin.h \
HanjaDic.h \
ScintillaWin.h
$(DIR_O)/AutoComplete.obj: \
../src/AutoComplete.cxx \
../include/ScintillaTypes.h \
../include/ScintillaMessages.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/CharacterType.h \
../src/Position.h \
../src/AutoComplete.h
$(DIR_O)/CallTip.obj: \
../src/CallTip.cxx \
../include/ScintillaTypes.h \
../include/ScintillaMessages.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/Position.h \
../src/CallTip.h
$(DIR_O)/CaseConvert.obj: \
../src/CaseConvert.cxx \
../src/CaseConvert.h \
../src/UniConversion.h
$(DIR_O)/CaseFolder.obj: \
../src/CaseFolder.cxx \
../src/CharacterType.h \
../src/CaseFolder.h \
../src/CaseConvert.h
$(DIR_O)/CellBuffer.obj: \
../src/CellBuffer.cxx \
../include/ScintillaTypes.h \
../src/Debugging.h \
../src/Position.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
../src/SparseVector.h \
../src/ChangeHistory.h \
../src/CellBuffer.h \
../src/UndoHistory.h \
../src/UniConversion.h
$(DIR_O)/ChangeHistory.obj: \
../src/ChangeHistory.cxx \
../include/ScintillaTypes.h \
../src/Debugging.h \
../src/Position.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
../src/SparseVector.h \
../src/ChangeHistory.h
$(DIR_O)/CharacterCategoryMap.obj: \
../src/CharacterCategoryMap.cxx \
../src/CharacterCategoryMap.h
$(DIR_O)/CharacterType.obj: \
../src/CharacterType.cxx \
../src/CharacterType.h
$(DIR_O)/CharClassify.obj: \
../src/CharClassify.cxx \
../src/CharacterType.h \
../src/CharClassify.h
$(DIR_O)/ContractionState.obj: \
../src/ContractionState.cxx \
../src/Debugging.h \
../src/Position.h \
../src/UniqueString.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
../src/SparseVector.h \
../src/ContractionState.h
$(DIR_O)/DBCS.obj: \
../src/DBCS.cxx \
../src/DBCS.h
$(DIR_O)/Decoration.obj: \
../src/Decoration.cxx \
../include/ScintillaTypes.h \
../src/Debugging.h \
../src/Position.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
../src/Decoration.h
$(DIR_O)/Document.obj: \
../src/Document.cxx \
../include/ScintillaTypes.h \
../include/ILoader.h \
../include/Sci_Position.h \
../include/ILexer.h \
../src/Debugging.h \
../src/CharacterType.h \
../src/CharacterCategoryMap.h \
../src/Position.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
../src/CellBuffer.h \
../src/PerLine.h \
../src/CharClassify.h \
../src/Decoration.h \
../src/CaseFolder.h \
../src/Document.h \
../src/RESearch.h \
../src/UniConversion.h \
../src/ElapsedPeriod.h
$(DIR_O)/EditModel.obj: \
../src/EditModel.cxx \
../include/ScintillaTypes.h \
../include/ILoader.h \
../include/Sci_Position.h \
../include/ILexer.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/CharacterCategoryMap.h \
../src/Position.h \
../src/UniqueString.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
../src/ContractionState.h \
../src/CellBuffer.h \
../src/Indicator.h \
../src/LineMarker.h \
../src/Style.h \
../src/ViewStyle.h \
../src/CharClassify.h \
../src/Decoration.h \
../src/CaseFolder.h \
../src/Document.h \
../src/UniConversion.h \
../src/Selection.h \
../src/PositionCache.h \
../src/EditModel.h
$(DIR_O)/Editor.obj: \
../src/Editor.cxx \
../include/ScintillaTypes.h \
../include/ScintillaMessages.h \
../include/ScintillaStructures.h \
../include/ILoader.h \
../include/Sci_Position.h \
../include/ILexer.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/CharacterType.h \
../src/CharacterCategoryMap.h \
../src/Position.h \
../src/UniqueString.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
../src/ContractionState.h \
../src/CellBuffer.h \
../src/PerLine.h \
../src/KeyMap.h \
../src/Indicator.h \
../src/LineMarker.h \
../src/Style.h \
../src/ViewStyle.h \
../src/CharClassify.h \
../src/Decoration.h \
../src/CaseFolder.h \
../src/Document.h \
../src/UniConversion.h \
../src/DBCS.h \
../src/Selection.h \
../src/PositionCache.h \
../src/EditModel.h \
../src/MarginView.h \
../src/EditView.h \
../src/Editor.h \
../src/ElapsedPeriod.h
$(DIR_O)/EditView.obj: \
../src/EditView.cxx \
../include/ScintillaTypes.h \
../include/ScintillaMessages.h \
../include/ScintillaStructures.h \
../include/ILoader.h \
../include/Sci_Position.h \
../include/ILexer.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/CharacterType.h \
../src/CharacterCategoryMap.h \
../src/Position.h \
../src/UniqueString.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
../src/ContractionState.h \
../src/CellBuffer.h \
../src/PerLine.h \
../src/KeyMap.h \
../src/Indicator.h \
../src/LineMarker.h \
../src/Style.h \
../src/ViewStyle.h \
../src/CharClassify.h \
../src/Decoration.h \
../src/CaseFolder.h \
../src/Document.h \
../src/UniConversion.h \
../src/Selection.h \
../src/PositionCache.h \
../src/EditModel.h \
../src/MarginView.h \
../src/EditView.h \
../src/ElapsedPeriod.h
$(DIR_O)/Geometry.obj: \
../src/Geometry.cxx \
../src/Geometry.h
$(DIR_O)/Indicator.obj: \
../src/Indicator.cxx \
../include/ScintillaTypes.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/Indicator.h \
../src/XPM.h
$(DIR_O)/KeyMap.obj: \
../src/KeyMap.cxx \
../include/ScintillaTypes.h \
../include/ScintillaMessages.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/KeyMap.h
$(DIR_O)/LineMarker.obj: \
../src/LineMarker.cxx \
../include/ScintillaTypes.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/XPM.h \
../src/LineMarker.h \
../src/UniConversion.h
$(DIR_O)/MarginView.obj: \
../src/MarginView.cxx \
../include/ScintillaTypes.h \
../include/ScintillaMessages.h \
../include/ScintillaStructures.h \
../include/ILoader.h \
../include/Sci_Position.h \
../include/ILexer.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/CharacterCategoryMap.h \
../src/Position.h \
../src/UniqueString.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
../src/ContractionState.h \
../src/CellBuffer.h \
../src/KeyMap.h \
../src/Indicator.h \
../src/LineMarker.h \
../src/Style.h \
../src/ViewStyle.h \
../src/CharClassify.h \
../src/Decoration.h \
../src/CaseFolder.h \
../src/Document.h \
../src/UniConversion.h \
../src/Selection.h \
../src/PositionCache.h \
../src/EditModel.h \
../src/MarginView.h \
../src/EditView.h
$(DIR_O)/PerLine.obj: \
../src/PerLine.cxx \
../include/ScintillaTypes.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/Position.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/CellBuffer.h \
../src/PerLine.h
$(DIR_O)/PositionCache.obj: \
../src/PositionCache.cxx \
../include/ScintillaTypes.h \
../include/ScintillaMessages.h \
../include/ILoader.h \
../include/Sci_Position.h \
../include/ILexer.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/CharacterType.h \
../src/CharacterCategoryMap.h \
../src/Position.h \
../src/UniqueString.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
../src/ContractionState.h \
../src/CellBuffer.h \
../src/KeyMap.h \
../src/Indicator.h \
../src/LineMarker.h \
../src/Style.h \
../src/ViewStyle.h \
../src/CharClassify.h \
../src/Decoration.h \
../src/CaseFolder.h \
../src/Document.h \
../src/UniConversion.h \
../src/DBCS.h \
../src/Selection.h \
../src/PositionCache.h
$(DIR_O)/RESearch.obj: \
../src/RESearch.cxx \
../src/Position.h \
../src/CharClassify.h \
../src/RESearch.h
$(DIR_O)/RunStyles.obj: \
../src/RunStyles.cxx \
../src/Debugging.h \
../src/Position.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h
$(DIR_O)/ScintillaBase.obj: \
../src/ScintillaBase.cxx \
../include/ScintillaTypes.h \
../include/ScintillaMessages.h \
../include/ScintillaStructures.h \
../include/ILoader.h \
../include/Sci_Position.h \
../include/ILexer.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/CharacterCategoryMap.h \
../src/Position.h \
../src/UniqueString.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
../src/ContractionState.h \
../src/CellBuffer.h \
../src/CallTip.h \
../src/KeyMap.h \
../src/Indicator.h \
../src/LineMarker.h \
../src/Style.h \
../src/ViewStyle.h \
../src/CharClassify.h \
../src/Decoration.h \
../src/CaseFolder.h \
../src/Document.h \
../src/Selection.h \
../src/PositionCache.h \
../src/EditModel.h \
../src/MarginView.h \
../src/EditView.h \
../src/Editor.h \
../src/AutoComplete.h \
../src/ScintillaBase.h
$(DIR_O)/Selection.obj: \
../src/Selection.cxx \
../src/Debugging.h \
../src/Position.h \
../src/Selection.h
$(DIR_O)/Style.obj: \
../src/Style.cxx \
../include/ScintillaTypes.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/Style.h
$(DIR_O)/UndoHistory.obj: \
../src/UndoHistory.cxx \
../include/ScintillaTypes.h \
../src/Debugging.h \
../src/Position.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
../src/SparseVector.h \
../src/ChangeHistory.h \
../src/CellBuffer.h \
../src/UndoHistory.h
$(DIR_O)/UniConversion.obj: \
../src/UniConversion.cxx \
../src/UniConversion.h
$(DIR_O)/UniqueString.obj: \
../src/UniqueString.cxx \
../src/UniqueString.h
$(DIR_O)/ViewStyle.obj: \
../src/ViewStyle.cxx \
../include/ScintillaTypes.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/Position.h \
../src/UniqueString.h \
../src/Indicator.h \
../src/XPM.h \
../src/LineMarker.h \
../src/Style.h \
../src/ViewStyle.h
$(DIR_O)/XPM.obj: \
../src/XPM.cxx \
../include/ScintillaTypes.h \
../src/Debugging.h \
../src/Geometry.h \
../src/Platform.h \
../src/XPM.h

View File

@ -0,0 +1,148 @@
# Make file for Scintilla on Windows Visual C++ version
# Copyright 1998-2010 by Neil Hodgson <neilh@scintilla.org>
# The License.txt file describes the conditions under which this software may be distributed.
# This makefile is for using Visual C++ with nmake.
# Usage for Microsoft:
# nmake -f scintilla.mak
# For debug versions define DEBUG on the command line:
# nmake DEBUG=1 -f scintilla.mak
# The main makefile uses mingw32 gcc and may be more current than this file.
.SUFFIXES: .cxx
DIR_O=.
DIR_BIN=..\bin
COMPONENT=$(DIR_BIN)\Scintilla.dll
LIBSCI=$(DIR_BIN)\libscintilla.lib
LD=link
!IFDEF SUPPORT_XP
ADD_DEFINE=-D_USING_V110_SDK71_
# Different subsystems for 32-bit and 64-bit Windows XP so detect based on Platform
# environment variable set by vcvars*.bat to be either x86 or x64
!IF "$(PLATFORM)" == "x64"
SUBSYSTEM=-SUBSYSTEM:WINDOWS,5.02
!ELSE
SUBSYSTEM=-SUBSYSTEM:WINDOWS,5.01
!ENDIF
!ELSE
CETCOMPAT=-CETCOMPAT
!IFDEF ARM64
ADD_DEFINE=-D_ARM64_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1
SUBSYSTEM=-SUBSYSTEM:WINDOWS,10.00
!ENDIF
!ENDIF
CRTFLAGS=$(ADD_DEFINE)
CXXFLAGS=-Zi -TP -MP -W4 -EHsc -std:c++17 -utf-8 $(CRTFLAGS)
CXXDEBUG=-Od -MTd -DDEBUG
CXXNDEBUG=-O2 -MT -DNDEBUG -GL
NAME=-Fo
LDFLAGS=-OPT:REF -LTCG -IGNORE:4197 -DEBUG $(SUBSYSTEM) $(CETCOMPAT)
LDDEBUG=
LIBS=KERNEL32.lib USER32.lib GDI32.lib IMM32.lib OLE32.lib OLEAUT32.lib ADVAPI32.lib
NOLOGO=-nologo
!IFDEF QUIET
CXX=@$(CXX)
CXXFLAGS=$(CXXFLAGS) $(NOLOGO)
LDFLAGS=$(LDFLAGS) $(NOLOGO)
!ENDIF
!IFDEF NO_CXX11_REGEX
CXXFLAGS=$(CXXFLAGS) -DNO_CXX11_REGEX
!ENDIF
!IFDEF DEBUG
CXXFLAGS=$(CXXFLAGS) $(CXXDEBUG)
LDFLAGS=$(LDDEBUG) $(LDFLAGS)
!ELSE
CXXFLAGS=$(CXXFLAGS) $(CXXNDEBUG)
!ENDIF
INCLUDES=-I../include -I../src
CXXFLAGS=$(CXXFLAGS) $(INCLUDES)
all: $(COMPONENT) $(LIBSCI)
clean:
-del /q $(DIR_O)\*.obj $(DIR_O)\*.pdb $(DIR_O)\*.asm $(COMPONENT) \
$(DIR_O)\*.res $(DIR_BIN)\*.map $(DIR_BIN)\*.exp $(DIR_BIN)\*.pdb \
$(DIR_BIN)\Scintilla.lib $(LIBSCI)
depend:
pyw DepGen.py
# Required for base Scintilla
SRC_OBJS=\
$(DIR_O)\AutoComplete.obj \
$(DIR_O)\CallTip.obj \
$(DIR_O)\CaseConvert.obj \
$(DIR_O)\CaseFolder.obj \
$(DIR_O)\CellBuffer.obj \
$(DIR_O)\ChangeHistory.obj \
$(DIR_O)\CharacterCategoryMap.obj \
$(DIR_O)\CharacterType.obj \
$(DIR_O)\CharClassify.obj \
$(DIR_O)\ContractionState.obj \
$(DIR_O)\DBCS.obj \
$(DIR_O)\Decoration.obj \
$(DIR_O)\Document.obj \
$(DIR_O)\EditModel.obj \
$(DIR_O)\Editor.obj \
$(DIR_O)\EditView.obj \
$(DIR_O)\Geometry.obj \
$(DIR_O)\Indicator.obj \
$(DIR_O)\KeyMap.obj \
$(DIR_O)\LineMarker.obj \
$(DIR_O)\MarginView.obj \
$(DIR_O)\PerLine.obj \
$(DIR_O)\PositionCache.obj \
$(DIR_O)\RESearch.obj \
$(DIR_O)\RunStyles.obj \
$(DIR_O)\Selection.obj \
$(DIR_O)\Style.obj \
$(DIR_O)\UndoHistory.obj \
$(DIR_O)\UniConversion.obj \
$(DIR_O)\UniqueString.obj \
$(DIR_O)\ViewStyle.obj \
$(DIR_O)\XPM.obj
COMPONENT_OBJS = \
$(DIR_O)\HanjaDic.obj \
$(DIR_O)\PlatWin.obj \
$(DIR_O)\ScintillaBase.obj \
$(DIR_O)\ScintillaWin.obj \
$(SRC_OBJS)
SHARED_OBJS = \
$(DIR_O)\ScintillaDLL.obj
$(DIR_O)\ScintRes.res : ScintRes.rc
$(RC) -fo$@ $**
$(COMPONENT): $(COMPONENT_OBJS) $(SHARED_OBJS) $(DIR_O)\ScintRes.res
$(LD) $(LDFLAGS) -DEF:Scintilla.def -DLL -OUT:$@ $** $(LIBS)
$(LIBSCI): $(COMPONENT_OBJS)
LIB /OUT:$@ $**
# Define how to build all the objects and what they depend on
{..\src}.cxx{$(DIR_O)}.obj::
$(CXX) $(CXXFLAGS) -c $(NAME)$(DIR_O)\ $<
{.}.cxx{$(DIR_O)}.obj::
$(CXX) $(CXXFLAGS) -c $(NAME)$(DIR_O)\ $<
# Dependencies
!IF EXISTS(nmdeps.mak)
# Protect with !IF EXISTS to handle accidental deletion - just 'nmake -f scintilla.mak depend'
!INCLUDE nmdeps.mak
!ENDIF