Compare commits

..

No commits in common. "master" and "v8.1.1" have entirely different histories.

2280 changed files with 222672 additions and 378965 deletions

View File

@ -1,79 +0,0 @@
name: Bug
description: File a bug/issue
title: "[BUG] <title>"
#labels: ["bug"]
body:
- type: checkboxes
attributes:
label: Is there an existing issue for this?
description: |
Please search to see if an issue already exists for the bug you encountered.
If the issue is for a plugin (except for mimeTools, NppConverter, and NppExport),
report it to the plugin author rather than here.
options:
- label: I have searched the existing issues
required: true
- type: textarea
attributes:
label: Description of the Issue
description: Provide a concise description to the issue itself.
validations:
required: true
- type: textarea
attributes:
label: Steps To Reproduce
description: Steps to reproduce the behavior.
placeholder: |
1.
2.
3.
...
value: |
1.
2.
3.
validations:
required: true
- type: textarea
attributes:
label: Current Behavior
description: What you're experiencing.
validations:
required: true
- type: textarea
attributes:
label: Expected Behavior
description: What did you expect to happen.
validations:
required: true
- type: textarea
attributes:
label: Debug Information
description: |
In your Notepad++, click on the "?" menu (found to the right of "Window" in the menu bar).
In the menu that drops down, choose "Debug Info...".
A dialog will open detailing specifics about your Notepad++ version, plugins, etc.
CLICK ON THE BUTTON "Copy debug info into clipboard".
Do a PASTE HERE
render: shell
validations:
required: true
- type: textarea
attributes:
label: Anything else?
description: |
Links? References? Anything that will give us more context about the issue you are encountering!
If feasible, try launching Notepad++ without any plugins.
Some updates to Notepad++ modify communication rules used by plugins,
and if plugin developers do not keep their plugins in sync with these changes, issues may arise.
Running without plugins can help diagnose specific problems.
Notepad++ relies on the Lexilla and Scintilla libraries.
For more details, visit https://github.com/ScintillaOrg/lexilla and https://sourceforge.net/p/scintilla.
Consider using the reference program SciTE to verify whether the issue is a genuine bug in Notepad++.
Download Scite from here https://www.scintilla.org/SciTEDownload.html.
Tip: You can attach images or relevant text files by clicking this area to highlight it and then dragging files in.
validations:
required: false

View File

@ -1,52 +0,0 @@
name: Feature request
description: Suggest an idea for Notepad++
title: "[Feature request] <title>"
#labels: ["feature"]
body:
- type: checkboxes
attributes:
label: Is there an existing issue for this?
description: Please search to see if an issue already exists for the feature you request.
options:
- label: I have searched the existing issues
required: true
- type: textarea
attributes:
label: Description of the Issue
description: A clear and concise description of what the problem is.
validations:
required: true
- type: textarea
attributes:
label: Describe the solution you'd like.
description: A clear and concise description of what you want to happen.
validations:
required: true
- type: textarea
attributes:
label: Debug Information
description: |
In your Notepad++, click on the "?" menu (found to the right of "Window" in the menu bar).
In the menu that drops down, choose "Debug Info...".
A dialog will open detailing specifics about your Notepad++ version, plugins, etc.
CLICK ON THE BUTTON "Copy debug info into clipboard".
Do a PASTE HERE
render: shell
validations:
required: true
- type: textarea
attributes:
label: Anything else?
description: |
Links? References? Anything that will give us more context about the feature you want!
Notepad++ relies on the Lexilla and Scintilla libraries.
For more details, visit https://github.com/ScintillaOrg/lexilla and https://sourceforge.net/p/scintilla.
If you have specific language feature requests, consider using the reference program SciTE to verify whether the desired feature is supported.
You can download SciTE from here https://www.scintilla.org/SciTEDownload.html.
If you have any questions about Notepad++ usage, explore the community forum https://community.notepad-plus-plus.org/category/7/faq.
Tip: You can attach images by clicking this area to highlight it and then dragging files in.
validations:
required: false

View File

@ -1 +0,0 @@
blank_issues_enabled: true

View File

@ -1,13 +0,0 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
# Maintain dependencies for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "monthly"

View File

@ -1,387 +0,0 @@
name: CI_build
on: [push, pull_request]
env:
PYTHON_ALLOW_CACHE: true
PYTHON_DIR_CACHE: D:\.cache\python
jobs:
before_build:
runs-on: windows-latest
outputs:
result: ${{ steps.filter.outputs.result }}
matrix: ${{ steps.filter.outputs.matrix }}
title: ${{ steps.filter.outputs.title }}
python: ${{ steps.filter.outputs.python }}
steps:
- name: Checkout repo
uses: actions/checkout@v4
with:
fetch-depth: ${{ github.event_name == 'pull_request' && 2 || 0 }}
- name: Commit filtering
id: filter
run: |
$allowMaster = $true
$folders_onejob = "PowerEditor/(Test|(installer/(filesForTesting|functionList)))/"
$folders_nowork = "\.github/ISSUE_TEMPLATE"
$files_nowork = "md|txt|log|ini"
$files_needwork = "CMakeLists\.txt"
$matrix_all = 'matrix={"build_configuration": ["Release", "Debug"], "build_platform": ["x64", "Win32", "ARM64"]}'
$matrix_onejob = 'matrix={"build_configuration": ["Debug"], "build_platform": ["Win32"]}'
Write-Output $matrix_all >> $env:GITHUB_OUTPUT
$isPush = "${{github.event_name }}" -eq "push" ? $true : $false
$isMaster = $isPush -and $${{ github.ref_name == github.event.repository.master_branch }}
$commit_message = $isPush ? (git show -s --format=%B) : (git log -1 --no-merges --pretty=%B)
$commit_title = ($commit_message -split "[\r\n]+")[0]
Write-Output "title=$commit_title" >> $env:GITHUB_OUTPUT
$files_modified = @(git diff --name-only HEAD~1)
$files_needwork_all = @($files_modified | Where-Object {$_ -notmatch "\.(xml|$files_nowork)$|$folders_nowork|$folders_onejob" -or $_ -match "($files_needwork)$"})
if ($allowMaster -or !$isMaster) {
if ($commit_title -match "\[force all\]") {
Write-Output "Run standard jobs"
}
elseif ($commit_title -match "\[force one\]") {
Write-Output "Run only one Win32/Debug job"
Write-Output "result=ONEJOB" >> $env:GITHUB_OUTPUT
Write-Output $matrix_onejob >> $env:GITHUB_OUTPUT
}
elseif (($files_modified.length -gt 0 -and $files_needwork_all.length -eq 0) -or $commit_title -match "\[force (xml|none)\]") {
if (@($files_modified | Where-Object {$_ -notmatch "\.($files_nowork)$|$folders_nowork"}).length -eq 0 -or $commit_title -match "\[force none\]") {
Write-Output "Changed files on this commit don't require any additional tasks.`n"
Write-Output "result=OK" >> $env:GITHUB_OUTPUT
Write-Output "PYTHON_ALLOW_CACHE=false" >> $env:GITHUB_ENV
Exit
}
else {
Write-Output "Run only XML validation step"
if (@($files_modified | Where-Object {$_ -match $folders_onejob}).length -eq 0) {
Write-Output "result=XML" >> $env:GITHUB_OUTPUT
}
else {
Write-Output "Run only one Win32/Debug job"
Write-Output "result=ONEJOB" >> $env:GITHUB_OUTPUT
Write-Output $matrix_onejob >> $env:GITHUB_OUTPUT
}
}
}
else {
Write-Output "Run standard jobs"
}
}
else {
Write-Output "Run standard jobs"
}
if ($commit_title -match "\[force nopythoncache\]") {
$env:PYTHON_ALLOW_CACHE = "false"
Write-Output "PYTHON_ALLOW_CACHE=false" >> $env:GITHUB_ENV
}
if ($Env:PYTHON_ALLOW_CACHE -eq "true") {
$python = ((python -V) -split " ")[1]
$requests = (Invoke-RestMethod https://pypi.org/pypi/requests/json).info.version
$rfc3987 = (Invoke-RestMethod https://pypi.org/pypi/rfc3987/json).info.version
$pywin32 = (Invoke-RestMethod https://pypi.org/pypi/pywin32/json).info.version
$lxml = (Invoke-RestMethod https://pypi.org/pypi/lxml/json).info.version
$key = "${{ runner.os }}-python_$python-requests_$requests-rfc3987_$rfc3987-pywin32_$pywin32-lxml_$lxml"
Write-Output "python=$key" >> $env:GITHUB_OUTPUT
}
- name: (cache) Lookup Python modules
if: env.PYTHON_ALLOW_CACHE == 'true'
uses: actions/cache/restore@v4
id: cache-lookup
with:
path: ${{ env.PYTHON_DIR_CACHE }}
key: ${{ steps.filter.outputs.python }}
lookup-only: true
- name: (cache) Restore Python modules
if: env.PYTHON_ALLOW_CACHE == 'true' && steps.filter.outputs.result == 'XML' && steps.cache-lookup.outputs.cache-hit == 'true'
uses: actions/cache/restore@v4
with:
path: ${{ env.PYTHON_DIR_CACHE }}
key: ${{ steps.filter.outputs.python }}
- name: (cache) Install Python modules
if: env.PYTHON_ALLOW_CACHE == 'true' && steps.cache-lookup.outputs.cache-hit != 'true'
run: |
python -m pip install --target ${{ env.PYTHON_DIR_CACHE }} requests rfc3987 pywin32 lxml
- name: (cache) Save Python modules
if: env.PYTHON_ALLOW_CACHE == 'true' && steps.cache-lookup.outputs.cache-hit != 'true' && github.event_name == 'push'
uses: actions/cache/save@v4
with:
path: ${{ env.PYTHON_DIR_CACHE }}
key: ${{ steps.filter.outputs.python }}
- name: XML validation
if: steps.filter.outputs.result == 'XML'
run: |
if ($Env:PYTHON_ALLOW_CACHE -eq "true" -and (Test-Path -Path ${{ env.PYTHON_DIR_CACHE }})) {
$Env:PYTHONPATH = "${{ env.PYTHON_DIR_CACHE }}"
}
else {
python -m pip install requests rfc3987 pywin32 lxml
}
python PowerEditor\Test\xmlValidator\validator_xml.py
if ($LastExitCode -eq 0) {
Write-Output "`nAll XML files are valid.`n"
}
else {
Write-Output "`nSome XML files are invalid.`n"
$host.SetShouldExit($LastExitCode)
}
build_windows:
runs-on: windows-latest
needs: before_build
if: needs.before_build.outputs.result == '' || needs.before_build.outputs.result == 'ONEJOB'
strategy:
fail-fast: false
matrix: ${{ fromJSON(needs.before_build.outputs.matrix) }}
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2
- name: Modify resource.h N++ version to avoid confusion
working-directory: PowerEditor\src\
run: |
$content = Get-Content -Path 'resource.h'
$newContent = $content -replace 'TEXT\(\"Notepad\+\+ v.*\"\)', 'TEXT("Notepad++ GH_BUILD")'
$newContent | Set-Content -Path 'resource.h'
- name: MSBuild of n++ exe
working-directory: PowerEditor\visual.net\
run: msbuild notepadPlus.sln /m /p:configuration="${{ matrix.build_configuration }}" /p:platform="${{ matrix.build_platform }}" /p:PlatformToolset="v143"
- name: Archive artifacts for x64 / Release
if: matrix.build_platform == 'x64' && matrix.build_configuration == 'Release'
uses: actions/upload-artifact@v4
with:
name: Notepad++.MSVC.${{ matrix.build_platform}}.${{ matrix.build_configuration}}
path: PowerEditor\bin64\Notepad++.exe
- name: Archive artifacts for Win32 / Release
if: matrix.build_platform == 'Win32' && matrix.build_configuration == 'Release'
uses: actions/upload-artifact@v4
with:
name: Notepad++.MSVC.${{ matrix.build_platform}}.${{ matrix.build_configuration}}
path: PowerEditor\bin\Notepad++.exe
- name: Archive artifacts for ARM64 / Release
if: matrix.build_platform == 'ARM64' && matrix.build_configuration == 'Release'
uses: actions/upload-artifact@v4
with:
name: Notepad++.MSVC.${{ matrix.build_platform}}.${{ matrix.build_configuration}}
path: PowerEditor\binarm64\Notepad++.exe
- name: Archive artifacts for ARM64|x64 / Debug
if: (matrix.build_platform == 'ARM64' || matrix.build_platform == 'x64') && matrix.build_configuration == 'Debug'
uses: actions/upload-artifact@v4
with:
name: Notepad++.MSVC.${{ matrix.build_platform}}.${{ matrix.build_configuration}}
path: PowerEditor\visual.net\${{ matrix.build_platform}}\${{ matrix.build_configuration}}\Notepad++.exe
- name: Archive artifacts for Win32 / Debug
if: matrix.build_platform == 'Win32' && matrix.build_configuration == 'Debug'
uses: actions/upload-artifact@v4
with:
name: Notepad++.MSVC.${{ matrix.build_platform}}.${{ matrix.build_configuration}}
path: PowerEditor\visual.net\${{ matrix.build_configuration}}\Notepad++.exe
- name: (cache) Restore Python modules for Win32 / Debug
if: matrix.build_platform == 'Win32' && matrix.build_configuration == 'Debug' && env.PYTHON_ALLOW_CACHE == 'true' && contains(needs.before_build.outputs.title, '[force nopythoncache]') != true
uses: actions/cache/restore@v4
with:
path: ${{ env.PYTHON_DIR_CACHE }}
key: ${{ needs.before_build.outputs.python }}
- name: Run xml validation test for Win32 / Debug only
if: matrix.build_platform == 'Win32' && matrix.build_configuration == 'Debug'
working-directory: .\
run: |
if ($Env:PYTHON_ALLOW_CACHE -eq "true" -and $${{ !contains(needs.before_build.outputs.title, '[force nopythoncache]') }} -and (Test-Path -Path ${{ env.PYTHON_DIR_CACHE }})) {
$Env:PYTHONPATH = "${{ env.PYTHON_DIR_CACHE }}"
}
else {
python -m pip install requests rfc3987 pywin32 lxml
}
python PowerEditor\Test\xmlValidator\validator_xml.py
- name: Run FunctionList and UrlDetection Tests for Win32 / Debug only
if: matrix.build_platform == 'Win32' && matrix.build_configuration == 'Debug'
working-directory: .\
run: |
Copy-Item "PowerEditor\visual.net\Debug\Notepad++.exe" -Destination "PowerEditor\bin"
Copy-Item "PowerEditor\src\langs.model.xml" -Destination "PowerEditor\bin"
Copy-Item "PowerEditor\src\stylers.model.xml" -Destination "PowerEditor\bin"
Copy-Item "PowerEditor\src\shortcuts.xml" -Destination "PowerEditor\bin"
Copy-Item "PowerEditor\src\contextMenu.xml" -Destination "PowerEditor\bin"
Copy-Item "PowerEditor\installer\functionList" -Destination "PowerEditor\bin" -Recurse
Copy-Item "PowerEditor\installer\filesForTesting\regexGlobalTest.xml" -Destination "PowerEditor\bin\functionList"
Copy-Item "PowerEditor\installer\filesForTesting\overrideMap.xml" -Destination "PowerEditor\bin\functionList"
cd .\PowerEditor\Test\FunctionList\
.\unitTestLauncher.ps1
if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
cd ..\UrlDetection
.\verifyUrlDetection.ps1
# build_windows_clang:
# runs-on: windows-latest
#needs: before_build
#if: needs.before_build.outputs.result == ''
# strategy:
# matrix:
# build_configuration: [Release]
# build_platform: [x64]
# steps:
# - name: Checkout repo
# uses: actions/checkout@v4
# - name: Add msbuild to PATH
# uses: microsoft/setup-msbuild@v2
# - name: Modify resource.h N++ version to avoid confusion
# working-directory: PowerEditor\src\
# run: |
# $content = Get-Content -Path 'resource.h'
# $newContent = $content -replace 'TEXT\(\"Notepad\+\+ v.*\"\)', 'TEXT("Notepad++ GH_BUILD")'
# $newContent | Set-Content -Path 'resource.h'
# - name: MSBuild of n++ exe
# working-directory: PowerEditor\visual.net\
# run: msbuild notepadPlus.sln /m /p:configuration="${{ matrix.build_configuration }}" /p:platform="${{ matrix.build_platform }}" /p:PlatformToolset="ClangCL"
build_windows_cmake:
runs-on: windows-latest
needs: before_build
if: needs.before_build.outputs.result == ''
strategy:
matrix:
include:
- build_configuration: Release
build_platform: x64
arch: amd64
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2
- name: Modify resource.h N++ version to avoid confusion
working-directory: PowerEditor\src\
run: |
$content = Get-Content -Path 'resource.h'
$newContent = $content -replace 'TEXT\(\"Notepad\+\+ v.*\"\)', 'TEXT("Notepad++ GH_BUILD")'
$newContent | Set-Content -Path 'resource.h'
- name: Add nmake to PATH
uses: ilammy/msvc-dev-cmd@v1
with:
arch: ${{ matrix.arch }}
- name: build scintilla
working-directory: scintilla/win32/
run: |
nmake -f scintilla.mak
- name: build lexilla
working-directory: lexilla/src/
run: |
nmake -f lexilla.mak
- name: generate cmake
working-directory: PowerEditor/src
run: |
mkdir _build
cd _build
cmake -G "Visual Studio 17 2022" -A ${{ matrix.build_platform }} -T "v143" ..
- name: build cmake
working-directory: PowerEditor/src
run: |
cd _build
cmake --build . --config ${{ matrix.build_configuration }}
build_windows_msys2:
runs-on: windows-latest
needs: before_build
if: needs.before_build.outputs.result == ''
strategy:
fail-fast: false
matrix:
build_configuration: [Release, Debug]
build_platform: [x86_64, i686]
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Modify resource.h N++ version to avoid confusion
working-directory: PowerEditor\src\
shell: pwsh
run: |
$content = Get-Content -Path 'resource.h'
$newContent = $content -replace 'TEXT\(\"Notepad\+\+ v.*\"\)', 'TEXT("Notepad++ GH_BUILD")'
$newContent | Set-Content -Path 'resource.h'
- name: Make n++ exe
working-directory: .\
run: |
Write-host "${{ matrix.build_platform }}"
Write-host "${{ matrix.build_configuration }}"
$Env:Path = 'C:\msys64\usr\bin' + [IO.Path]::PathSeparator + $Env:Path
if ( $${{ matrix.build_platform == 'i686'}} ) {$Env:MSYSTEM = 'MINGW32'}
if ( $${{ matrix.build_platform == 'i686'}} ) {$Env:Path = 'C:\msys64\mingw32\bin' + [IO.Path]::PathSeparator + $Env:Path}
if ( $${{ matrix.build_platform == 'x86_64'}} ) {$Env:MSYSTEM = 'MINGW64'}
if ( $${{ matrix.build_platform == 'x86_64'}} ) {$Env:Path = 'C:\msys64\mingw64\bin' + [IO.Path]::PathSeparator + $Env:Path}
if ( $${{ matrix.build_configuration == 'Debug'}} ) {$Env:DEBUG = '1'}
bash -lc "pacman --noconfirm -Syuu"
bash -lc "pacman --noconfirm -Syuu"
if ( $${{ matrix.build_platform == 'i686'}} ) {bash -lc "pacman --noconfirm -S mingw-w64-i686-gcc mingw-w64-i686-make"}
if ( $${{ matrix.build_platform == 'x86_64'}} ) {bash -lc "pacman --noconfirm -S mingw-w64-x86_64-gcc mingw-w64-x86_64-make"}
Write-Output "Tools version:"
Write-Output (((gcc --version) | select-object -first 1) + " " + (gcc -dumpmachine))
Write-Output (mingw32-make --version) | select-object -first 1
Write-Output (sh --version) | select-object -first 1
mingw32-make -f PowerEditor\gcc\makefile
- name: Archive artifacts for ${{ matrix.build_platform}} / Release
if: matrix.build_configuration == 'Release'
uses: actions/upload-artifact@v4
with:
name: Notepad++.GCC.${{ matrix.build_platform}}.${{ matrix.build_configuration}}
path: bin.${{ matrix.build_platform}}\notepad++.exe
- name: Archive artifacts for ${{ matrix.build_platform}} / Debug
if: matrix.build_configuration == 'Debug'
uses: actions/upload-artifact@v4
with:
name: Notepad++.GCC.${{ matrix.build_platform}}.${{ matrix.build_configuration}}
path: bin.${{ matrix.build_platform}}-debug\notepad++.exe

View File

@ -1,69 +0,0 @@
name: Plugin Files Release Notifier
on:
push:
branches: 'master'
workflow_dispatch:
jobs:
release-notifier:
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Get changes
run: |
$any_changed = $false
$watch_files = @(
"scintilla/include/Scintilla.h",
"scintilla/include/Sci_Position.h",
"PowerEditor/src/MISC/PluginsManager/Notepad_plus_msgs.h",
"PowerEditor/src/MISC/PluginsManager/PluginInterface.h",
"PowerEditor/src/menuCmdID.h",
"PowerEditor/src/WinControls/DockingWnd/Docking.h",
"PowerEditor/src/WinControls/DockingWnd/dockingResource.h"
)
if("${{ github.event_name }}" -eq "workflow_dispatch") {
#Write-Output "non-push: use HEAD~1..HEAD, which isn't as specific, but better than nothing"
$changed_files = @( git diff --name-only HEAD~1..HEAD )
} else {
#Write-Output "for-push: use before/after"
$changed_files = @( git diff --name-only ${{ github.event.before }} ${{ github.event.after }} )
}
foreach ($this_file in $changed_files) {
#Write-Output "the following is different: $this_file"
if( $this_file -in $watch_files ) {
Write-Output "+ Saw changes in: $this_file"
$any_changed = $true
}
}
if($any_changed) {
$map = @(
@( "${{ secrets.PAT_NOTIFY_NPPPLUGINS }}", "npp-plugins/plugintemplate", "CI_update_remote.yml" ),
@( "${{ secrets.PAT_NOTIFY_NPPPLUGINS }}", "npp-plugins/plugindemo", "CI_update_remote.yml" )
)
foreach ($target in $map) {
$pat = $target[0]
$ref = $target[1]
$yml = $target[2]
# Write-Output "DEBUG: len(pat)='$($pat.Length)' ref='$ref' len(ref)=$($ref.Length) yml='$yml' len(yml)=$($yml.Length): 'https://api.github.com/repos/$ref/actions/workflows/$yml/dispatches'"
Write-Output "Notifying '$ref' workflow '$yml' using curl 'https://api.github.com/repos/$ref/actions/workflows/$yml/dispatches'."
curl -s -L `
-X POST `
-H "Accept: application/vnd.github+json" `
-H "Authorization: Bearer $pat" `
-H "X-GitHub-Api-Version: 2022-11-28" `
https://api.github.com/repos/$ref/actions/workflows/$yml/dispatches `
-d "{`"ref`": `"${{ github.ref_name }}`", `"inputs`": {}}"
# NOTE: if there is a problem with the curl call, there will be a message in the workflow output,
# but the workflow will not fail, so that the Notepad++ build will not fail; we do our best to notify,
# but we don't want a problem with another repo holding up a N++ fix.
}
} else {
Write-Output "No watched-files changed, so not sending notification to plugin templates this time."
}

31
.gitignore vendored
View File

@ -17,7 +17,6 @@ x86/
#-- Visual C++ cache files
.vs/
.vscode/
ipch/
*.aps
*.ncb
@ -37,7 +36,6 @@ UpgradeLog*.htm
*_p.c
*.ilk
*.meta
*.exe
*.obj
*.pch
#*.pdb
@ -54,12 +52,9 @@ UpgradeLog*.htm
.builds
*.pidb
*.vcxproj.filters
*.bak
PowerEditor/bin/notepad++.exe
PowerEditor/bin/Notepad++.exp
PowerEditor/bin/Notepad++.lib
PowerEditor/bin/NppShell.x86.dll
PowerEditor/bin/SciLexer.dll
PowerEditor/bin/config.xml
PowerEditor/bin/stylers.xml
PowerEditor/bin/langs.xml
@ -89,31 +84,27 @@ PowerEditor/installer/zipped.package.release64/
PowerEditor/installer/zipped.package.releaseArm64/
PowerEditor/visual.net/Unicode Debug/
PowerEditor/visual.net/Unicode Release/
PowerEditor/visual.net/Debug/
PowerEditor/visual.net/Release/
PowerEditor/visual.net/notepadPlus.sln
PowerEditor/visual.net/notepadPlus.vcxproj.filters
PowerEditor/visual.net/x64/Unicode Debug/
PowerEditor/visual.net/x64/Unicode Release/
PowerEditor/visual.net/x64/Debug/
PowerEditor/visual.net/x64/Release/
PowerEditor/visual.net/ARM64
PowerEditor/src/tools/NppShell/build_ARM64
PowerEditor/src/tools/NppShell/build_Win32
PowerEditor/src/tools/NppShell/build_x64
PowerEditor/src/NppLibsVersion.h
# scintilla - generated files
scintilla/bin/SciLexer.*
scintilla/bin/Scintilla.*
scintilla/bin/libscilexer.a
scintilla/bin/libscintilla.a
scintilla/bin/libscintilla.lib
scintilla/win32/*.lib
scintilla/win32/Lexers.a
scintilla/win32/ScintRes.res
scintilla/win32/ARM64
scintilla/win32/Unicode Release/
scintilla/win32/Unicode Debug/
scintilla/win32/Release/
scintilla/win32/Debug/
scintilla/boostregex/bin
scintilla/boostregex/boostpath.mak
@ -155,11 +146,19 @@ PowerEditor/bin/SourceCodePro-Regular.ttf
*.zip
#-------------------------------------------------------------------------------
# MinGW-w64 GCC
# GNU GCC MinGW
bin.*
scintilla/win32/*.o
#-- Generated during makefile build
*.d
*.o
/PowerEditor/gcc/resources.res
/PowerEditor/bin/NotepadPP.exe
/PowerEditor/bin/NotepadPP.exe_dynamic
#-- Generated manually to make Notepad++ execute properly on Linux using Wine
/PowerEditor/bin/libgcc_s_sjlj-1.dll
/PowerEditor/bin/libstdc++-6.dll
/PowerEditor/bin/libwinpthread-1.dll
PowerEditor/src/MISC/md5/RCa06792
*.db

View File

@ -1,74 +1,68 @@
# Building Notepad++
## Microsoft Visual Studio
How to build Notepad++
----------------------
**Pre-requisites:**
- Microsoft Visual Studio 2022 version 17.5 (C/C++ Compiler, v143 toolset for win32, x64, arm64)
- Microsoft Visual Studio 2017 (C/C++ Compiler, v141 toolset for win32, x64, arm64)
There are three components which are built from one visual studio solution:
There are two components which are built from one visual studio solution:
- `notepad++.exe`: (contains `libSciLexer.lib`)
- `libScintilla.lib` : static library based on [Scintilla](https://www.scintilla.org/)
- `libLexilla.lib` : static library based on [Lexilla](https://www.scintilla.org/Lexilla.html)
- `notepad++.exe`: (contains `libSciLexer.lib`)
- `libSciLexer.lib` : static library based on Scintilla
Notepad++ is always built **with** Boost regex PCRE support instead of default c++11 regex ECMAScript used by plain Scintilla.
Notepad++ is always built **with** Boost regex PCRE support instead of default c++11 regex ECMAScript used by plain Scintilla\SciLexer.
### Build `notepad++.exe`
## Build `notepad++.exe`:
1. Open [`PowerEditor\visual.net\notepadPlus.sln`](https://github.com/notepad-plus-plus/notepad-plus-plus/blob/master/PowerEditor/visual.net/notepadPlus.sln)
2. Select a solution configuration (Debug or Release) and a solution platform (x64 or Win32 or ARM64)
3. Build Notepad++ solution like a normal Visual Studio project. This will also build the dependent Scintilla and Lexilla projects.
2. Select a solution configuration (Unicode Debug or Unicode Release) and a solution platform (x64 or Win32 or ARM64)
3. Build Notepad++ solution like a normal Visual Studio project. This will also build the dependent SciLexer project.
### Build `libScintilla.lib` and `libLexilla.lib`
## Build `libSciLexer.lib`:
As mentioned above, you'll need `libScintilla.lib` and `libLexilla.lib` for the Notepad++ build. This is done automatically on building the whole solution. So normally you don't need to care about this.
As mentioned above, you'll need `libSciLexer.lib` for the Notepad++ build. This is done automatically on building the whole solution. So normally you don't need to care about this.
#### Build `libScintilla.lib` with boost and `libLexilla.lib` via nmake
### Build `libSciLexer.lib` with boost via nmake:
This is not necessary any more and just here for completeness as this option is still available.
Boost is taken from [boost 1.85.0](https://www.boost.org/users/history/version_1_85_0.html) and stripped down to the project needs available at [boost](https://github.com/notepad-plus-plus/notepad-plus-plus/tree/master/boostregex/boost) in this repo.
Boost is taken from [boost 1.76.0](https://www.boost.org/users/history/version_1_76_0.html) and stripped down to the project needs available at [boost](https://github.com/notepad-plus-plus/notepad-plus-plus/tree/master/boostregex/boost) in this repo.
1. Open the Developer Command Prompt for Visual Studio
2. Go into the [`scintilla\win32\`](https://github.com/notepad-plus-plus/notepad-plus-plus/blob/master/scintilla/win32/)
2. Go into the `scintilla\win32\`
3. Build the same configuration as notepad++:
- Release: `nmake -f scintilla.mak`
- Debug: `nmake DEBUG=1 -f scintilla.mak`
- Example:
- Example:
`nmake -f scintilla.mak`
4. Go into the [`lexilla\src\`](https://github.com/notepad-plus-plus/notepad-plus-plus/tree/master/lexilla/src/)
5. Build the same configuration as notepad++:
- Release: `nmake -f lexilla.mak`
- Debug: `nmake DEBUG=1 -f lexilla.mak`
### History
More about the previous build process: <https://community.notepad-plus-plus.org/topic/13959/building-notepad-with-visual-studio-2015-2017>
## History:
More about the previous build process: https://community.notepad-plus-plus.org/topic/13959/building-notepad-with-visual-studio-2015-2017
Since `Notepad++` version 6.0 - 7.9.5, the build of dynamic linked `SciLexer.dll` that is distributed
uses features from Boost's `Boost.Regex` library.
## GCC
## Build 64 bits binaries with GCC:
If you have [MinGW-w64](https://www.mingw-w64.org/) installed, you can compile Notepad++ with GCC. Otherwise MinGW-w64 can be downloaded [here](https://sourceforge.net/projects/mingw-w64/files/). You can also download some collection of tools which supports MinGW-w64, like [MSYS2](https://www.msys2.org/) or [WinLibs](https://winlibs.com/).
If you have installed [MinGW-w64](https://mingw-w64.org/doku.php/start), then you can compile Notepad++ & libscilexer.a 64 bits binaries with GCC.
Building Notepad++ is regularly tested on a Windows system by using [MSYS2](https://www.msys2.org/) project. Current versions of tools used to building (such as GCC, Clang, Make or Bash) can be checked by looking at some logs from the finished building (for example in the [current-build page](https://github.com/notepad-plus-plus/notepad-plus-plus/actions/workflows/CI_build.yml). Other versions may also work but are untested.
* Compile libscilexer.a
**Note:** Before building make sure that the system `PATH` environment variable contains `$MinGW-root$\bin` directory. Otherwise you have to set this directory yourself in Windows settings. You can also use a command like `set PATH=$MinGW-root$\bin;%PATH%` each time `cmd` is launched. But beware that if `PATH` contains several versions of MinGW-w64 GCC, only the first one will be usable.
1. Launch cmd.
2. Change dir into `notepad-plus-plus\scintilla\win32`.
3. Type `mingw32-make.exe -j%NUMBER_OF_PROCESSORS%`
4. `libscilexer.a` is generated in `notepad-plus-plus\scintilla\bin\`.
### Compiling Notepad++ binary
* Compile Notepad++ binary
1. Launch `cmd` and add `$MinGW-root$\bin` to `PATH` if necessary.
2. `cd` into `notepad-plus-plus\PowerEditor\gcc`.
3. Run `mingw32-make`.
4. The 32-bit or 64-bit `notepad++.exe` will be generated either in `bin.i686` or in `bin.x86_64` directory respectively, depending on the target CPU of the compiler — look for the full path to the resulting binary at the end of the build process.
1. Launch cmd.
2. Change dir into `notepad-plus-plus\PowerEditor\gcc`.
3. Type `mingw32-make.exe -j%NUMBER_OF_PROCESSORS%`
4. `NotepadPP.exe` is generated in `notepad-plus-plus\PowerEditor\bin\`.
#### Some additional information
- The directory containing `notepad++.exe` will also contain everything needed for Notepad++ to start.
- To have a debug build just add `DEBUG=1` to the `mingw32-make` invocation above. The output directory then will be suffixed with `-debug`.
- To see commands being executed add `VERBOSE=1` to the same command.
- When a project is built outside of the `PowerEditor/gcc` directory, for example when using `-f` option, then the entire project path must not contain any spaces. Additionally, the path to `makefile` of this project should be listed as first.
- When a project is built through MinGW-w64 with multilib support, a specific target can be forced by passing `TARGET_CPU` variable with `x86_64` or `i686` as value.
- To use Clang instead of GCC for compilation provide `CXX` variable with `clang++` as value.
- To use [Clang analyzer](https://clang-analyzer.llvm.org/) together with Clang provide `CLANGANALYZE=1` to the `mingw32-make` invocation.
You can download MinGW-w64 from https://sourceforge.net/projects/mingw-w64/files/. On Notepad++ Github page (this project), the build system use [MinGW 8.1](https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threads-posix/seh/x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z).
Note 1: if you use MinGW from the package (7z), you need manually add the MinGW/bin folder path to system Path variable to make mingw32-make.exe invoke works (or you can use command :`set PATH=%PATH%;C:\xxxx\mingw64\bin` for adding it on each time you launch cmd).
Note 2: For 32-bit build, https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/8.1.0/threads-posix/sjlj/i686-8.1.0-release-posix-sjlj-rt_v6-rev0.7z could be used. The rest of the instructions are still valid.

View File

@ -4,25 +4,30 @@
## Reporting Issues
Bug reports are appreciated. Following a few guidelines listed below will help speed up the process of getting them fixed.
Bug reports are appreciated. Following a few guidelines listed below will help speed up the process of getting them fixed.
1. Search the issue tracker to see if it has already been reported.
2. Disable your plugins to see if one of them is the problem. You can do this by renaming your `plugins` folder to something else.
3. Only report an issue with a plugin if it is one of the standard plugins included in the Notepad++ installation. Any other plugin issue should be reported to its respective issue tracker (see e.g. [plugin_list_x86.md](https://github.com/notepad-plus-plus/nppPluginList/blob/master/doc/plugin_list_x86.md) or [plugin_list_x64.md](https://github.com/notepad-plus-plus/nppPluginList/blob/master/doc/plugin_list_x64.md) to find the homepage with further information on that for a plugins). The standard plugins include (for v7.9.5):
3. Only report an issue with a plugin if it is one of the standard plugins included in the Notepad++ installation. Any other plugin issue should be reported to its respective issue tracker (see e.g. [plugin_list_x86.md](https://github.com/notepad-plus-plus/nppPluginList/blob/master/doc/plugin_list_x86.md) or [plugin_list_x64.md](https://github.com/notepad-plus-plus/nppPluginList/blob/master/doc/plugin_list_x64.md) to find the homepage with further informations on that for a plugins). The standard plugins include (for v7.9.5):
* NppExport
* Converter
* mimeTools
4. Fill the complete information: a template will be shown when you create an issue. Please fill the complete information in the template. To fill the field **Debug Information** you can get it from your Notepad++ via menu `?>Debug Info...`. Please take your time to fill these information. If you don't bother to complete the information we need to help you, we won't bother to solve your problem either.
4. Include additional information such as:
* A detailed explanation
* Notepad++ Debug-Info containing:
* Operating System version
* Notepad++ version
* List of installed plugins (if it is related to a plugin)
* Screen shots (if applicable)
* ...and any other relevant information
## Pull Requests
*The first rule of Notepad++ is: you do not ask for permission to contribute.*<br/>
*The second rule of Notepad++ is: you DO NOT ask for permission to contribute.*
Just do your contribution if you have something to offer, and your pull requests are welcome.<br/>
However, they may not be accepted for various reasons. If you want to make some GUI enhancement like renaming some graphic items or fixing typos, please create the issue instead of the pull requests. All Pull Requests, except for translations and user documentation, need to be attached to a issue on GitHub. For Pull Requests regarding enhancements and questions, the issue must first be approved by one of project's administrators before being merged into the project. An approved issue will have the label `Accepted`. For issues that have not been accepted, you may request to be assigned to that issue.
Your pull requests are welcome; however, they may not be accepted for various reasons. If you want to make some GUI enhancement like renaming some graphic items or fixing typos, please create the issue instead of the pull requests. All Pull Requests, except for translations and user documentation, need to be attached to a issue on GitHub. For Pull Requests regarding enhancements and questions, the issue must first be approved by one of project's administrators before being merged into the project. An approved issue will have the label `Accepted`. For issues that have not been accepted, you may request to be assigned to that issue.
Opening a issue beforehand allows the administrators and the community to discuss bugs and enhancements before work begins, preventing wasted effort.
Opening an issue beforehand allows the administrators and the community to discuss bugs and enhancements before work begins, preventing wasted effort.
### Guidelines for pull requests
@ -30,296 +35,185 @@ Opening an issue beforehand allows the administrators and the community to discu
2. Create a new branch for each PR. **Make sure your branch name wasn't used before** - you can add date (for example `patch3_20200528`) to ensure its uniqueness.
3. Single feature or bug-fix per PR.
4. Create a PR with a single commit to make the review process easier.
5. For the PR of translation, don't guess or use the next version number. Use the current version number instead.
6. Make your modification compact - don't reformat source code in your request. It makes code review more difficult.
7. PR of reformatting (changing of ws/TAB, line endings or coding style) of source code won't be accepted. Use issue trackers for your request instead.
8. Typo fixing and code refactoring won't be accepted - please create issues with title started with `TYPO` to request the changing.
9. The PR for the enhancement of Function List parser should also include unit test. Please refer [here](https://npp-user-manual.org/docs/function-list/#contribute-your-new-or-enhanced-parser-rule-to-the-notepad-codebase) for more information.
10. Address the review change requests by pushing new commits to the same PR. Avoid amending a commit and then force pushing it. All the PR commits are squashed before merging to the main branch.
11. When creating new PR, try to base it on latest master.
12. Normally you don't need to merge `upstream/master` (using git or via github sync), if your PR is based on older `upstream/master`. If you need to base it on latest `master` (e.g. to check and fix merge conflict), use commands `git fetch upstream` to get latest `master` and then `git rebase upstream/master` to rebase it onto this latest `upstream/master`.
13. Finally, please test your pull requests, at least once.
5. Make your modification compact - don't reformat source code in your request. It makes code review more difficult.
6. PR of reformatting (changing of ws/TAB, line endings or coding style) of source code won't be accepted. Use issue trackers for your request instead.
7. Typo fixing and code refactoring won't be accepted - please create issues with title started with `TYPO` to request the changing.
8. Address the review change requests by pushing new commits to the same PR. Avoid amending a commit and then force pushing it. All the PR commits are squashed before merging to the main branch.
In short: The easier the code review is, the better the chance your pull request will get accepted.
### Coding style
### Coding style
![stay clean](https://notepad-plus-plus.org/assets/images/good-bad-practice.jpg)
#### GENERAL
1. Do not use Java-like braces
* Good:
1. ##### Do not use Java-like braces.
* ###### Good:
```cpp
void MyClass::method1()
if ()
{
if (aCondition)
{
// Do something
}
// Do something
}
```
* Bad:
* ###### Bad:
```cpp
void MyClass::method1() {
if (aCondition) {
// Do something
}
if () {
// Do something
}
```
However, the method definition could be defined in a header file (.h), if there's one line code only. In this case, Java-like braces should be used.
2. ##### Use tabs instead of white-spaces (we usually set our editors to 4 white-spaces for 1 tab, but the choice is up to you).
* Good:
```cpp
class MyClass
{
public:
void method1();
int method2() {
return _x; // only one line code can be placed in .h as method definition
};
private:
int _x;
}
```
2. Use tabs instead of white-spaces (we usually set our editors to 4 white-spaces for 1 tab, but the choice is up to you)
3. Always leave one space before and after binary and ternary operators
* Good:
3. ##### Always leave one space before and after binary and ternary operators.
* ###### Good:
```cpp
if (a == 10 && b == 42)
```
* Bad:
* ###### Bad:
```cpp
if (a==10&&b==42)
```
4. Only leave one space after semi-colons in "for" statements
* Good:
4. ##### Only leave one space after semi-colons in "for" statements.
* ###### Good:
```cpp
for (int i = 0; i != 10; ++i)
```
* Bad:
* ###### Bad:
```cpp
for(int i=0;i<10;++i)
```
5. Function names are not separated from the first parenthesis
* Good:
5. ##### Function names are not separated from the first parenthesis.
* ###### Good:
```cpp
foo();
myObject.foo(24);
```
* Bad:
* ###### Bad:
```cpp
foo ();
```
6. Keywords are separated from the first parenthesis by one space
* Good:
6. ##### Keywords are separated from the first parenthesis by one space.
* ###### Good:
```cpp
if (true)
while (true)
```
* Bad:
* ###### Bad:
```cpp
if(myCondition)
```
7. Switch
7. ##### Use the following indenting for "switch" statements:
* Use the following indenting for "switch" statements:
```cpp
switch (test)
{
case 1:
{
// Do something
break;
}
default:
// Do something else
} // No semi-colon here
```
```cpp
switch (test)
{
case 1:
{
// Do something
break;
}
default:
// Do something else
} // No semi-colon here
```
* If possible use `default` statement, and prefer using it as last case.
* When using switch with enum or known range, try to cover all values if not using `default`.
```cpp
enum class Test {val1, val2, val3}
switch (Test)
{
case Test::val1:
{
// Do something
break;
}
//case Test::val2:
//case Test::val3:
default:
// Do something else
} // No semi-colon here
```
When using `default` adding uncovered values as comments can help to convey intention.
* Use `[[fallthrough]]` if fall through is intended.
```cpp
switch (test)
{
case 1:
{
// Do something
}
// I want fall through // adding comment can help to convey intention
[[fallthrough]];
case 2:
{
// Do something
break;
}
default:
// Do something else
} // No semi-colon here
```
8. Avoid magic numbers
* Good:
8. ##### Avoid magic numbers.
* ###### Good:
```cpp
if (foo == I_CAN_PUSH_ON_THE_RED_BUTTON)
startTheNuclearWar();
```
* Bad:
* ###### Bad:
```cpp
while (lifeTheUniverseAndEverything != 42)
lifeTheUniverseAndEverything = buildMorePowerfulComputerForTheAnswer();
```
9. Prefer enums for integer constants
9. ##### Prefer enums for integer constants.
10. Use initialization with curly braces
* Good:
10. ##### Use initialization with curly braces.
* ###### Good:
```cpp
MyClass instance{10.4};
```
* Bad:
* ###### Bad:
```cpp
MyClass instance(10.4);
```
11. Always use `empty()` for testing if a string is empty or not
* Good:
11. ##### Always use `empty()` for testing if a string is empty or not.
* ###### Good:
```cpp
if (!string.empty())
if (not string.empty())
...
```
* Bad:
* ###### Bad:
```cpp
if (string != "")
...
```
12. Always use `C++ conversion` instead of `C-Style cast`
* Generally, all the conversion among types should be avoided. If you have no choice, use C++ conversion.
* Good:
12. ##### Always use `C++ conversion` instead of `C-Style cast`. Generally, all the conversion among types should be avoided. If you have no choice, use C++ conversion.
* ###### Good:
```cpp
char aChar = static_cast<char>(_pEditView->execute(SCI_GETCHARAT, j));
```
* Bad:
* ###### Bad:
```cpp
char aChar = (char)_pEditView->execute(SCI_GETCHARAT, j);
```
13. Use `!` instead of `not`, `&&` instead of `and`, `||` instead of `or`
* Good:
13. ##### Use `!` instead of `not`, `&&` instead of `and`, `||` instead of `or`.
* ###### Good:
```cpp
if (!::PathFileExists(dir2Search))
```
* Bad:
* ###### Bad:
```cpp
if (not ::PathFileExists(dir2Search))
```
14. Always initialize local and global variables
* For primitive types and enum prefer initialization with `=`.
* For other prefer `{}`-initializer syntax.
* For "numerical" variables using literal suffix can help to convey intention.
```cpp
constexpr float g_globalVariable = 0.0F;
void test()
{
constexpr UINT strLen = 1024U;
wchar_t myString[strLen]{};
}
```
#### NAMING CONVENTIONS
1. Classes uses Pascal Case
* Good:
1. ##### Classes uses Pascal Case
* ###### Good:
```cpp
class IAmAClass
{};
```
* Bad:
* ###### Bad:
```cpp
class iAmAClass
{};
@ -327,128 +221,87 @@ In short: The easier the code review is, the better the chance your pull request
{};
```
2. Methods & method parameters
2. ##### Methods & method parameters use camel Case
* Use camel Case
```cpp
void myMethod(uint myVeryLongParameter);
```
```cpp
void myMethod(uint myVeryLongParameter);
```
3. ##### Member variables
3. Member variables
Any member variable name of class/struct should be preceded by an underscore.
* Any member variable name of class/struct should be preceded by an underscore.
```cpp
public:
int _publicAttribute;
private:
int _pPrivateAttribute;
float _pAccount;
```
```cpp
public:
int _publicAttribute;
private:
int _pPrivateAttribute;
float _pAccount;
```
4. Always prefer a variable name that describes what the variable is used for
* Good:
4. ##### Always prefer a variable name that describes what the variable is used for.
* ###### Good:
```cpp
if (hours < 24 && minutes < 60 && seconds < 60)
```
* Bad:
* ###### Bad:
```cpp
if (a < 24 && b < 60 && c < 60)
```
#### COMMENTS
1. Use C++ comment line style rather than C comment style
1. ##### Use C++ comment line style than C comment style.
* Good:
```cpp
* ###### Good:
```
// Two lines comment
// Use still C++ comment line style
```
* Bad:
```cpp
* ###### Bad:
```
/*
Please don't piss me off with that
*/
```
#### BEST PRACTICES
1. Use C++11/14/17/20 whenever it is possible.
1. ##### Use C++11/14/17 whenever it is possible
2. Use C++11 member initialization feature whenever it is possible.
2. ##### Use C++11 member initialization feature whenever it is possible
```cpp
class Foo
{
int value = 0;
};
```
```cpp
class Foo
{
int value = 0;
};
```
3. Incrementing
* Prefer Pre-increment
3. ##### Prefer Pre-increment:
```cpp
++i
```
```cpp
++i
```
##### **Over Post-increment:**
```cpp
i++
```
(It does not change anything for built-in types but it would bring consistency)
* Over Post-increment
4. ##### Avoid using pointers. Prefer references. You might need the variable to be assigned a NULL value: in this case the NULL value has semantics and must be checked. Wherever possible, use a SmartPtr instead of old-school pointers.
```cpp
i++
```
5. ##### Avoid using new if you can use automatic variable. However, avoid `shared_ptr` as much as possible. Prefer `unique_ptr` instead.
(It does not change anything for built-in types but it would bring consistency)
6. ##### Don't place any "using namespace" directives in headers.
4. Avoid using pointers. References are preferred instead. You might need the variable to be assigned a `NULL` value: in this case the `NULL` value has semantics and must be checked. Wherever possible, use a SmartPtr instead of old-school pointers.
7. ##### Compile time is without incidence. Increasing compile time to reduce execution time is encouraged.
5. Avoid using new if you can use automatic variable. However, avoid `shared_ptr` as much as possible. Prefer `unique_ptr` instead.
6. Don't place any "using namespace" directives in headers.
7. Compile time is without incidence. Increasing compile time to reduce execution time is encouraged.
8. Code legibility and length is less important than easy and fast end-user experience.
9. Prefer `constexpr` over `const` if value can be evaluated at compile time.
10. Check if there are helper functions in headers or lambda functions to reuse them instead of writing new code.
* Example
```cpp
// in StaticDialog.h
isCheckedOrNot();
setChecked();
// in Parameters.cpp
parseYesNoBoolAttribute();
```
11. Check if there are already defined global variables, and reuse them instead of defining new ones.
12. Avoid "Yoda conditions".
* Good:
```cpp
if (iAmYourFather == true)
...
```
* Bad:
```cpp
if (true == iAmYourFather)
...
```
13. Check [C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md) for additional guidelines.
8. ##### Code legibility and length is less important than easy and fast end-user experience.

View File

@ -20,7 +20,7 @@
<!--- In your Notepad++, click on the "?" menu (found to the right of "Window" in the menu bar) -->
<!--- In the menu that drops down, choose "Debug Info..." -->
<!--- A message box will open detailing specifics about your Notepad++ version, plugins, etc. -->
<!--- CLICK ON THE BUTTON with the text "Copy debug info into clipboard" -->
<!--- CLICK ON THE BLUE LINK with the text "Copy debug info into clipboard" -->
<!--- Do a PASTE HERE -->
<!--- Feel free to include any other info, such as screenshots, etc -->

60
LICENSE
View File

@ -13,7 +13,7 @@ This program is distributed in the hope that it will be useful, but WITHOUT ANY
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Copyright © 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
@ -40,30 +40,30 @@ The precise terms and conditions for copying, distribution and modification foll
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
“This License” refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks.
“Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations.
“The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work.
To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work.
A "covered work" means either the unmodified Program or a work based on the Program.
A “covered work” means either the unmodified Program or a work based on the Program.
To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well.
To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.
To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion.
An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work.
The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work.
A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language.
A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it.
The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work.
The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work.
The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source.
@ -90,10 +90,10 @@ You may charge any price or no price for each copy that you convey, and you may
You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified it, and giving a relevant date.
b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices".
b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”.
c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so.
A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.
A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways:
@ -105,9 +105,9 @@ d) Convey the object code by offering access from a designated place (gratis or
e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d.
A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product.
A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product.
"Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made.
“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made.
If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM).
@ -116,7 +116,7 @@ The requirement to provide Installation Information does not include a requireme
Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions.
“Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission.
@ -128,7 +128,7 @@ c) Prohibiting misrepresentation of the origin of that material, or requiring th
d) Limiting the use for publicity purposes of names of licensors or authors of the material; or
e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors.
All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying.
All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms.
@ -149,24 +149,24 @@ You are not required to accept this License in order to receive or run a copy of
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts.
An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version".
A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”.
A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License.
A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party.
In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party.
If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid.
If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it.
A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007.
A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law.
@ -179,14 +179,14 @@ Notwithstanding any other provision of this License, you have permission to link
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation.
Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation.
If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program.
Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
@ -199,7 +199,7 @@ END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
@ -224,8 +224,8 @@ If the program does terminal interaction, make it output a short notice like thi
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box".
The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an “about box”.
You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see <https://www.gnu.org/licenses/>.
You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see <https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read <https://www.gnu.org/licenses/why-not-lgpl.html>.

View File

@ -1 +1 @@
{"leaves":["BiSeqOut","Get_Idle","Get_State","Update","Int32_To_Byte_Array","Int8_To_U8","Int32toInt8TwosComplement (value : Vt.Int32)","AproxU8 (n : Vt.U8; x : Vt.U8)","Read_I32 (Register : Vt.Address_Range)"],"root":"unitTest"}
{"leaves":["BiSeqOut"],"root":"unitTest"}

View File

@ -34,44 +34,10 @@ begin
end BiSeqOut;
-- Result of Execution
-- (The only output is a binary file named NAMEFILE.TXT)
function Get_Idle
return Boolean;
function Get_State
return Vt.State;
procedure Update;
function Int32_To_Byte_Array is
new Unchecked_Conversion (Source => Vt.Int32, Target => Vt.Byte_Array);
function Int8_To_U8 is new Unchecked_Conversion
(Source => Vt.Int8, Target => Vt.U8);
function Int32toInt8TwosComplement (value : Vt.Int32) return Vt.Int8 is
begin
-- body
end Int32toInt8TwosComplement;
function AproxU8 (n : Vt.U8; x : Vt.U8) return Boolean is
eq : Boolean := False;
begin
-- code
return eq;
end AproxU8;
function Read_I32 (Register : Vt.Address_Range) return Vt.Int_32 is
Data : Vt.Int_32;
begin
-- code
return Data;
end Read_ I32;

View File

@ -29,14 +29,6 @@ Func logoff() ; Start of the logoff function
Exit ; Quit the program
EndFunc ; End of the logoff Function
#CS
Func logoff()
GUISetState(@SW_HIDE)
Run("u:\logoff.bat")
Exit
EndFunc
#CE
Func cancel() ; Start of the cancel function
GUISetState(@SW_HIDE) ; Hide the Window
Exit ; Quit the program

View File

@ -1 +1 @@
{"leaves":["setenv","action_needed","canonicalize_path","make_module","db2_name","versioned_copy"],"root":"unitTest"}
{"leaves":["action_needed","canonicalize_path","make_module","db2_name","versioned_copy"],"root":"unitTest"}

View File

@ -0,0 +1 @@
{"leaves":["setenv","action_needed","canonicalize_path","make_module","db2_name","versioned_copy"],"root":"unitTest"}

View File

@ -124,13 +124,6 @@ static void test()
assert(fabsf(test_quat.q3 - quat.q3) < .01);
}
/*
void commented_func()
{
return;
}
*/
int main()
{
test();

View File

@ -516,18 +516,6 @@ int decStrVal(const TCHAR *str)
return strVal(str, 10);
}
/*
int commentedFunc1()
{
return 1;
}
*/
/*int commentedFunc2()
{
return 2;
}*/
int hexStrVal(const TCHAR *str)
{
return strVal(str, 16);
@ -1240,6 +1228,21 @@ bool NppParameters::load()
isAllLaoded = false;
}
//---------------------------------//
// toolbarIcons.xml : for per user //
//---------------------------------//
generic_string toolbarIconsPath(_userPath);
PathAppend(toolbarIconsPath, TEXT("toolbarIcons.xml"));
_pXmlToolIconsDoc = new TiXmlDocument(toolbarIconsPath);
loadOkay = _pXmlToolIconsDoc->LoadFile();
if (!loadOkay)
{
delete _pXmlToolIconsDoc;
_pXmlToolIconsDoc = nullptr;
isAllLaoded = false;
}
//------------------------------//
// shortcuts.xml : for per user //
//------------------------------//

View File

@ -1,108 +0,0 @@
# Everything after "#" is a comment.
# A file is a class!
# (optional) class definition:
class_name MyClass
# Inheritance:
extends BaseClass
# Member variables.
var a = 5
var s = "Hello"
var arr = [1, 2, 3]
var dict = {"key": "value", 2: 3}
var other_dict = {key = "value", other_key = 2}
var typed_var: int
var inferred_type := "String"
var ss = '''
func invalid_single_quote():
pass
'''
var sd = """
func invalid_func_double_quote():
pass
"""
# Constants.
const ANSWER = 42
const THE_NAME = "Charly"
# Enums.
enum {UNIT_NEUTRAL, UNIT_ENEMY, UNIT_ALLY}
enum Named {THING_1, THING_2, ANOTHER_THING = -1}
# Built-in vector types.
var v2 = Vector2(1, 2)
var v3 = Vector3(1, 2, 3)
# Functions.
func my_func(arg1 : int = sin(1), arg2 : String = "") -> void:
return
func some_function(param1, param2, param3):
if param1 < local_const:
print(param1)
elif param2 > 5:
print(param2)
else:
print("Fail!")
for i in range(20):
print(i)
while param2 != 0:
param2 -= 1
match param3:
3:
print("param3 is 3!")
_:
print("param3 is not 3!")
var local_var = param1 + 3
return local_var
# Functions override functions with the same name on the base/super class.
# If you still want to call them, use "super":
func something(p1, p2):
super(p1, p2)
# It's also possible to call another function in the super class:
func other_something(p1, p2):
super.something(p1, p2)
# Inner class
class Something:
var a = 10
func inner_function():
return
func my_func(arg1 : int = sin(1), arg2 : String = "") -> void:
return
# Inner class with inheritance
class fish extends Node2D:
func _init():
_randomize()
func _randomize():
randomize()
_size = rand_range(0.75,2.0)
# Constructor
func _init():
print("Constructed!")
var lv = Something.new()
print(lv.a)

View File

@ -1 +0,0 @@
{"leaves":["my_func(arg1 : int = sin(1), arg2 : String = \"\") -> void","some_function(param1, param2, param3)","something(p1, p2)","other_something(p1, p2)","_init()"],"nodes":[{"leaves":["inner_function()","my_func(arg1 : int = sin(1), arg2 : String = \"\") -> void"],"name":"Something"},{"leaves":["_init()","_randomize()"],"name":"fish"}],"root":"unitTest"}

View File

@ -1,258 +0,0 @@
/****************************************************************
** **
** Name: AsyncFX **
** Author: Andreas Falkenhahn **
** Version: 1.2 **
** Date: 17.01.19 **
** Interpreter: Hollywood 8.0 **
** Licence: Sample program for Hollywood **
** Function: Demonstrates asynchronous transition effects **
** **
** History: **
** **
** 1.2: (07.01.19) **
** **
** - uses the new @DIRECTORY preprocessor command now which **
** will automatically link all pics when compiling **
** **
** 1.1: (29.03.13) **
** **
** - added BeginRefresh()/EndRefresh() section for optimized **
** drawing on supported systems **
** **
** 1.0: (17.09.08) **
** **
** - initial release **
** **
****************************************************************/
/*
** Important! Check if the used Hollywood version is at least
** version 8.0!
*/
@VERSION 8,0
@DIRECTORY 1, "pics"
@SPRITE 1, "buttons.png", {Frames = 2, Width = 137, Height = 24, Transparency = $ff0000}
/*
** Initial display dimensions
*/
@DISPLAY {Width = 800, Height = 600}
/* check if a picture is already on screen */
Function p_CheckPic(x)
For Local k = 0 To 15
If p[k].brush = x Then Return(True)
Next
Return(False)
EndFunction
/* select a random effect */
Function p_ChooseFX(use_globfx)
Local found = False
Local type
; do we want a global effect or a new effect for every object?
If (use_globfx = True) And (bstate = 2) Then Return(globfx)
While found = False
type = GetRandomFX(True)
; no #SCROLL effects please! They'd corrupt the display because we aren't using layers!
Switch type
Case #SCROLLWEST
Case #SCROLLEAST
Case #SCROLLNORTH
Case #SCROLLSOUTH
Case #SCROLLNORTHEAST
Case #SCROLLSOUTHEAST
Case #SCROLLSOUTHWEST
Case #SCROLLNORTHWEST
Default
found = True
EndSwitch
Wend
Return(type)
EndFunction
/* start new transition effect */
Function p_TOFunc(msg)
Local t
Local k = msg.userdata
; choose a new global effect if we're in static mode!
If (k = 0) And (bstate = 2) Then globfx = p_ChooseFX(False)
; randomly choose a new picture but it must not be on screen!
Repeat
t = Rnd(num)
Until p_CheckPic(t) = False
; remember picture
p[k].brush = t
; go!
p[k].drawfunc = DisplayBrushFX(p[k].brush + 1, p[k].x * 200, p[k].y * 150, {Async = True, Type = p_ChooseFX(True), Parameter = #WHITE})
p[k].active = True
EndFunction
Function p_SyncedRestart()
For Local k = 0 To 15 Do p_TOFunc({userdata = k})
EndFunction
/* our main loop */
Function p_MainLoop()
BeginRefresh
For Local k = 0 To 15
If p[k].active = True
If AsyncDrawFrame(p[k].drawfunc) = True
p[k].active = False
If bstate = 2
; We're in static mode --> make sure our FX are absolutely sync'ed
If k = 15 Then SetTimeout(Nil, p_SyncedRestart, 1000)
p[k].cleartimeout = False
Else
; FX has finished!
; --> wait 1 second and then display next pic
; note that we have to use SetTimeout() because we are in a callback and must
; not call functions that block the system (e.g. do not use Wait() in a callback!)
p[k].timeout = SetTimeout(Nil, p_TOFunc, 1000, k)
p[k].cleartimeout = True
EndIf
EndIf
EndIf
Next
EndRefresh
EndFunction
/* start all effects */
Function p_Start16FX()
; start from new!
For Local k = 0 To 15
p[k].drawfunc = DisplayBrushFX(p[k].brush + 1, p[k].x * 200, p[k].y * 150, {Async = True, Type = p_ChooseFX(True), Parameter = #WHITE})
p[k].active = True
Next
EndFunction
/* scan files and start the transition effects */
Function p_Init()
Local t
; count files
num = CountDirectoryEntries(1)
; load brushes
For Local k = 1 to num Do LoadBrush(k, GetDirectoryEntry(1, PadNum(k, 2) .. ".jpg"))
p = {}
For Local k = 0 To 15 Do p[k] = {brush = -1}
; generate initial picture layout
For Local k = 0 To 15
Repeat
t = Rnd(num)
Until p_CheckPic(t) = False
p[k].brush = t
Next
Local k = 0
; generate x & y coordinates for our FX
For Local y = 0 To 3
For Local x = 0 To 3
p[k].x = x
p[k].y = y
k = k + 1
Next
Next
; start all FX at once
p_Start16FX()
EndFunction
/* this function gets called when the user presses a button */
Function p_EventFunc(msg)
If msg.id = bstate Then Return
bstate = msg.id
; update button state
DisplaySprite(1, 654, 570, bstate)
; cancel all async drawings or clear timeouts
For Local k = 0 To 15
If p[k].active = True
CancelAsyncDraw(p[k].drawfunc)
p[k].active = False
Else
If p[k].cleartimeout = True Then ClearTimeout(p[k].timeout)
EndIf
Next
; clear screen
Box(0, 0, 800, 600, #BLACK)
; choose a new global effect if we're in static mode
If bstate = 2 Then globfx = p_ChooseFX(False)
p_Start16FX()
EndFunction
p_Init()
SetFillStyle(#FILLCOLOR)
SetInterval(Nil, p_MainLoop, 1000 \ 50) ; 50 fps
bstate = 1
MakeButton(1, #SIMPLEBUTTON, 654, 570, 64, 24, {OnMouseUp = p_EventFunc})
MakeButton(2, #SIMPLEBUTTON, 727, 570, 64, 24, {OnMouseUp = p_EventFunc})
DisplaySprite(1, 654, 570)
EscapeQuit(True)
Repeat
WaitEvent
Forever

View File

@ -1 +0,0 @@
{"leaves":["p_CheckPic","p_ChooseFX","p_TOFunc","p_SyncedRestart","p_MainLoop","p_Start16FX","p_Init","p_EventFunc"],"root":"unitTest"}

View File

@ -15,11 +15,6 @@ function extractKeywords(text) {
filter(function(v, i, a) { return a.lastIndexOf(v) === i; });
}
/*
function commentedFunc() {
return 0;
}
*/
function convertBasicMarkup(input, allowHtml) {
var strongRe = /[*]{2}([^*]+)[*]{2}/gm;
@ -366,26 +361,4 @@ var LoginToken = new Schema({
}
exports.defineModels = defineModels;
class Car {
constructor(name, year) {
this.name = name;
this.year = year;
}
age(x) {
return x - this.year;
}
}
const date = new Date();
let year = date.getFullYear();
const myCar = new Car("Ford", 2014);
document.getElementById("demo").innerHTML=
"My car is " + myCar.age(year) + " years old.";

View File

@ -1 +1 @@
{"leaves":["extractKeywords","convertBasicMarkup","function","function","function","function","defineModels","slugGenerator","slugGenerator","validatePresenceOf","function","function","function","function","function","function"],"nodes":[{"leaves":["constructor","age"],"name":"Car"}],"root":"unitTest"}
{"leaves":["extractKeywords","convertBasicMarkup","function","function","function","function","defineModels","slugGenerator","slugGenerator","validatePresenceOf","function","function","function","function","function","function"],"root":"unitTest"}

View File

@ -1,46 +0,0 @@
\documentclass[12pt]{article}
\usepackage{lingmacros}
\usepackage{tree-dvips}
\begin{document}
\section*{Notes for My Paper}
Don't forget to include examples of topicalization.
They look like this:
{\small
\enumsentence{Topicalization from sentential subject:\\
\shortex{7}{a John$_i$ [a & kltukl & [el &
{\bf l-}oltoir & er & ngii$_i$ & a Mary]]}
{ & {\bf R-}clear & {\sc comp} &
{\bf IR}.{\sc 3s}-love & P & him & }
{John, (it's) clear that Mary loves (him).}}
}
\subsection*{How to handle topicalization}
I'll just assume a tree structure like (\ex{1}).
{\small
\enumsentence{Structure of A$'$ Projections:\\ [2ex]
\begin{tabular}[t]{cccc}
& \node{i}{CP}\\ [2ex]
\node{ii}{Spec} & &\node{iii}{C$'$}\\ [2ex]
&\node{iv}{C} & & \node{v}{SAgrP}
\end{tabular}
\nodeconnect{i}{ii}
\nodeconnect{i}{iii}
\nodeconnect{iii}{iv}
\nodeconnect{iii}{v}
}
}
\subsection*{Mood}
Mood changes when there is a topic, as well as when
there is WH-movement. \emph{Irrealis} is the mood when
there is a non-subject topic or WH-phrase in Comp.
\emph{Realis} is the mood when there is a subject topic
or WH-phrase.
\end{document}

View File

@ -1 +0,0 @@
{"leaves":["\\begin{document}","\\section*{Notes for My Paper}","\\subsection*{How to handle topicalization}","\\begin{tabular}[t]{cccc}","\\subsection*{Mood}"],"root":"unitTest"}

View File

@ -1,8 +0,0 @@
$testRoot = ".\"
$PowerEditor = "$testRoot\..\..\"
Copy-Item "$PowerEditor\installer\functionList" -Destination "$PowerEditor\bin" -Recurse -Force
Copy-Item "$PowerEditor\installer\filesForTesting\regexGlobalTest.xml" -Destination "$PowerEditor\bin\functionList" -Force
Copy-Item "$PowerEditor\installer\filesForTesting\overrideMap.xml" -Destination "$PowerEditor\bin\functionList" -Force
& ".\unitTestLauncher.ps1"

View File

@ -1,27 +0,0 @@
-- Create a file named by_ip/''ip_addess''.cap with all ip traffic of each ip host. (tshark only?)
-- Dump files are created for both source and destination hosts
function createDir (dirname)
-- this will print out an error if the directory already exists, but that's fine
os.execute("mkdir " .. dirname)
end
local dir = "by_ip"
createDir(dir)
-- create a table to hold the dumper objects/file handles
local dumpers = {}
local tap = Listener.new("ip")
-- we will be called once for every IP Header.
-- If there's more than one IP header in a given packet we'll dump the packet once per every header
function tap.packet(pinfo,tvb,ip)
local ip_src, ip_dst = tostring(ip.ip_src), tostring(ip.ip_dst)
local src_dmp, dst_dmp
end
function tap.draw()
for ip_addr,dumper in pairs(dumpers) do
dumper:flush()
end
end

View File

@ -1 +0,0 @@
{"leaves":["createDir"],"nodes":[{"leaves":["packet","draw"],"name":"tap"}],"root":"unitTest"}

View File

@ -30,7 +30,7 @@
!define VERSION_MAJOR 6
!define VERSION_MINOR 9
!define APPWEBSITE "https://notepad-plus-plus.org/"
!define APPWEBSITE "http://notepad-plus-plus.org/"
!define UNINSTALL_REG_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}"
!define MEMENTO_REGISTRY_ROOT HKLM
@ -344,15 +344,15 @@ Function .onInit
${GetWindowsVersion} $WinVer
StrCmp $WinVer "95" 0 +3
MessageBox MB_OK "This version of Notepad++ does not support your OS.$\nPlease download zipped package of version 5.9 and use ANSI version. You can find v5.9 here:$\nhttps://notepad-plus-plus.org/release/5.9"
MessageBox MB_OK "This version of Notepad++ does not support your OS.$\nPlease download zipped package of version 5.9 and use ANSI version. You can find v5.9 here:$\nhttp://notepad-plus-plus.org/release/5.9"
Abort
StrCmp $WinVer "98" 0 +3
MessageBox MB_OK "This version of Notepad++ does not support your OS.$\nPlease download zipped package of version 5.9 and use ANSI version. You can find v5.9 here:$\nhttps://notepad-plus-plus.org/release/5.9"
MessageBox MB_OK "This version of Notepad++ does not support your OS.$\nPlease download zipped package of version 5.9 and use ANSI version. You can find v5.9 here:$\nhttp://notepad-plus-plus.org/release/5.9"
Abort
StrCmp $WinVer "ME" 0 +3
MessageBox MB_OK "This version of Notepad++ does not support your OS.$\nPlease download zipped package of version 5.9 and use ANSI version. You can find v5.9 here:$\nhttps://notepad-plus-plus.org/release/5.9"
MessageBox MB_OK "This version of Notepad++ does not support your OS.$\nPlease download zipped package of version 5.9 and use ANSI version. You can find v5.9 here:$\nhttp://notepad-plus-plus.org/release/5.9"
Abort
!insertmacro MUI_LANGDLL_DISPLAY

View File

@ -1,562 +0,0 @@
unit unitTest;
interface
uses
System.SysUtils, System.Types, System.Classes;
{ Free function 1, declaration }
function FreeFunc1(const Param: integer): integer;
type
// -----------------------------------------------------------------------------
// TStdClass
// -----------------------------------------------------------------------------
TStdClass = class(TObject)
private type
TStdInternalClass = class(TObject)
private
FName: string;
FId: integer;
public
constructor Create;
destructor Destroy; override;
procedure CopyTo(Dest: TStdInternalClass);
property Name: string read FName write FName;
property Id: integer read FId write FId;
end;
private
FId: integer;
FValue: string;
class var FInstCnt: integer;
class function Init(Cnt: integer): boolean;
class function DeInit(Cnt: integer): boolean;
class function ToType<X: class, constructor>(const Value: string): X;
procedure SetValue(const Value: string);
public
constructor Create;
destructor Destroy; override;
function Convert<X: class, constructor>(const Value: string): X;
class property InstCnt: integer read FInstCnt;
property PropId: integer read FId write FId;
property PropValue: string read FValue write SetValue;
end;
// -----------------------------------------------------------------------------
// TGenericClass<T>
// -----------------------------------------------------------------------------
TGenericClass<T> = class(TObject)
private type
TGenericInternalClass<I, K> = class(TObject)
strict private
FName: string;
FId: I;
FValue: K;
public
constructor Create;
destructor Destroy; override;
procedure CopyTo<J>(Dest: TGenericInternalClass<I, K>);
property Name: string read FName write FName;
property Id: I read FId write FId;
property Value: K read FValue write FValue;
end;
strict private
FId: integer;
FValue: T;
class var FInstCnt: integer;
class function Init<I>(Cnt: integer): boolean;
class function DeInit(Cnt: integer): boolean;
procedure SetValue(const Value: T);
public
constructor Create;
destructor Destroy; override;
class property InstCnt: integer read FInstCnt;
property PropId: integer read FId write FId;
property PropValue: T read FValue write SetValue;
end;
type
// -----------------------------------------------------------------------------
// TEnum
// -----------------------------------------------------------------------------
TEnum = (enMember1, enMember2, enMember3);
TEnumHelper = record helper for TEnum
public
function ToString: string;
class function FromString(const AString: string): TEnum; static;
end;
// -----------------------------------------------------------------------------
// TStdClassHelper
// -----------------------------------------------------------------------------
TStdClassHelper = class helper for TStdClass
public
function AsString: string;
class function FromString(const AString: string): TStdClass; static;
end;
// -----------------------------------------------------------------------------
// Free routines declarations
// -----------------------------------------------------------------------------
procedure FreeProc1(AParam: integer);
function FreeFunc2(const AParam: string): integer; inline;
procedure FreeProc2(AParam: integer);
{function UnusedFreeFunc1(ANum: double): cardinal;}
procedure FreeProc3(AParam: integer); overload; inline;
procedure FreeProc3(AParam: string); overload; inline;
(*
function UnusedFreeFunc2(ANum: double): cardinal;
function UnusedFreeFunc3(ANum: double): cardinal;
*)
implementation
{R *.dfm}
type
// -----------------------------------------------------------------------------
// Internal classes
// -----------------------------------------------------------------------------
TInternalClass = class(TObject)
public
function Init(Cnt: integer): boolean;
procedure SetValue(Cnt: integer);
end;
// -----------------------------------------------------------------------------
// Free routines
// -----------------------------------------------------------------------------
{ Free function 3, forward declaration}
function FreeFunc3(const Param: integer): integer; forward;
{ Free function 1, definition }
function FreeFunc1(const Param: integer): integer;
begin
//
Result := 0;
end;
{ Free procedure 1, definition }
procedure FreeProc1(AParam: integer);
begin
// Do something
end;
{ Free function 2, definition }
function FreeFunc2(const AParam: string): integer;
begin
// Do something
Result := 0;
end;
{
// Unused free function 1, definition
function UnusedFreeFunc1(ANum: double): cardinal;
begin
// Do something
Result := 0;
end;
}
{ Free procedure 2, definition }
procedure FreeProc2(AParam: integer);
begin
// Do something
end;
(*
// Unused free function 2, definition
function UnusedFreeFunc2(ANum: double): cardinal;
begin
// Do something
Result := 0;
end;
{ Unused free function 3, definition }
function UnusedFreeFunc3(ANum: double): cardinal;
begin
// Do something
Result := 0;
end;
*)
{ Free procedure 3 (overloaded), definition }
procedure FreeProc3(AParam: integer);
begin
//
end;
procedure FreeProc3(AParam: string);
begin
//
end;
{ Free procedure 4, forward declaration}
procedure FreeProc4(const Param: integer); forward;
// -----------------------------------------------------------------------------
// TStdClass
// -----------------------------------------------------------------------------
constructor TStdClass.Create;
begin
inherited;
Init(Succ(InstCnt));
end;
destructor TStdClass.Destroy;
begin
DeInit(Pred(InstCnt));
inherited;
end;
class function TStdClass.Init(Cnt: integer): boolean;
begin
FInstCnt := Cnt;
Result := true;
end;
class function TStdClass.DeInit(Cnt: integer): boolean;
begin
FInstCnt := Cnt;
Result := true;
end;
class function TStdClass.ToType<X>(const Value: string): X;
begin
Result := X.Create;
end;
procedure TStdClass.SetValue(const Value: string);
begin
FValue := Value;
end;
function TStdClass.Convert<X>(const Value: string): X;
begin
Result := ToType<X>(Value);
end;
// -----------------------------------------------------------------------------
// TStdClass.TStdInternalClass
// -----------------------------------------------------------------------------
constructor TStdClass.TStdInternalClass.Create;
begin
inherited;
//
end;
destructor TStdClass.TStdInternalClass.Destroy;
begin
//
inherited;
end;
procedure TStdClass.TStdInternalClass.CopyTo(Dest: TStdInternalClass);
begin
Dest.Name := Name;
Dest.Id := Id;
end;
// -----------------------------------------------------------------------------
// Free routines
// -----------------------------------------------------------------------------
{ Free function 3 with internal procedure, definition }
function FreeFunc3(const Param: integer): integer;
procedure InternalProc1(const Param: integer);
begin
//
end;
begin
//
Result := 0;
end;
{ Free procedure 4 with internal function, definition }
procedure FreeProc4(const Param: integer);
function InternalFunc1(const Param: integer): string;
begin
//
Result := '';
end;
begin
//
end;
{ Free procedure 5 with internal procedure preceeded by a comment, declaration & definition }
procedure FreeProc5;
// Internal routine
procedure InternalProc2;
begin
//
end;
begin
//
end;
{ Free procedure 6 (inline), declaration & definition }
procedure FreeProc6; inline;
begin
//
end;
// -----------------------------------------------------------------------------
// TGenericClass<T>
// -----------------------------------------------------------------------------
constructor TGenericClass<T>.Create;
begin
inherited;
Init<string>(Succ(InstCnt));
end;
destructor TGenericClass<T>.Destroy;
begin
DeInit(Pred(InstCnt));
inherited;
end;
// This is a class function
class function TGenericClass<T>.Init<I>(Cnt: integer): boolean;
begin
FInstCnt := Cnt;
Result := true;
end;
// This is a class function
class function TGenericClass<T>.DeInit(Cnt: integer): boolean;
begin
FInstCnt := Cnt;
Result := true;
end;
procedure TGenericClass<T>.SetValue(const Value: T);
begin
FValue := Value;
end;
// -----------------------------------------------------------------------------
// TGenericClass<T>.TGenericInternalClass<I, K>
// -----------------------------------------------------------------------------
constructor TGenericClass<T>.TGenericInternalClass<I, K>.Create;
begin
inherited;
FName := '';
FId := Default(I);
FValue := Default(K);
end;
destructor TGenericClass<T>.TGenericInternalClass<I, K>.Destroy;
begin
//
inherited;
end;
procedure TGenericClass<T>.TGenericInternalClass<I, K>.CopyTo<J>(Dest: TGenericInternalClass<I, K>);
begin
Dest.Name := Name;
Dest.Id := Id;
Dest.Value := Value;
end;
// -----------------------------------------------------------------------------
// TInternalClass
// -----------------------------------------------------------------------------
function TInternalClass.Init(Cnt: integer): boolean;
begin
Result := true;
end;
procedure TInternalClass.SetValue(Cnt: integer);
begin
//
end;
// -----------------------------------------------------------------------------
// TEnumHelper
// -----------------------------------------------------------------------------
function TEnumHelper.ToString: string;
begin
case Self of
enMember2: Result := 'Member 2';
enMember3: Result := 'Member 3';
else Result := 'Unknown';
end;
end;
class function TEnumHelper.FromString(const AString: string): TEnum;
begin
if SameText(AString, 'Member 2') then
Result := enMember2
else if SameText(AString, 'Member 3') then
Result := enMember3
else
Result := enMember1;
end;
// -----------------------------------------------------------------------------
// TStdClassHelper
// -----------------------------------------------------------------------------
function TStdClassHelper.AsString: string;
begin
Result := 'TStdClass instance';
end;
class function TStdClassHelper.FromString(const AString: string): TStdClass;
begin
Result := TStdClass.Create.Convert<TStdClass>(AString);
end;
end.

View File

@ -1 +0,0 @@
{"leaves":["FreeFunc1","FreeProc1","FreeFunc2","FreeProc2","FreeProc3","FreeProc3","FreeFunc3","InternalProc1","FreeProc4","InternalFunc1","FreeProc5","InternalProc2","FreeProc6"],"nodes":[{"leaves":["Create","Destroy","Init","DeInit","ToType<X>","SetValue","Convert<X>"],"name":"TStdClass"},{"leaves":["Create","Destroy","CopyTo"],"name":"TStdClass.TStdInternalClass"},{"leaves":["Create","Destroy","Init<I>","DeInit","SetValue"],"name":"TGenericClass<T>"},{"leaves":["Create","Destroy","CopyTo<J>"],"name":"TGenericClass<T>.TGenericInternalClass<I, K>"},{"leaves":["Init","SetValue"],"name":"TInternalClass"},{"leaves":["ToString","FromString"],"name":"TEnumHelper"},{"leaves":["AsString","FromString"],"name":"TStdClassHelper"}],"root":"unitTest"}

View File

@ -27,24 +27,15 @@ abstract class PageGrille extends PageMotsBleus{
return str_replace ( "\\" , "" , $pStr);
}
function GetJavascriptMajax() { /* a block comment */
function GetJavascriptMajax() {
return "ABC";
}
/*
function commentedFunc1() {
return "commented 1";
}
*/
}
function stringContainAsterisk_test1(){
$target = '/path/to/files/*';
}
/*function commentedFunc2(){
return "commented 2";
}*/
function stringContainAsterisk_test2(){
$target = '/path/to/files/*.jpg';
}

View File

@ -14,13 +14,6 @@ function Clear-Host
$host.PrivateData.ClearHost()
}
<#
function Commented-Func
{
return $s
}
#>
<#
.SYNOPSIS
Simple path completion function for PowerConsole.

View File

@ -1,11 +0,0 @@
def func1(a,b):
pass
def func2(a,b):
pass
def func3(a,b):
pass
def func4(a,b):
pass

View File

@ -1 +0,0 @@
{"leaves":["func1(a,b)","func2(a,b)","func3(a,b)","func4(a,b)"],"root":"unitTest"}

View File

@ -1 +0,0 @@
{"leaves":["func1(a,b)","func2(a,b)","func3(a,b)","func4(a,b)"],"root":"unitTest"}

View File

@ -299,16 +299,7 @@ class SampleClassGood(object):
def __init__ (self, fileName):
self.fileName = fileName
def calculate_area(radius: float, pi: float = 3.14) -> float:
return pi * radius ** 2
async def greet(name: str) -> str:
return f"Hello, {name}!"
def add_numbers(a: int, b: int, c: int) -> int:
return a + b + c

View File

@ -1 +1 @@
{"leaves":["dfs(G, s)","bfs(G, s)","dijk(G, s)","topo(G, ind=None, Q=[1])","adjm()","floy(A_and_n)","prim(G, s)","edglist()","krusk(E_and_n)","greet(name: str) -> str","add_numbers(a: int, b: int, c: int) -> int"],"nodes":[{"leaves":["__init__ (self, fileName)"],"name":"SampleClassBad"},{"leaves":["__init__ (self, fileName)","calculate_area(radius: float, pi: float = 3.14) -> float"],"name":"SampleClassGood"}],"root":"unitTest"}
{"leaves":["dfs(G, s)","bfs(G, s)","dijk(G, s)","topo(G, ind=None, Q=[1])","adjm()","floy(A_and_n)","prim(G, s)","edglist()","krusk(E_and_n)"],"nodes":[{"leaves":["__init__ (self, fileName)"],"name":"SampleClassBad"},{"leaves":["__init__ (self, fileName)"],"name":"SampleClassGood"}],"root":"unitTest"}

View File

@ -1,304 +0,0 @@
#!/usr/bin/env perl
# pltags - create a tags file for Perl code, for use by vi(m)
#
# Distributed with Vim <http://www.vim.org/>, latest version always available
# at <http://www.mscha.com/mscha.html?pltags#tools>
#
# Version 2.3, 28 February 2002
#
# Written by Michael Schaap <pltags@mscha.com>. Suggestions for improvement
# are very welcome!
#
# This script will not work with Perl 4 or below!
#
# Revision history:
# 1.0 1997? Original version, quickly hacked together
# 2.0 1999? Completely rewritten, better structured and documented,
# support for variables, packages, Exuberant Ctags extensions
# 2.1 Jun 2000 Fixed critical bug (typo in comment) ;-)
# Support multiple level packages (e.g. Archive::Zip::Member)
# 2.2 Jul 2001 'Glob' wildcards - especially useful under Windows
# (thanks to Serge Sivkov and Jason King)
# Bug fix: reset package name for each file
# 2.21 Jul 2001 Oops... bug in variable detection (/local../ -> /^local.../)
# 2.3 Feb 2002 Support variables declared with "our"
# (thanks to Lutz Mende)
# Complain about undeclared variables
use strict;
# Used modules
use Getopt::Long;
# Options with their defaults
my $do_subs = 1; # --subs, --nosubs include subs in tags file?
my $do_vars = 1; # --vars, --novars include variables in tags file?
my $do_pkgs = 1; # --pkgs, --nopkgs include packages in tags file?
my $do_exts = 1; # --extensions, --noextensions
# include Exuberant Ctags extensions
# Global variables
my $VERSION = "2.21"; # pltags version
my $status = 0; # GetOptions return value
my $file = ""; # File being processed
my @tags = (); # List of produced tags
my $is_pkg = 0; # Are we tagging a package?
my $has_subs = 0; # Has this file any subs yet?
my $package_name = ""; # Name of current package
my $var_continues = 0; # Variable declaration continues on last line
my $line = ""; # Current line in file
my $stmt = ""; # Current Perl statement
my @vars = (); # List of variables in declaration
my $var = ""; # Variable in declaration
my $tagline = ""; # Tag file line
# Create a tag file line and push it on the list of found tags
sub MakeTag($$$$$)
{
my ($tag, # Tag name
$type, # Type of tag
$is_static, # Is this a static tag?
$file, # File in which tag appears
$line) = @_; # Line in which tag appears
my $tagline = ""; # Created tag line
# Only process tag if not empty
if ($tag)
{
# Get rid of \n, and escape / and \ in line
chomp $line;
$line =~ s/\\/\\\\/g;
$line =~ s/\//\\\//g;
# Create a tag line
$tagline = "$tag\t$file\t/^$line\$/";
# If we're told to do so, add extensions
if ($do_exts)
{
$tagline .= ";\"\t$type"
. ($is_static ? "\tfile:" : "")
. ($package_name ? "\tclass:$package_name" : "");
}
# Push it on the stack
push (@tags, $tagline);
}
}
# Parse package name from statement
sub PackageName($)
{
my ($stmt) = @_; # Statement
# Look for the argument to "package". Return it if found, else return ""
if ($stmt =~ /^package\s+([\w:]+)/)
{
my $pkgname = $1;
# Remove any parent package name(s)
$pkgname =~ s/.*://;
return $pkgname;
}
else
{
return "";
}
}
# Parse sub name from statement
sub SubName($)
{
my ($stmt) = @_; # Statement
# Look for the argument to "sub". Return it if found, else return ""
if ($stmt =~ /^sub\s+([\w:]+)/)
{
my $subname = $1;
# Remove any parent package name(s)
$subname =~ s/.*://;
return $subname;
}
else
{
return "";
}
}
# Parse all variable names from statement
sub VarNames($)
{
my ($stmt) = @_;
# Remove my or local from statement, if present
$stmt =~ s/^(my|our|local)\s+//;
# Remove any assignment piece
$stmt =~ s/\s*=.*//;
# Now find all variable names, i.e. "words" preceded by $, @ or %
@vars = ($stmt =~ /[\$\@\%]([\w:]+)\b/g);
# Remove any parent package name(s)
map(s/.*://, @vars);
return (@vars);
}
sub functionNoParentheses {
return 1
}
############### Start ###############
print "\npltags $VERSION by Michael Schaap <mscha\@mscha.com>\n\n";
# Get options
$status = GetOptions("subs!" => \$do_subs,
"vars!" => \$do_vars,
"pkgs!" => \$do_pkgs,
"extensions!" => \$do_exts);
# Usage if error in options or no arguments given
unless ($status && @ARGV)
{
print "\n" unless ($status);
print " Usage: $0 [options] filename ...\n\n";
print " Where options can be:\n";
print " --subs (--nosubs) (don't) include sub declarations in tag file\n";
print " --vars (--novars) (don't) include variable declarations in tag file\n";
print " --pkgs (--nopkgs) (don't) include package declarations in tag file\n";
print " --extensions (--noextensions)\n";
print " (don't) include Exuberant Ctags / Vim style\n";
print " extensions in tag file\n\n";
print " Default options: ";
print ($do_subs ? "--subs " : "--nosubs ");
print ($do_vars ? "--vars " : "--novars ");
print ($do_pkgs ? "--pkgs " : "--nopkgs ");
print ($do_exts ? "--extensions\n\n" : "--noextensions\n\n");
print " Example: $0 *.pl *.pm ../shared/*.pm\n\n";
exit;
}
# Loop through files on command line - 'glob' any wildcards, since Windows
# doesn't do this for us
foreach $file (map { glob } @ARGV)
{
# Skip if this is not a file we can open. Also skip tags files and backup
# files
next unless ((-f $file) && (-r $file) && ($file !~ /tags$/)
&& ($file !~ /~$/));
print "Tagging file $file...\n";
$is_pkg = 0;
$package_name = "";
$has_subs = 0;
$var_continues = 0;
open (IN, $file) or die "Can't open file '$file': $!";
# Loop through file
foreach $line (<IN>)
{
# Statement is line with comments and whitespace trimmed
($stmt = $line) =~ s/#.*//;
$stmt =~ s/^\s*//;
$stmt =~ s/\s*$//;
# Nothing left? Never mind.
next unless ($stmt);
# This is a variable declaration if one was started on the previous
# line, or if this line starts with my or local
if ($var_continues or ($stmt =~/^my\b/)
or ($stmt =~/^our\b/) or ($stmt =~/^local\b/))
{
# The declaration continues if the line does not end with ;
$var_continues = ($stmt !~ /;$/);
# Loop through all variable names in the declaration
foreach $var (VarNames($stmt))
{
# Make a tag for this variable unless we're told not to. We
# assume that a variable is always static, unless it appears
# in a package before any sub. (Not necessarily true, but
# it's ok for most purposes and Vim works fine even if it is
# incorrect)
if ($do_vars)
{
MakeTag($var, "v", (!$is_pkg or $has_subs), $file, $line);
}
}
}
# This is a package declaration if the line starts with package
elsif ($stmt =~/^package\b/)
{
# Get name of the package
$package_name = PackageName($stmt);
if ($package_name)
{
# Remember that we're doing a package
$is_pkg = 1;
# Make a tag for this package unless we're told not to. A
# package is never static.
if ($do_pkgs)
{
MakeTag($package_name, "p", 0, $file, $line);
}
}
}
# This is a sub declaration if the line starts with sub
elsif ($stmt =~/^sub\b/)
{
# Remember that this file has subs
$has_subs = 1;
# Make a tag for this sub unless we're told not to. We assume
# that a sub is static, unless it appears in a package. (Not
# necessarily true, but it's ok for most purposes and Vim works
# fine even if it is incorrect)
if ($do_subs)
{
MakeTag(SubName($stmt), "s", (!$is_pkg), $file, $line);
}
}
}
close (IN);
}
# Do we have any tags? If so, write them to the tags file
if (@tags)
{
# Add some tag file extensions if we're told to
if ($do_exts)
{
push (@tags, "!_TAG_FILE_FORMAT\t2\t/extended format/");
push (@tags, "!_TAG_FILE_SORTED\t1\t/0=unsorted, 1=sorted/");
push (@tags, "!_TAG_PROGRAM_AUTHOR\tMichael Schaap\t/mscha\@mscha.com/");
push (@tags, "!_TAG_PROGRAM_NAME\tpltags\t//");
push (@tags, "!_TAG_PROGRAM_VERSION\t$VERSION\t/supports multiple tags and extended format/");
}
print "\nWriting tags file.\n";
open (OUT, ">tags") or die "Can't open tags file: $!";
foreach $tagline (sort @tags)
{
print OUT "$tagline\n";
}
close (OUT);
}
else
{
print "\nNo tags found.\n";
}

View File

@ -1 +0,0 @@
{"leaves":["MakeTag","PackageName","SubName","VarNames","functionNoParentheses"],"root":"unitTest"}

View File

@ -56,14 +56,6 @@ unsafe fn unsafe_example(n: u32) {
}
}
/*
unsafe fn commented_func(n: u32) {
for n in 1..n + 1 {
fizzbuzz(n);
}
}
*/
// Declares a function with the "C" ABI
extern "C" fn new_i32() -> i32 { 0 }

View File

@ -1,25 +0,0 @@
%macro printz/parmbuff;
%put Syspbuff contains: &syspbuff;
%let num=1;
%let dsname=%scan(&syspbuff,&num);
%do %while(&dsname ne);
proc print data=&dsname;
run;
%let num=%eval(&num+1);
%let dsname=%scan(&syspbuff,&num);
%end;
%mend printz;
%printz(purple,red,blue,teal)
proc cas;
function SharedBday(days, number);
p = exp( lgamma(days+1) - lgamma(days-number+1) - number*log(days));
return (1-p);
end func;
do n over {3 10 22 23 50 75};
p = SharedBday(365,n);
print "Chance at least 2 out of " put(n,best3.) "
share the same birthday = " put(p,best6.2);
end;
run;

View File

@ -1 +0,0 @@
{"leaves":["%macro printz","function SharedBday"],"root":"unitTest"}

View File

@ -1,154 +0,0 @@
create package CheckFunctionList_pck
as
function ctrlData(
po_severity in out nocopy varchar2,
po_err_code in out nocopy varchar2,
po_err_message in out nocopy varchar2,
p_Data in ind_work_data_r
) return boolean;
procedure INIT_DECODE_RULES1 (po_severity in out varchar2
,po_err_code in out varchar2
,po_err_message in out varchar2
,po_tabDecRules out nocopy report_utl_pck.tTabDecRules
);
procedure INIT_DECODE_RULES2 (po_severity in out varchar2
,po_err_code in out varchar2
,po_err_message in out varchar2
,po_tabDecRules out nocopy report_utl_pck.tTabDecRules);
function GetEsecId
return tab1.esec_id%type;
procedure pippo;
procedure INIT_DECODE_RULES3 (po_severity in out varchar2
,po_err_code in out varchar2
,po_err_message in out varchar2
,po_guid in guid_list_t := guid_list_t()
,po_tabDecRules out nocopy report_utl_pck.tTabDecRules);
procedure INIT_DECODE_RULES4 (po_severity in out varchar2
,po_err_code in out varchar2
,po_err_message in out varchar2
,po_guid in guid_list_t := guid_list_t()
,po_tabDecRules out nocopy report_utl_pck.tTabDecRules
);
procedure INIT_DECODE_RULES5 (po_severity in out varchar2
,po_err_code in out varchar2
,po_err_message in out varchar2 -- this is a comment with (brackets)
,po_tabDecRules out nocopy report_utl_pck.tTabDecRules);
procedure INIT_DECODE_RULES6 (po_severity in out varchar2
,po_err_code in out varchar2
,po_err_message in out varchar2 -- this is a comment with (brackets)
,po_tabDecRules out nocopy report_utl_pck.tTabDecRules
);
end CheckFunctionList_pck;
/
create package body CheckFunctionList_pck
as
function ctrlData(
po_severity in out nocopy varchar2,
po_err_code in out nocopy varchar2,
po_err_message in out nocopy varchar2,
p_Data in ind_work_data_r
) return boolean
is
begin
return null;
end ctrlData;
procedure INIT_DECODE_RULES1 (po_severity in out varchar2
,po_err_code in out varchar2
,po_err_message in out varchar2
,po_tabDecRules out nocopy report_utl_pck.tTabDecRules
)
as
begin
null;
end INIT_DECODE_RULES1;
procedure INIT_DECODE_RULES2 (po_severity in out varchar2
,po_err_code in out varchar2
,po_err_message in out varchar2
,po_tabDecRules out nocopy report_utl_pck.tTabDecRules)
as
begin
null;
end INIT_DECODE_RULES2;
function GetEsecId
return tab1.esec_id%type
is
begin
return null;
end GetEsecId;
procedure pippo
is
begin
null;
end pippo;
procedure INIT_DECODE_RULES3 (po_severity in out varchar2
,po_err_code in out varchar2
,po_err_message in out varchar2
,po_guid in guid_list_t := guid_list_t()
,po_tabDecRules out nocopy report_utl_pck.tTabDecRules)
as
begin
null;
end INIT_DECODE_RULES3;
procedure INIT_DECODE_RULES4 (po_severity in out varchar2
,po_err_code in out varchar2
,po_err_message in out varchar2
,po_guid in guid_list_t := guid_list_t()
,po_tabDecRules out nocopy report_utl_pck.tTabDecRules
)
as
begin
null;
end INIT_DECODE_RULES4;
procedure INIT_DECODE_RULES5 (po_severity in out varchar2
,po_err_code in out varchar2
,po_err_message in out varchar2 -- this is a comment with (brackets)
,po_tabDecRules out nocopy report_utl_pck.tTabDecRules)
as
begin
null;
end INIT_DECODE_RULES5;
procedure INIT_DECODE_RULES6 (po_severity in out varchar2
,po_err_code in out varchar2
,po_err_message in out varchar2 -- this is a comment with (brackets)
,po_tabDecRules out nocopy report_utl_pck.tTabDecRules
)
as
begin
null;
end INIT_DECODE_RULES6;
end CheckFunctionList_pck;
/

View File

@ -1 +0,0 @@
{"leaves":["ctrlData(\r\n po_severity in out nocopy varchar2,\r\n po_err_code in out nocopy varchar2,\r\n po_err_message in out nocopy varchar2,\r\n p_Data in ind_work_data_r\r\n) return boolean","INIT_DECODE_RULES1 (po_severity in out varchar2\r\n ,po_err_code in out varchar2\r\n ,po_err_message in out varchar2\r\n ,po_tabDecRules out nocopy report_utl_pck.tTabDecRules\r\n )","INIT_DECODE_RULES2 (po_severity in out varchar2\r\n ,po_err_code in out varchar2\r\n ,po_err_message in out varchar2\r\n ,po_tabDecRules out nocopy report_utl_pck.tTabDecRules)","GetEsecId\r\nreturn tab1.esec_id%type","pippo","INIT_DECODE_RULES3 (po_severity in out varchar2\r\n ,po_err_code in out varchar2\r\n ,po_err_message in out varchar2\r\n ,po_guid in guid_list_t := guid_list_t()","INIT_DECODE_RULES4 (po_severity in out varchar2\r\n ,po_err_code in out varchar2\r\n ,po_err_message in out varchar2\r\n ,po_guid in guid_list_t := guid_list_t()","INIT_DECODE_RULES5 (po_severity in out varchar2\r\n ,po_err_code in out varchar2\r\n ,po_err_message in out varchar2 -- this is a comment with (brackets)","INIT_DECODE_RULES6 (po_severity in out varchar2\r\n ,po_err_code in out varchar2\r\n ,po_err_message in out varchar2 -- this is a comment with (brackets)","ctrlData(\r\n po_severity in out nocopy varchar2,\r\n po_err_code in out nocopy varchar2,\r\n po_err_message in out nocopy varchar2,\r\n p_Data in ind_work_data_r\r\n) return boolean\r\nis\r\nbegin\r\n return null","INIT_DECODE_RULES1 (po_severity in out varchar2\r\n ,po_err_code in out varchar2\r\n ,po_err_message in out varchar2\r\n ,po_tabDecRules out nocopy report_utl_pck.tTabDecRules\r\n )","INIT_DECODE_RULES2 (po_severity in out varchar2\r\n ,po_err_code in out varchar2\r\n ,po_err_message in out varchar2\r\n ,po_tabDecRules out nocopy report_utl_pck.tTabDecRules)","GetEsecId\r\nreturn tab1.esec_id%type\r\nis\r\nbegin\r\n return null","pippo","INIT_DECODE_RULES3 (po_severity in out varchar2\r\n ,po_err_code in out varchar2\r\n ,po_err_message in out varchar2\r\n ,po_guid in guid_list_t := guid_list_t()","INIT_DECODE_RULES4 (po_severity in out varchar2\r\n ,po_err_code in out varchar2\r\n ,po_err_message in out varchar2\r\n ,po_guid in guid_list_t := guid_list_t()","INIT_DECODE_RULES5 (po_severity in out varchar2\r\n ,po_err_code in out varchar2\r\n ,po_err_message in out varchar2 -- this is a comment with (brackets)","INIT_DECODE_RULES6 (po_severity in out varchar2\r\n ,po_err_code in out varchar2\r\n ,po_err_message in out varchar2 -- this is a comment with (brackets)"],"root":"unitTest"}

View File

@ -1,90 +0,0 @@
CREATE OR REPLACE PACKAGE BODY emp_mgmt AS
tot_emps NUMBER;
tot_depts NUMBER;
FUNCTION hire
(last_name VARCHAR2, job_id VARCHAR2,
manager_id NUMBER, salary NUMBER,
commission_pct NUMBER, department_id NUMBER)
RETURN NUMBER IS new_empno NUMBER;
BEGIN
SELECT employees_seq.NEXTVAL
INTO new_empno
FROM DUAL;
INSERT INTO employees
VALUES (new_empno, 'First', 'Last','first.last@oracle.com',
'(123)123-1234','18-JUN-02','IT_PROG',90000000,00,
100,110);
tot_emps := tot_emps + 1;
RETURN(new_empno);
END;
FUNCTION create_dept(department_id NUMBER, location_id NUMBER)
RETURN NUMBER IS
new_deptno NUMBER;
BEGIN
SELECT departments_seq.NEXTVAL
INTO new_deptno
FROM dual;
INSERT INTO departments
VALUES (new_deptno, 'department name', 100, 1700);
tot_depts := tot_depts + 1;
RETURN(new_deptno);
END;
PROCEDURE remove_emp (employee_id NUMBER) IS
BEGIN
DELETE FROM employees
WHERE employees.employee_id = remove_emp.employee_id;
tot_emps := tot_emps - 1;
END;
PROCEDURE remove_dept(department_id NUMBER) IS
BEGIN
DELETE FROM departments
WHERE departments.department_id = remove_dept.department_id;
tot_depts := tot_depts - 1;
SELECT COUNT(*) INTO tot_emps FROM employees;
END;
PROCEDURE increase_sal(employee_id NUMBER, salary_incr NUMBER) IS
curr_sal NUMBER;
BEGIN
SELECT salary INTO curr_sal FROM employees
WHERE employees.employee_id = increase_sal.employee_id;
IF curr_sal IS NULL
THEN RAISE no_sal;
ELSE
UPDATE employees
SET salary = salary + salary_incr
WHERE employee_id = employee_id;
END IF;
END;
PROCEDURE increase_comm(employee_id NUMBER, comm_incr NUMBER) IS
curr_comm NUMBER;
BEGIN
SELECT commission_pct
INTO curr_comm
FROM employees
WHERE employees.employee_id = increase_comm.employee_id;
IF curr_comm IS NULL
THEN RAISE no_comm;
ELSE
UPDATE employees
SET commission_pct = commission_pct + comm_incr;
END IF;
END;
END emp_mgmt;
/*
PROCEDURE commented_func(employee_id NUMBER, comm_incr NUMBER) IS
curr_comm NUMBER;
BEGIN
SELECT commission_pct
INTO curr_comm
FROM employees
WHERE employees.employee_id = increase_comm.employee_id;
IF curr_comm IS NULL
THEN RAISE no_comm;
ELSE
UPDATE employees
SET commission_pct = commission_pct + comm_incr;
END IF;
END;
END emp_mgmt;
*/
/

View File

@ -1 +0,0 @@
{"leaves":["hire \r\n (last_name VARCHAR2, job_id VARCHAR2, \r\n manager_id NUMBER, salary NUMBER, \r\n commission_pct NUMBER, department_id NUMBER) \r\n RETURN NUMBER IS new_empno NUMBER","create_dept(department_id NUMBER, location_id NUMBER) \r\n RETURN NUMBER IS \r\n new_deptno NUMBER","remove_emp (employee_id NUMBER)","remove_dept(department_id NUMBER)","increase_sal(employee_id NUMBER, salary_incr NUMBER)","increase_comm(employee_id NUMBER, comm_incr NUMBER)"],"root":"unitTest"}

View File

@ -1,46 +0,0 @@
\documentclass[12pt]{article}
\usepackage{lingmacros}
\usepackage{tree-dvips}
\begin{document}
\section*{Notes for My Paper}
Don't forget to include examples of topicalization.
They look like this:
{\small
\enumsentence{Topicalization from sentential subject:\\
\shortex{7}{a John$_i$ [a & kltukl & [el &
{\bf l-}oltoir & er & ngii$_i$ & a Mary]]}
{ & {\bf R-}clear & {\sc comp} &
{\bf IR}.{\sc 3s}-love & P & him & }
{John, (it's) clear that Mary loves (him).}}
}
\subsection*{How to handle topicalization}
I'll just assume a tree structure like (\ex{1}).
{\small
\enumsentence{Structure of A$'$ Projections:\\ [2ex]
\begin{tabular}[t]{cccc}
& \node{i}{CP}\\ [2ex]
\node{ii}{Spec} & &\node{iii}{C$'$}\\ [2ex]
&\node{iv}{C} & & \node{v}{SAgrP}
\end{tabular}
\nodeconnect{i}{ii}
\nodeconnect{i}{iii}
\nodeconnect{iii}{iv}
\nodeconnect{iii}{v}
}
}
\subsection*{Mood}
Mood changes when there is a topic, as well as when
there is WH-movement. \emph{Irrealis} is the mood when
there is a non-subject topic or WH-phrase in Comp.
\emph{Realis} is the mood when there is a subject topic
or WH-phrase.
\end{document}

View File

@ -1 +0,0 @@
{"leaves":["\\begin{document}","\\section*{Notes for My Paper}","\\subsection*{How to handle topicalization}","\\begin{tabular}[t]{cccc}","\\subsection*{Mood}"],"root":"unitTest"}

View File

@ -1,58 +0,0 @@
# This is a TOML document.
title = "TOML Example"
[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00 # First class dates
[database]
server = "192.168.1.1"
ports = [ 8000, 8001, 8002 ]
connection_max = 5000
enabled = true
[servers]
toto = "titi"
# Indentation (spaces) is allowed but not required
[servers.alpha]
ip = "10.0.0.1"
dc = "eqdc10"
# Indentation (tabs) is allowed but not required
[servers.beta]
ip = "10.0.0.2"
dc = "eqdc10"
# No indentation is correct too
[servers.gamma]
ip = "10.0.0.3"
dc = "eqdc10"
[servers_underscore]
ip = "10.0.0.4"
dc = "eqdc10"
[servers."double-quot"]
ip = "10.0.0.4"
dc = "eqdc10"
[servers.'single-quot']
ip = "10.0.0.4"
dc = "eqdc10"
[clients]
data = [ ["gamma", "delta"], [1, 2] ]
[clients-2nd-group]
data2 = "Another data"
# Line breaks are OK when inside arrays
hosts = [
"alpha",
"omega"
]

View File

@ -1 +0,0 @@
{"leaves":["owner","database","servers","servers.alpha","servers.beta","servers.gamma","servers_underscore","servers.\"double-quot\"","servers.'single-quot'","clients","clients-2nd-group"],"root":"unitTest"}

View File

@ -1,374 +0,0 @@
var crypto = require('crypto'),
Friends,
User,
Post,
WallPost,
Comment,
LoginToken;
function extractKeywords(text) {
if (!text) return [];
return text.
split(/\s+/).
filter(function(v) { return v.length > 2; }).
filter(function(v, i, a) { return a.lastIndexOf(v) === i; });
}
/*
function commentedFunc(text) {
if (!text) return [];
return text.
split(/\s+/).
filter(function(v) { return v.length > 2; }).
filter(function(v, i, a) { return a.lastIndexOf(v) === i; });
}
*/
function convertBasicMarkup(input, allowHtml) {
var strongRe = /[*]{2}([^*]+)[*]{2}/gm;
var emRe = /[*]{1}([^*]+)[*]{1}/gm;
var linkRe = /\[([^\]]*)\]\(([^\)]*?)\)/gm;
var nlRe = /\r\n/gm;
var crRe = /\r/gm;
// special re's to revert linebreaks from <br />
var codeRe = /(<code\b[^>]*>(.*?)<\/code>)/gm;
// cleanup newlines
input = input.replace(nlRe, "\n");
input = input.replace(crRe, "\n");
// strip existing html before inserting breaks/markup
if (!allowHtml) {
// strip html
input = input
.replace(/&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#39;');
}
// convert newlines to breaks
input = input.replace(/\n/gm, '<br />');
// replace basic markup
input = input.replace(strongRe, function(whole, m1, m2, m3) {
return '<strong>' + m1 + '</strong>';
});
input = input.replace(emRe, function(whole, m1, m2, m3) {
return '<em>' + m1 + '</em>';
});
input = input.replace(linkRe, function(whole, m1, m2) {
// fix up protocol
if (!m2.match(/(http(s?)|ftp(s?)):\/\//gm))
// prepend http as default
m2 = 'http://' + m2;
return '<a href=\"' + m2 + '\" target=\"_blank\">' + m1 + '</a>';
});
// revert code blocks
input = input.replace(codeRe, function(whole, m1) {
return m1.replace(/<br \/>/gm, '\n');
});
return input;
}
function defineModels(mongoose, fn) {
var Schema = mongoose.Schema,
ObjectId = Schema.ObjectId;
/**
* Comment model
*
* Used for persisting user comments
*/
var Comment = new Schema({
user_id: ObjectId,
//photo:String,
date: Date,
body: String,
post_id:ObjectId,
});
// register virtual members
Comment.virtual('readableday')
.get(function() {
var day = this.date.getDate();
return (day < 10 ? '0' + day : day);
});
Comment.virtual('readablemonth')
.get(function() {
return monthNamesShort[this.date.getMonth()];
});
Comment.virtual('readabletime')
.get(function() {
var hour = this.date.getHours();
var minute = this.date.getMinutes();
return (hour < 10 ? '0' + hour : hour) + ':' + (minute < 10 ? '0' + minute : minute);
});
Comment.virtual('bodyParsed')
.get(function() {
return convertBasicMarkup(this.body, false);
});
// register validators
/*Comment.path('author').validate(function(val) {
return val.length > 0;
}, 'AUTHOR_MISSING');*/
Comment.path('body').validate(function(val) {
return val.length > 0;
}, 'BODY_MISSING');
/**
* Model: WallPost
*/
var WallPost = new Schema({
friend_id: String,
preview: String,
body: String,
//rsstext: String,
slug: String,
created: Date,
modified: Date,
//tags: [String],
user_id:ObjectId,
posted_on_user_id : ObjectId,
//comments: [Comment]
});
var monthNames = [ 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli',
'August', 'September', 'Oktober', 'November', 'Dezember' ];
var monthNamesShort = [ 'Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul',
'Aug', 'Sep', 'Okt', 'Nov', 'Dez' ];
// define virtual getter method for id (readable string)
WallPost.virtual('id')
.get(function() {
return this._id.toHexString();
});
WallPost.virtual('url')
.get(function() {
// build url for current post
var year = this.created.getFullYear();
var month = this.created.getMonth() + 1;
var day = this.created.getDate();
return '/' + year + '/' + (month < 10 ? '0' + month : month) + '/' + (day < 10 ? '0' + day : day) + '/' + this.slug + '/';
});
WallPost.virtual('rfc822created')
.get(function() {
return this.created.toGMTString();
});
WallPost.virtual('readabledate')
.get(function() {
var year = this.created.getFullYear();
var month = monthNames[this.created.getMonth()];
var day = this.created.getDate();
return (day < 10 ? '0' + day : day) + '. ' + month + ' ' + year;
});
WallPost.virtual('readableday')
.get(function() {
var day = this.created.getDate();
return (day < 10 ? '0' + day : day);
});
WallPost.virtual('readablemonth')
.get(function() {
return monthNamesShort[this.created.getMonth()];
});
WallPost.virtual('previewParsed')
.get(function() {
return convertBasicMarkup(this.preview, true);
});
WallPost.virtual('bodyParsed')
.get(function() {
return convertBasicMarkup(this.body, true);
});
// register validators
/*WallPost.path('title').validate(function(val) {
return val.length > 0;
}, 'TITLE_MISSING');
WallPost.path('preview').validate(function(val) {
return val.length > 0;
}, 'PREVIEW_MISSING');
WallPost.path('rsstext').validate(function(val) {
return val.length > 0;
}, 'RSSTEXT_MISSING');*/
WallPost.path('body').validate(function(val) {
return val.length > 0;
}, 'BODY_MISSING');
// generate a proper slug value for Wallpost
function slugGenerator (options){
options = options || {};
var key = options.key || 'body';
return function slugGenerator(schema){
schema.path(key).set(function(v){
this.slug = v.toLowerCase().replace(/[^a-z0-9]/g, '-').replace(/\++/g, '');
return v;
});
};
};
// attach slugGenerator plugin to Wallpost schema
WallPost.plugin(slugGenerator());
/**
* Model: User
*/
function validatePresenceOf(value) {
return value && value.length;
}
var User = new Schema({
'first_name': { type: String, validate: /[a-z]/ },
'last_name':{ type: String, validate: /[a-z]/ },
'age':Number,
'sex':{ type: String},
'photo':String,
'location':{ type: String, validate: /[a-z]/ },
'latitude' : String,
'longitude' : String,
'keywords': [String],
'username':String,
'email': { type: String, validate: [validatePresenceOf, 'an email is required'], index: { unique: true }, required:true },
'hashed_password': { type: String},
'salt': String,
});
User.virtual('id')
.get(function() {
return this._id.toHexString();
});
User.virtual('password')
.set(function(password) {
this._password = password;
this.salt = this.makeSalt();
this.hashed_password = this.encryptPassword(password);
})
.get(function() { return this._password; });
User.method('authenticate', function(plainText) {
return this.encryptPassword(plainText) === this.hashed_password;
});
User.method('makeSalt', function() {
return Math.round((new Date().valueOf() * Math.random())) + '';
});
User.method('encryptPassword', function(password) {
return crypto.createHmac('sha1', this.salt).update(password).digest('hex');
});
User.pre('save', function(next) {
this.keywords = extractKeywords(this.first_name);
next();
if (!validatePresenceOf(this.password)) {
next(new Error('Invalid password'));
} else {
next();
}
});
var Friends = new Schema({
requestor : String
, acceptor : String
, date_requested : Date
, status:Number
});
Friends.virtual('id')
.get(function() {
return this._id.toHexString();
});
var Post = new Schema({
filename : { type: String, index: true }
, file : String
, created_at : Date
, user_id: ObjectId
});
Post.virtual('id')
.get(function() {
return this._id.toHexString();
});
/**
* Model: LoginToken
*
* Used for session persistence.
*/
var LoginToken = new Schema({
email: { type: String, index: true },
series: { type: String, index: true },
token: { type: String, index: true }
});
LoginToken.method('randomToken', function() {
return Math.round((new Date().valueOf() * Math.random())) + '';
});
LoginToken.pre('save', function(next) {
// Automatically create the tokens
this.token = this.randomToken();
if (this.isNew)
this.series = this.randomToken();
next();
});
LoginToken.virtual('id')
.get(function() {
return this._id.toHexString();
});
LoginToken.virtual('cookieValue')
.get(function() {
return JSON.stringify({ email: this.email, token: this.token, series: this.series });
});
mongoose.model('User', User);
mongoose.model('Post', Post);
mongoose.model('Friends', Friends);
mongoose.model('LoginToken', LoginToken);
mongoose.model('WallPost', WallPost);
mongoose.model('Comment', Comment);
fn();
}
exports.defineModels = defineModels;

View File

@ -1 +0,0 @@
{"leaves":["extractKeywords","convertBasicMarkup","function","function","function","function","defineModels","slugGenerator","slugGenerator","validatePresenceOf","function","function","function","function","function","function"],"root":"unitTest"}

View File

@ -1,194 +0,0 @@
::StartupScript
npp_console keep
npp_exec "SetSingleEdgeLine"
::MultipleSelectAddNext
npp_console keep
sci_sendmsg SCI_SETSEARCHFLAGS SCFIND_WHOLEWORD
sci_sendmsg SCI_TARGETWHOLEDOCUMENT
sci_sendmsg SCI_MULTIPLESELECTADDNEXT
::MultipleSelectAddEach
npp_console keep
sci_sendmsg SCI_SETSEARCHFLAGS SCFIND_WHOLEWORD
sci_sendmsg SCI_TARGETWHOLEDOCUMENT
sci_sendmsg SCI_GETSELECTIONEMPTY
if $(MSG_RESULT) == 1 then
sci_sendmsg SCI_MULTIPLESELECTADDNEXT
endif
sci_sendmsg SCI_MULTIPLESELECTADDEACH
::SetSingleEdgeLine
npp_console keep
sci_sendmsg SCI_SETEDGECOLUMN 80
sci_sendmsg SCI_SETEDGEMODE EDGE_LINE
::ConfigSingleEdgeLine
npp_console keep
sci_sendmsg SCI_GETEDGECOLUMN
inputbox "Input edge column" : "Edge column" : $(MSG_RESULT)
sci_sendmsg SCI_SETEDGECOLUMN $(INPUT)
sci_sendmsg SCI_SETEDGEMODE EDGE_LINE
::SingleEdgeLineOn
npp_console keep
sci_sendmsg SCI_SETEDGEMODE EDGE_LINE
::MultipleEdgeLinesOn
npp_console keep
sci_sendmsg SCI_SETEDGEMODE EDGE_MULTILINE
::BackgroundEdgeOn
npp_console keep
sci_sendmsg SCI_SETEDGEMODE EDGE_BACKGROUND
::EdgesOff
npp_console keep
sci_sendmsg SCI_SETEDGEMODE EDGE_NONE
::WrapSelectedLinesAtEdge
npp_console keep
sci_sendmsg SCI_GETEDGEMODE
if~ $(MSG_RESULT) != EDGE_LINE then
set local $(LinePixelWidth) = 0
goto :DoWrap
endif
sci_sendmsg SCI_GETEDGECOLUMN
set local $(LineCharWidth) ~ $(MSG_RESULT) + 1
set local $(TemplateStr) = W
set local $(Cnt) = 2
:ForLoopStart
if $(Cnt) > $(LineCharWidth) goto :ForLoopEnd
set local $(TemplateStr) = $(TemplateStr)W
set local $(Cnt) ~ $(Cnt) + 1
goto :ForLoopStart
:ForLoopEnd
sci_sendmsg SCI_TEXTWIDTH STYLE_DEFAULT "$(TemplateStr)"
set local $(LinePixelWidth) = $(MSG_RESULT)
:DoWrap
sci_sendmsg SCI_TARGETFROMSELECTION
sci_sendmsg SCI_LINESSPLIT $(LinePixelWidth)
::DeleteLinesFrom2ndView
npp_console keep
npp_console disable
npe_console -- m-
sci_sendmsg SCI_DOCUMENTSTART
npp_sendmsg NPPM_MENUCOMMAND 0 IDM_VIEW_SWITCHTO_OTHER_VIEW
sci_sendmsg SCI_DOCUMENTSTART
npp_sendmsg NPPM_GETCURRENTVIEW
if $(MSG_RESULT) == 0 then
npp_sendmsg NPPM_MENUCOMMAND 0 IDM_VIEW_SWITCHTO_OTHER_VIEW
endif
sci_sendmsg SCI_GETLINECOUNT
set local $(LineCount) = $(MSG_RESULT)
set local $(LineIdx) = 0
:ProcessSearchTerms
if $(LineIdx) >= $(LineCount) goto :End
sci_sendmsg SCI_GETLINE $(LineIdx) @""
set local $(CurLine) = $(MSG_LPARAM)
if "$(CurLine)" == "" goto :AdvanceToNextLine
npp_sendmsg NPPM_MENUCOMMAND 0 IDM_VIEW_SWITCHTO_OTHER_VIEW
sci_sendmsg SCI_GETCURRENTPOS
sci_sendmsg SCI_LINEFROMPOSITION $(MSG_RESULT)
set local $(StartLineIdx) = $(MSG_RESULT)
set local $(Flags) ~ NPE_SF_SETPOS
:ReplaceLoop
sci_find $(Flags) "$(CurLine)"
if $(MSG_RESULT) == -1 goto :ReplaceLoopEnd
sci_sendmsg SCI_LINEFROMPOSITION $(MSG_RESULT)
set local $(FoundLineIdx) = $(MSG_RESULT)
sci_sendmsg SCI_GETLINE $(FoundLineIdx) @""
set local $(FoundLine) = $(MSG_LPARAM)
set local $(FoundLineLC) ~ strlower "$(FoundLine)"
set local $(CurLineLC) ~ strlower "$(CurLine)"
if "$(FoundLineLC)" == "$(CurLineLC)" then
sci_sendmsg SCI_GOTOLINE $(FoundLineIdx)
sci_sendmsg SCI_LINEDELETE
endif
set local $(Flags) ~ $(Flags) | NPE_SF_NEXT
goto :ReplaceLoop
:ReplaceLoopEnd
sci_sendmsg SCI_GOTOLINE $(StartLineIdx)
npp_sendmsg NPPM_MENUCOMMAND 0 IDM_VIEW_SWITCHTO_OTHER_VIEW
:AdvanceToNextLine
set local $(LineIdx) ~ $(LineIdx) + 1
goto :ProcessSearchTerms
:End
sci_sendmsg SCI_DOCUMENTSTART
npp_sendmsg NPPM_MENUCOMMAND 0 IDM_VIEW_SWITCHTO_OTHER_VIEW
sci_sendmsg SCI_DOCUMENTSTART
npp_sendmsg NPPM_GETCURRENTVIEW
if $(MSG_RESULT) == 1 then
npp_sendmsg NPPM_MENUCOMMAND 0 IDM_VIEW_SWITCHTO_OTHER_VIEW
endif
npp_console enable
::ReadLongText
npp_console keep
npp_sendmsg WM_COMMAND IDM_VIEW_CLONE_TO_ANOTHER_VIEW
sci_sendmsg SCI_PAGEDOWN
npp_sendmsg WM_COMMAND IDM_VIEW_SYNSCROLLV
::TrimTrailingSpace
npp_console keep
npp_sendmsg WM_COMMAND IDM_EDIT_TRIMTRAILING

View File

@ -1 +0,0 @@
{"nodes":[{"leaves":["::StartupScript"],"name":"StartupScript"},{"leaves":["::MultipleSelectAddNext"],"name":"MultipleSelectAddNext"},{"leaves":["::MultipleSelectAddEach"],"name":"MultipleSelectAddEach"},{"leaves":["::SetSingleEdgeLine"],"name":"SetSingleEdgeLine"},{"leaves":["::ConfigSingleEdgeLine"],"name":"ConfigSingleEdgeLine"},{"leaves":["::SingleEdgeLineOn"],"name":"SingleEdgeLineOn"},{"leaves":["::MultipleEdgeLinesOn"],"name":"MultipleEdgeLinesOn"},{"leaves":["::BackgroundEdgeOn"],"name":"BackgroundEdgeOn"},{"leaves":["::EdgesOff"],"name":"EdgesOff"},{"leaves":["::WrapSelectedLinesAtEdge","ForLoopStart","ForLoopEnd","DoWrap"],"name":"WrapSelectedLinesAtEdge"},{"leaves":["::DeleteLinesFrom2ndView","ProcessSearchTerms","ReplaceLoop","ReplaceLoopEnd","AdvanceToNextLine","End"],"name":"DeleteLinesFrom2ndView"},{"leaves":["::ReadLongText"],"name":"ReadLongText"},{"leaves":["::TrimTrailingSpace"],"name":"TrimTrailingSpace"}],"root":"unitTest"}

View File

@ -1,28 +0,0 @@
+++
title = "Make Your Business Card with Notepad++"
description = ""
date = "2011-12-25"
menu = "main"
+++
2011-12-25
Notepad++ is not just a text/code editor, you can use it to make your business card:
![Business Card](/news/images/npp.businessCard.jpg)
Here are some tips/instructions to help you make your original business card with Notepad++:
1. Hide menu, tab bar and status bar (you probably want to hide tool bar if you have more content to show) via the General tab of Preferences dialog.
2. Hide folder margin, bookmark margin, line number margin and current line highlighting via the Editing tab of Preference dialog.
3. Check "Show only filename in title bar" via "MISC." tab of Preference Dialog, this removes the full path and keep only the file name on the caption bar.
4. Resize Notepad++ to fit the size of your empty business card to print. (I made the Notepad++ size on screen just fit my card)
5.Type the content of your business card with your favorite programming language (html, xml, php, c, c++, etc...) then set the language's syntax highlighting via menu Language (type "Alt" to show menu).
6. Launch "Style Configurator" Dialog (via menu "Settings") to tune up the syntax highlighting of your language of choice (for the bg/fg colour, font style and font size). You can choose the theme (on the top) as well to have the different look & feel. Save & close it.
7. Print your card - Do the screen capture by "Alt + Print Screen", Then paste it into Word to print.
8. That's it. Enjoy making your geek business card!
The original idea came from [Albert Hwang's Notepad Business Card](https://www.albert-hwang.com/blog/2011/12/re-my-business-card).
Happy Isaac Newton's Birthday!

View File

@ -1 +0,0 @@
{"leaves":["(/news/images/npp.businessCard.jpg)","(you probably want to hide tool bar if you have more content to show)","(I made the Notepad++ size on screen just fit my card)","(html, xml, php, c, c++, etc...)","(type \"Alt\" to show menu)","(via menu \"Settings\")","(for the bg/fg colour, font style and font size)","(on the top)","(https://www.albert-hwang.com/blog/2011/12/re-my-business-card)"],"root":"unitTest"}

View File

@ -19,36 +19,20 @@ Try {
{
return 1
}
if ($langName.StartsWith("udl-"))
{
$langName = $langName.Replace("udl-", "")
..\..\bin\notepad++.exe -export=functionList -udl="$langName" $testRoot$dirName\unitTest | Out-Null
}
else
{
..\..\bin\notepad++.exe -export=functionList -l"$langName" $testRoot$dirName\unitTest | Out-Null
}
..\..\bin\notepad++.exe -export=functionList -l"$langName" $testRoot$dirName\unitTest | Out-Null
$expectedRes = Get-Content $testRoot$dirName\unitTest.expected.result
$generatedRes = Get-Content $testRoot$dirName\unitTest.result.json
# Some parser results contain CRLF or LF (\r\n or \n) dependent of file EOL format
# In order to make tests pass in any environment, all the CRLF turning into LF (if any) in both strings
$expectedRes = $expectedRes.replace('\r\n','\n')
$generatedRes = $generatedRes.replace('\r\n','\n')
if ($generatedRes -eq $expectedRes)
{
Remove-Item $testRoot$dirName\unitTest.result.json
return 0
Remove-Item $testRoot$dirName\unitTest.result.json
return 0
}
else
{
$expectedRes
"`nvs`n"
$generatedRes
return -1
}
}
}
}
Catch

View File

@ -1,6 +1,6 @@
$testRoot = ".\"
Get-ChildItem -Path $testRoot -Attribute Directory -Name |
Get-ChildItem -Path $testRoot -Attribute Directory |
Foreach-Object {
$dirName = (Get-Item $testRoot$_).Name
@ -10,13 +10,13 @@ Foreach-Object {
$sw.Stop()
"Test: " + $sw.Elapsed.TotalMilliseconds + " ms"
if ($result -eq 0)
{
"$dirName ... OK"
}
elseif ($result -eq 1)
{
{
"$dirName ... unitTest file not found. Test skipped."
}
elseif ($result -eq -1)
@ -36,9 +36,9 @@ Foreach-Object {
"It should not happen - check your script."
exit -1
}
# Check all Sub-directories for other unit-tests
Get-ChildItem -Path $testRoot\$dirName -Attribute Directory -Name |
Get-ChildItem -Path $testRoot\$dirName -Attribute Directory |
Foreach-Object {
$subDirName = (Get-Item $testRoot$dirName\$_).Name
@ -51,7 +51,7 @@ Foreach-Object {
"$dirName-$subDirName ... OK"
}
elseif ($subResult -eq 1)
{
{
"$dirName-$subDirName ... unitTest file not found. Test skipped."
}
else

View File

@ -1,15 +0,0 @@
Module Program
Public num1 As Integer
Public num2 As Integer
Public answer As Integer
Sub Main(args As String())
Console.Write("Type a number and press Enter")
num1 = Console.ReadLine()
Console.Write("Type another number to add to it and press Enter")
num2 = Console.ReadLine()
answer = num1 + num2
Console.WriteLine("The answer is " & answer)
Console.Write("Press any key to continue...")
Console.ReadKey(True)
End Sub
End Module

View File

@ -1 +0,0 @@
{"leaves":["Main"],"root":"unitTest"}

View File

@ -1,9 +1,6 @@
<?xml version="1.0" encoding="Windows-1252" ?>
<NotepadPlus>
<GUIConfigs>
<!--
<GUIConfig name="comment">comment</GUIConfig>
-->
<GUIConfig name="ToolBar" visible="yes">standard</GUIConfig>
<GUIConfig name="StatusBar">show</GUIConfig>
<GUIConfig name="TabBar" dragAndDrop="yes" drawTopBar="yes" drawInactiveTab="yes" reduce="yes" closeButton="yes" doubleClick2Close="no" vertical="no" multiLine="no" hide="no" quitOnEmpty="no" />

View File

@ -149,11 +149,6 @@ m 0111111111111111111111111111111111111111111100000000000000000000000000 m
u https://www.youtube.com/watch?v=VmcftreqQ6E&list=PnQIRE5O5JpiLL&index=xxx u
m 1111111111111111111111111111111111111111111111111111111111111111111111111 m
u https://example.com/#/app/0?context u
m 11111111111111111111111111111111111 m
u https://example.com#/example/app/0?context u
m 111111111111111111111111111111111111111111 m
Space detection:

View File

@ -45,8 +45,6 @@ OK u "https://duckduckgo.com/?q=windows+delete+"GameBarPresenceWriter.exe" u
OK u "https://duckduckgo/com/?q=windows+delete+GameBarPresenceWriter.exe" u
OK u "https://duckduckgo.com/?q=windows+delete+""GameBarPresenceWriter.exe" u
OK u https://www.youtube.com/watch?v=VmcftreqQ6E&list=PnQIRE5O5JpiLL&index=xxx u
OK u https://example.com/#/app/0?context u
OK u https://example.com#/example/app/0?context u
OK u "http://github.com/notepad-plus-plus/notepad-plus-plus" u
OK u "https://github.com /notepad-plus-plus/notepad-plus-plus" u
OK u "https://github.com/notepad plus plus/notepad-plus-plus" u

View File

@ -1,55 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="NotepadPlus">
<xs:complexType>
<xs:sequence>
<xs:element name="AutoComplete">
<xs:complexType>
<xs:sequence>
<xs:element name="Environment" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="ignoreCase"/>
<xs:attribute type="xs:string" name="startFunc"/>
<xs:attribute type="xs:string" name="stopFunc"/>
<xs:attribute type="xs:string" name="paramSeparator"/>
<xs:attribute type="xs:string" name="terminal"/>
<xs:attribute type="xs:string" name="additionalWordChar"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="KeyWord" minOccurs="1" maxOccurs="unbounded">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="Overload" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Param" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="name" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="retVal" use="optional"/>
<xs:attribute type="xs:string" name="descr" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="name" use="required"/>
<xs:attribute type="xs:string" name="func" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="language" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@ -1,52 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="NotepadPlus">
<xs:complexType>
<xs:sequence>
<xs:element name="GUIConfigs">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="GUIConfig">
<xs:complexType mixed="true">
<xs:sequence minOccurs="0">
<xs:element maxOccurs="unbounded" name="ActiveTabs">
<xs:complexType>
<xs:attribute name="cont" type="xs:integer" use="required"/>
<xs:attribute name="activeTab" type="xs:integer" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:anyAttribute processContents="skip"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="FindHistory">
<xs:complexType>
<xs:anyAttribute processContents="skip"/>
</xs:complexType>
</xs:element>
<xs:element name="History">
<xs:complexType>
<xs:attribute name="nbMaxFile" type="xs:integer" use="required"/>
<xs:attribute name="inSubMenu" type="xs:string" use="required"/>
<xs:attribute name="customLength" type="xs:integer" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="ProjectPanels">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="ProjectPanel">
<xs:complexType>
<xs:attribute name="id" type="xs:integer" use="required"/>
<xs:attribute name="workSpaceFile" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@ -1,27 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="NotepadPlus">
<xs:complexType>
<xs:sequence>
<xs:element name="ScintillaContextMenu">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Item">
<xs:complexType>
<xs:attribute name="MenuEntryName" type="xs:string" use="optional"/>
<xs:attribute name="MenuItemName" type="xs:string" use="optional"/>
<xs:attribute name="id" type="xs:unsignedShort" use="optional"/>
<xs:attribute name="FolderName" type="xs:string" use="optional"/>
<xs:attribute name="TranslateID" type="xs:string" use="optional"/>
<xs:attribute name="PluginEntryName" type="xs:string" use="optional"/>
<xs:attribute name="PluginCommandItemName" type="xs:string" use="optional"/>
<xs:attribute name="ItemNameAs" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@ -1,109 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="NotepadPlus">
<xs:complexType>
<xs:sequence>
<xs:element name="functionList">
<xs:complexType>
<xs:sequence>
<xs:element name="parser">
<xs:complexType>
<xs:sequence>
<xs:element name="classRange" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="className">
<xs:complexType>
<xs:sequence>
<xs:element name="nameExpr" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="expr" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="function" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="functionName">
<xs:complexType>
<xs:sequence>
<xs:element name="funcNameExpr" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="expr" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="mainExpr"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="mainExpr" use="required"/>
<xs:attribute type="xs:string" name="openSymbole" use="optional"/>
<xs:attribute type="xs:string" name="closeSymbole" use="optional"/>
<xs:attribute type="xs:string" name="displayMode" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="function" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="functionName" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="nameExpr" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="expr" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="className" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="nameExpr" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="expr" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="mainExpr"/>
<xs:attribute type="xs:string" name="displayMode" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="displayName"/>
<xs:attribute type="xs:string" name="id"/>
<xs:attribute type="xs:string" name="commentExpr"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@ -1,59 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="NotepadPlus">
<xs:complexType>
<xs:sequence>
<xs:element name="Languages">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Language">
<xs:complexType>
<xs:sequence minOccurs="0">
<xs:element maxOccurs="unbounded" name="Keywords">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="name" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="instre1"/>
<xs:enumeration value="instre2"/>
<xs:enumeration value="type1"/>
<xs:enumeration value="type2"/>
<xs:enumeration value="type3"/>
<xs:enumeration value="type4"/>
<xs:enumeration value="type5"/>
<xs:enumeration value="type6"/>
<xs:enumeration value="type7"/>
<xs:enumeration value="substyle1"/>
<xs:enumeration value="substyle2"/>
<xs:enumeration value="substyle3"/>
<xs:enumeration value="substyle4"/>
<xs:enumeration value="substyle5"/>
<xs:enumeration value="substyle6"/>
<xs:enumeration value="substyle7"/>
<xs:enumeration value="substyle8"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="ext" type="xs:string" use="required"/>
<xs:attribute name="commentLine" type="xs:string" use="optional"/>
<xs:attribute name="commentStart" type="xs:string" use="optional"/>
<xs:attribute name="commentEnd" type="xs:string" use="optional"/>
<xs:attribute name="tabSettings" type="xs:integer" use="optional"/>
<xs:attribute name="backspaceUnindent" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@ -1,48 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="NotepadPlus">
<xs:complexType>
<xs:sequence>
<xs:element name="Native-Langue">
<xs:complexType>
<xs:all>
<xs:element name="Menu">
<xs:complexType>
<xs:all>
<xs:element name="Main" minOccurs="0" maxOccurs="1"/>
<xs:element name="Splitter" minOccurs="0" maxOccurs="1"/>
<xs:element name="TabBar" minOccurs="0" maxOccurs="1"/>
<xs:element name="TrayIcon" minOccurs="0" maxOccurs="1"/>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="Dialog" minOccurs="0" maxOccurs="1"/>
<xs:element name="MessageBox" minOccurs="0" maxOccurs="1"/>
<xs:element name="ClipboardHistory" minOccurs="0" maxOccurs="1"/>
<xs:element name="DocList" minOccurs="0" maxOccurs="1"/>
<xs:element name="WindowsDlg" minOccurs="0" maxOccurs="1"/>
<xs:element name="AsciiInsertion" minOccurs="0" maxOccurs="1"/>
<xs:element name="DocumentMap" minOccurs="0" maxOccurs="1"/>
<xs:element name="FunctionList" minOccurs="0" maxOccurs="1"/>
<xs:element name="FolderAsWorkspace" minOccurs="0" maxOccurs="1"/>
<xs:element name="FileBrowser" minOccurs="0" maxOccurs="1"/>
<xs:element name="ProjectManager" minOccurs="0" maxOccurs="1"/>
<xs:element name="MiscStrings" minOccurs="0" maxOccurs="1"/>
</xs:all>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="filename" type="xs:string" use="required"/>
<xs:attribute name="version" type="xs:string" use="optional"/>
<xs:attribute name="RTL" use="optional">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="yes"/>
<xs:enumeration value="no"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@ -1,57 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="NotepadPlus">
<xs:complexType>
<xs:sequence>
<xs:element name="InternalCommands"/>
<xs:element name="Macros">
<xs:complexType>
<xs:sequence>
<xs:element name="Macro">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Action">
<xs:complexType>
<xs:attribute name="type" type="xs:integer" use="required"/>
<xs:attribute name="message" type="xs:integer" use="required"/>
<xs:attribute name="wParam" type="xs:unsignedShort" use="required"/>
<xs:attribute name="lParam" type="xs:integer" use="required"/>
<xs:attribute name="sParam" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="Ctrl" type="xs:string" use="required"/>
<xs:attribute name="Alt" type="xs:string" use="required"/>
<xs:attribute name="Shift" type="xs:string" use="required"/>
<xs:attribute name="Key" type="xs:integer" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="UserDefinedCommands">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Command">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="Ctrl" type="xs:string" use="required"/>
<xs:attribute name="Alt" type="xs:string" use="required"/>
<xs:attribute name="Shift" type="xs:string" use="required"/>
<xs:attribute name="Key" type="xs:integer" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="PluginCommands"/>
<xs:element name="ScintillaKeys"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@ -1,23 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="NotepadPlus">
<xs:complexType>
<xs:sequence>
<xs:element name="TabContextMenu">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Item">
<xs:complexType>
<xs:attribute name="MenuEntryName" type="xs:string" use="optional"/>
<xs:attribute name="MenuItemName" type="xs:string" use="optional"/>
<xs:attribute name="FolderName" type="xs:string" use="optional"/>
<xs:attribute name="id" type="xs:integer" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@ -1,102 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="emptyInt">
<!-- custom type: allows integer or empty string -->
<xs:union>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="xs:integer"/>
</xs:simpleType>
</xs:union>
</xs:simpleType>
<xs:element name="NotepadPlus">
<xs:complexType>
<xs:sequence>
<xs:element name="LexerStyles" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="LexerType" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="WordsStyle" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="name" use="required"/>
<xs:attribute type="xs:integer" name="styleID" use="required"/>
<xs:attribute type="xs:hexBinary" name="fgColor" use="optional"/>
<xs:attribute type="xs:hexBinary" name="bgColor" use="optional"/>
<xs:attribute type="xs:integer" name="colorStyle" use="optional"/>
<xs:attribute type="xs:string" name="fontName" use="optional"/>
<xs:attribute type="emptyInt" name="fontSize" use="optional"/>
<xs:attribute type="emptyInt" name="fontStyle" use="optional"/>
<xs:attribute name="keywordClass" use="optional">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="instre1"/>
<xs:enumeration value="instre2"/>
<xs:enumeration value="type1"/>
<xs:enumeration value="type2"/>
<xs:enumeration value="type3"/>
<xs:enumeration value="type4"/>
<xs:enumeration value="type5"/>
<xs:enumeration value="type6"/>
<xs:enumeration value="type7"/>
<xs:enumeration value="substyle1"/>
<xs:enumeration value="substyle2"/>
<xs:enumeration value="substyle3"/>
<xs:enumeration value="substyle4"/>
<xs:enumeration value="substyle5"/>
<xs:enumeration value="substyle6"/>
<xs:enumeration value="substyle7"/>
<xs:enumeration value="substyle8"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="name" use="required"/>
<xs:attribute type="xs:string" name="desc" use="required"/>
<xs:attribute type="xs:string" name="ext" use="required"/>
</xs:complexType>
<xs:unique name="unique-WordsStyle-styleID">
<xs:selector xpath="WordsStyle"/>
<xs:field xpath="@styleID"/>
</xs:unique>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="GlobalStyles" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="WidgetStyle" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute type="xs:string" name="name" use="required"/>
<xs:attribute type="xs:integer" name="styleID" use="required"/>
<xs:attribute type="xs:hexBinary" name="fgColor" use="optional"/>
<xs:attribute type="xs:hexBinary" name="bgColor" use="optional"/>
<xs:attribute type="xs:integer" name="colorStyle" use="optional"/>
<xs:attribute type="xs:string" name="fontName" use="optional"/>
<xs:attribute type="emptyInt" name="fontSize" use="optional"/>
<xs:attribute type="emptyInt" name="fontStyle" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:unique name="unique-widgetstyle-name">
<xs:selector xpath="WidgetStyle"/>
<xs:field xpath="@name"/>
</xs:unique>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@ -1,48 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="NotepadPlus">
<xs:complexType>
<xs:sequence>
<xs:element name="ToolbarButtons">
<xs:complexType>
<xs:sequence>
<xs:element name="Standard">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="Button">
<xs:complexType>
<xs:attribute name="hide" type="xs:string" use="required"/>
<xs:attribute name="index" type="xs:integer" use="required"/>
<xs:attribute name="id" type="xs:unsignedShort" use="required"/>
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="hideAll" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="Plugin">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Button">
<xs:complexType>
<xs:attribute name="hide" type="xs:string" use="required"/>
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="hideAll" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ToolBarIcons">
<xs:complexType>
<xs:attribute name="icoFolderName" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@ -30,7 +30,15 @@ def post_error(message):
pprint(message)
def parse_xml_file(filename_xml, filename_xsd = None):
def parse_xml_file(filename_xml):
# open and read schema file
#with open(filename_xsd, 'r') as schema_file:
#schema_to_check = schema_file.read()
# open and read xml file
#with open(filename_xml, 'r') as xml_file:
# xml_to_check = xml_file.read()
# parse xml
try:
@ -41,128 +49,58 @@ def parse_xml_file(filename_xml, filename_xsd = None):
except IOError:
#print('Invalid File')
post_error(f'{filename_xml}: IOError Invalid File')
return
# check for XML syntax errors
except etree.XMLSyntaxError as err:
#print('XML Syntax Error, see error_syntax.log')
post_error(f'{filename_xml}: {str(err.error_log)}: XMLSyntaxError Invalid File')
return
# check for general XML errors
except etree.LxmlError as err:
#print('XML Error, see error_syntax.log')
post_error(f'{filename_xml}: {str(err.error_log)}: LxmlError Invalid File')
return
# unknown error
except:
#print('Unknown error.')
post_error(f'{filename_xml}: Unknown error. Maybe check that no xml version is in the first line.')
return
# now validate against correct schema
if doc and filename_xsd is not None:
try:
xmlschema_doc = etree.parse(filename_xsd)
# error reading XSD
except IOError:
post_error(f'{filename_xml} | {filename_xsd}: IOError Invalid File')
return
# error parsing XSD
except etree.XMLSyntaxError as err:
post_error(f'{filename_xml} | {filename_xsd}: {str(err.error_log)}: XMLSyntaxError Invalid File')
return
# other error
except Exception as err:
post_error(f'{filename_xml} | {filename_xsd}: Unknown error {str(err.error_log)} reading Schema .xsd file.')
return
# Next, extract the schema object from the schema_doc
try:
xmlschema = etree.XMLSchema(xmlschema_doc)
#print(f'{filename_xml} | {filename_xsd}: SCHEMA OBJECT OK')
# error with Schema
except etree.XMLSchemaError as err:
post_error(f'{filename_xml} | {filename_xsd}: {str(err.error_log)}: XMLSchemaError')
return
# other error
except Exception as err:
post_error(f'{filename_xml} | {filename_xsd}: Unknown error {str(err.error_log)} obtaining schema object')
return
# finally, validate the XML against the schema
if not xmlschema.validate(doc):
post_error(f'{filename_xml} | {filename_xsd}: Validation error {str(xmlschema.error_log)}')
return
else:
#print(f'{filename_xml} vs schema: VALIDATION OK')
pass
def parse_xml_files_from_APIs_dir():
for file in os.listdir("PowerEditor/installer/APIs"):
if file.endswith(".xml"):
#print(os.path.join("PowerEditor/installer/APIs", file))
parse_xml_file(os.path.join("PowerEditor/installer/APIs", file), os.path.join("PowerEditor", "Test", "xmlValidator", "autoCompletion.xsd"))
parse_xml_file(os.path.join("PowerEditor/installer/APIs", file))
def parse_xml_files_from_functionList_dir():
for file in os.listdir("PowerEditor/installer/functionList"):
if file.endswith(".xml"):
#print(os.path.join("PowerEditor/installer/functionList", file))
xsd_filename = None
if not file.endswith("overrideMap.xml"):
xsd_filename = os.path.join("PowerEditor", "Test", "xmlValidator", "functionList.xsd")
parse_xml_file(os.path.join("PowerEditor/installer/functionList", file), xsd_filename)
parse_xml_file(os.path.join("PowerEditor/installer/functionList", file))
def parse_xml_files_from_nativeLang_dir():
for file in os.listdir("PowerEditor/installer/nativeLang"):
if file.endswith(".xml"):
#print(os.path.join("PowerEditor/installer/nativeLang", file))
parse_xml_file(os.path.join("PowerEditor/installer/nativeLang", file), os.path.join("PowerEditor", "Test", "xmlValidator", "nativeLang.xsd"))
parse_xml_file(os.path.join("PowerEditor/installer/nativeLang", file))
def parse_xml_files_from_themes_dir():
for file in os.listdir("PowerEditor/installer/themes"):
if file.endswith(".xml"):
#print(os.path.join("PowerEditor/installer/themes", file))
parse_xml_file(os.path.join("PowerEditor/installer/themes", file), os.path.join("PowerEditor", "Test", "xmlValidator", "theme.xsd"))
parse_xml_file(os.path.join("PowerEditor/installer/themes", file))
def parse_xml_files_from_src_dir():
for file in os.listdir("PowerEditor/src"):
if file.endswith(".xml"):
#print(os.path.join("PowerEditor/src", file))
xsd_filename = None
if file.endswith("stylers.model.xml"):
xsd_filename = os.path.join("PowerEditor", "Test", "xmlValidator", "theme.xsd")
elif file.endswith("langs.model.xml"):
xsd_filename = os.path.join("PowerEditor", "Test", "xmlValidator", "langs.xsd")
elif file.endswith("toolbarButtonsConf_example.xml"):
xsd_filename = os.path.join("PowerEditor", "Test", "xmlValidator", "toolbarButtons.xsd")
elif file.endswith("tabContextMenu_example.xml"):
xsd_filename = os.path.join("PowerEditor", "Test", "xmlValidator", "tabContext.xsd")
elif file.endswith("contextMenu.xml"):
xsd_filename = os.path.join("PowerEditor", "Test", "xmlValidator", "contextMenu.xsd")
elif file.endswith("shortcuts.xml"):
xsd_filename = os.path.join("PowerEditor", "Test", "xmlValidator", "shortcuts.xsd")
elif file.endswith("config.4zipPackage.xml"):
xsd_filename = os.path.join("PowerEditor", "Test", "xmlValidator", "config.xsd")
parse_xml_file(os.path.join("PowerEditor/src", file), xsd_filename)
parse_xml_file(os.path.join("PowerEditor/src", file))
print('Start syntax check and validation for XML files.')
print('Start syntax check for xml files.')
parse_xml_files_from_APIs_dir()
parse_xml_files_from_functionList_dir()
parse_xml_files_from_nativeLang_dir()

Binary file not shown.

Binary file not shown.

View File

@ -1,34 +1,73 @@
Notepad++ v8.8.5 regression-fix:
Notepad++ v8.1.1 bug-fixes:
1. Fix "Edit with Notepad++" context menu not being installed correctly regression.
Notepad++ v8.8.4 vulnerability-fixes, bug-fixes & new enhancement:
1. Fix -notabbar & asNotepad.xml stop hiding tabbar regression (from v8.7.9).
2. Fix "Edit with Notepad++" not removed by uninstaller regression (from v8.8.3).
3. Fix possible heap memory leak.
4. Increase search input length from 2046 to 16383.
5. Add warning tip for the max length on search input (Find/Replace).
6. Fix JavaScript listed twice in Language & Indent settings of Preferences issue.
7. Fix external lexers showing several time in Indent settings issue.
8. Add button to insert variables in the run dialog.
9. Enhance "Go to settings": guide users to the related setting explicitly.
10. Add a clear button for filter field in Shortcut Mapper.
11. Make NFO font overridable by adding font name in Lexer "nfo" of stylers.xml.
1. Fix edit zone not being applied to dark mode issue on another user account in the same machine.
2. Enhance dark mode (make user interface more dark-modable).
Get more info on
https://notepad-plus-plus.org/downloads/v8.8.5/
Notepad++ v8.1 bug-fixes & enhancements:
1. Fix regression of auto-completion performance issue.
2. Fix Open dialog with "Save" label for "Open" button.
3. Fix Notepad++ crash on dark mode while starting up.
4. Improve look & feel in dark mode.
5. Adapt Tooltips in dark mode.
6. Remove white line under menubar in dark mode.
7. Make multiline and vertical tabs work in dark mode.
Notepad++ v8 new features, enhancements & bug-fixes:
1. Add Dark Mode.
2. ARM64 build is available.
3. One button to build them all - build Notepad++ with Scintilla static lib and Boost RegExpr headers.
4. Add new Fluent UI icons for toolbar.
5. Add new feature "Distraction Free Mode" (Menu "View->Distraction Free Mode").
6. Add new API NPPM_ADDTOOLBARICON_FORDARKMODE for dark mode.
7. Add 1 click action (SHIFT-click) on close button to close all tabs in dockable panel.
8. Add ability of changing select text foreground color (optional).
9. Allow Replace to stop after replacement (optional).
10. Fix append extension feature not working in save dialog.
11. Add ability to reverse line order.
12. Add ability to style only current instance of text.
13. Fix duplicated entries in Auto-Completion pop-up window.
14. Fix Python Function List not showing functions in some circumstance.
15. Enhance Folder as Workspace performance while adding/removing files in bulk.
16. Add Ada, Fortran, Fortran77 & Haskell in function lists.
17. Improve performance of "Open all" command in Search results.
18. Add "Copy Pathnames" command to Search results context menu.
19. Catch regex search exceptions and show exception message.
20. Add MarkAll Preference settings for case and word.
21. Fix regression: Handle "Default Directory" setting correctly in Open/Save File Dialog.
22. Fix a special character in UTF16 file crash issue
23. Add "Append extension" checkbox to Save As dialog.
24. Fix Copy command in Search result is available as there's no selection.
25. Add padding ability in the edit zone.
26. Make new tab name translatable.
27. Improve character case handling in RegEx.
28. Fix dragged out UDL file is not applied to UDL in the new instance.
29. Add command line parameter for adding specified string to app title bar.
30. Fix Auto-Completion ignoring case issue.
31. Fix "Match Whole Word" option being enabled in RegEx Search.
32. Fix sort with column key selection that appears after tab characters.
33. Fix "Reload Workspace" menu command not working issue.
34. Fix view file in Edge browser failure issue if name contains spaces.
35. Add ability to avoid accumulating multiple search results.
36. Fix UTF-16 decoding/encoding for code points above U+FFFF.
37. Fix "Save As" command removing original path from recent files history issue.
38. Fix function List button tool tips mixed up issue.
39. Remove Microsoft Bing from search engines for Search on Internet command.
More fixes & implementations detail:
https://notepad-plus-plus.org/downloads/v8.1/
Included plugins:
1. NppExport v0.4
2. Converter v4.6
3. Mime Tool v3.1
1. NppExport v0.3
2. Converter v4.3
3. Mime Tool v2.6
Updater (Installer only):
* WinGUp (for Notepad++) v5.3.3
* WinGup (for Notepad++) v5.2

View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8" ?>
<NotepadPlus>
<UserLang name="ggg" ext="" udlVersion="2.1">
<Settings>
<Global caseIgnored="no" allowFoldOfComments="no" foldCompact="no" forcePureLC="0" decimalSeparator="0" />
<Prefix Keywords1="no" Keywords2="no" Keywords3="no" Keywords4="no" Keywords5="no" Keywords6="no" Keywords7="no" Keywords8="no" />
</Settings>
<KeywordLists>
<Keywords name="Comments"></Keywords>
<Keywords name="Numbers, prefix1"></Keywords>
<Keywords name="Numbers, prefix2"></Keywords>
<Keywords name="Numbers, extras1"></Keywords>
<Keywords name="Numbers, extras2"></Keywords>
<Keywords name="Numbers, suffix1"></Keywords>
<Keywords name="Numbers, suffix2"></Keywords>
<Keywords name="Numbers, range"></Keywords>
<Keywords name="Operators1"></Keywords>
<Keywords name="Operators2"></Keywords>
<Keywords name="Folders in code1, open"></Keywords>
<Keywords name="Folders in code1, middle"></Keywords>
<Keywords name="Folders in code1, close"></Keywords>
<Keywords name="Folders in code2, open"></Keywords>
<Keywords name="Folders in code2, middle"></Keywords>
<Keywords name="Folders in code2, close"></Keywords>
<Keywords name="Folders in comment, open"></Keywords>
<Keywords name="Folders in comment, middle"></Keywords>
<Keywords name="Folders in comment, close"></Keywords>
<Keywords name="Keywords1"></Keywords>
<Keywords name="Keywords2"></Keywords>
<Keywords name="Keywords3"></Keywords>
<Keywords name="Keywords4"></Keywords>
<Keywords name="Keywords5"></Keywords>
<Keywords name="Keywords6"></Keywords>
<Keywords name="Keywords7"></Keywords>
<Keywords name="Keywords8"></Keywords>
<Keywords name="Delimiters"></Keywords>
</KeywordLists>
<Styles>
<WordsStyle name="DEFAULT" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="COMMENTS" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="LINE COMMENTS" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="NUMBERS" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS1" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS2" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS3" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS4" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS5" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS6" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS7" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS8" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="OPERATORS" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="FOLDER IN CODE1" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="FOLDER IN CODE2" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="FOLDER IN COMMENT" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS1" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS2" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS3" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS4" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS5" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS6" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS7" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS8" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
</Styles>
</UserLang>
</NotepadPlus>

View File

@ -50,30 +50,30 @@ https://github.com/Edditoria/markdown-plus-plus/blob/master/LICENSE.txt
<Keywords name="Delimiters">00![ 00[ 01\ 02] 02] 03``` 03` 03~~~ 04\ 05``` 05((EOL `)) 05~~~ 06*** 07\ 08((EOL ***)) 09** 10\ 11((EOL **)) 12* 13\ 14((EOL *)) 15** 16\ 17((EOL **)) 18* 19\ 20((EOL *)) 21 22 23</Keywords>
</KeywordLists>
<Styles>
<WordsStyle name="DEFAULT" fgColor="333333" bgColor="FFFFFF" colorStyle="0" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="COMMENTS" fgColor="808080" bgColor="FFFFFF" colorStyle="1" fontName="" fontStyle="2" nesting="0" />
<WordsStyle name="LINE COMMENTS" fgColor="FF8000" bgColor="FFFFFF" colorStyle="1" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="NUMBERS" fgColor="0080FF" bgColor="FFFFFF" colorStyle="1" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS1" fgColor="8000FF" bgColor="FFFFFF" colorStyle="1" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS2" fgColor="FF8000" bgColor="FFFFFF" colorStyle="1" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="KEYWORDS3" fgColor="000080" bgColor="FFFFFF" colorStyle="1" fontName="" fontStyle="3" nesting="0" />
<WordsStyle name="KEYWORDS4" fgColor="000080" bgColor="FFFFFF" colorStyle="1" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="KEYWORDS5" fgColor="000080" bgColor="FFFFFF" colorStyle="1" fontName="" fontStyle="2" nesting="0" />
<WordsStyle name="KEYWORDS6" fgColor="000080" bgColor="FFFFFF" colorStyle="1" fontName="" fontStyle="3" nesting="0" />
<WordsStyle name="KEYWORDS7" fgColor="000080" bgColor="FFFFFF" colorStyle="1" fontName="" fontStyle="3" nesting="0" />
<WordsStyle name="KEYWORDS8" fgColor="333333" bgColor="FFFFFF" colorStyle="0" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="OPERATORS" fgColor="8080FF" bgColor="FFFFFF" colorStyle="1" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="FOLDER IN CODE1" fgColor="333333" bgColor="FFFFFF" colorStyle="0" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="FOLDER IN CODE2" fgColor="333333" bgColor="FFFFFF" colorStyle="0" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="FOLDER IN COMMENT" fgColor="333333" bgColor="FFFFFF" colorStyle="0" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS1" fgColor="8000FF" bgColor="FFFFFF" colorStyle="1" fontName="" fontStyle="2" nesting="0" />
<WordsStyle name="DELIMITERS2" fgColor="008000" bgColor="FFFFFF" colorStyle="1" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS3" fgColor="000080" bgColor="FFFFFF" colorStyle="1" fontName="" fontStyle="3" nesting="0" />
<WordsStyle name="DELIMITERS4" fgColor="000080" bgColor="FFFFFF" colorStyle="1" fontName="" fontStyle="1" nesting="65600" />
<WordsStyle name="DELIMITERS5" fgColor="000080" bgColor="FFFFFF" colorStyle="1" fontName="" fontStyle="2" nesting="32800" />
<WordsStyle name="DELIMITERS6" fgColor="000080" bgColor="FFFFFF" colorStyle="1" fontName="" fontStyle="3" nesting="0" />
<WordsStyle name="DELIMITERS7" fgColor="000080" bgColor="FFFFFF" colorStyle="1" fontName="" fontStyle="3" nesting="0" />
<WordsStyle name="DELIMITERS8" fgColor="333333" bgColor="FFFFFF" colorStyle="0" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DEFAULT" fgColor="333333" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="COMMENTS" fgColor="808080" bgColor="FFFFFF" fontName="" fontStyle="2" nesting="0" />
<WordsStyle name="LINE COMMENTS" fgColor="FF8000" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="NUMBERS" fgColor="0080FF" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS1" fgColor="8000FF" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS2" fgColor="FF8000" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="KEYWORDS3" fgColor="000080" bgColor="FFFFFF" fontName="" fontStyle="3" nesting="0" />
<WordsStyle name="KEYWORDS4" fgColor="000080" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="KEYWORDS5" fgColor="000080" bgColor="FFFFFF" fontName="" fontStyle="2" nesting="0" />
<WordsStyle name="KEYWORDS6" fgColor="000080" bgColor="FFFFFF" fontName="" fontStyle="3" nesting="0" />
<WordsStyle name="KEYWORDS7" fgColor="000080" bgColor="FFFFFF" fontName="" fontStyle="3" nesting="0" />
<WordsStyle name="KEYWORDS8" fgColor="333333" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="OPERATORS" fgColor="8080FF" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="FOLDER IN CODE1" fgColor="333333" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="FOLDER IN CODE2" fgColor="333333" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="FOLDER IN COMMENT" fgColor="333333" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS1" fgColor="8000FF" bgColor="FFFFFF" fontName="" fontStyle="2" nesting="0" />
<WordsStyle name="DELIMITERS2" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS3" fgColor="000080" bgColor="FFFFFF" fontName="" fontStyle="3" nesting="0" />
<WordsStyle name="DELIMITERS4" fgColor="000080" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="65600" />
<WordsStyle name="DELIMITERS5" fgColor="000080" bgColor="FFFFFF" fontName="" fontStyle="2" nesting="32800" />
<WordsStyle name="DELIMITERS6" fgColor="000080" bgColor="FFFFFF" fontName="" fontStyle="3" nesting="0" />
<WordsStyle name="DELIMITERS7" fgColor="000080" bgColor="FFFFFF" fontName="" fontStyle="3" nesting="0" />
<WordsStyle name="DELIMITERS8" fgColor="333333" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
</Styles>
</UserLang>
</NotepadPlus>

View File

@ -1,76 +0,0 @@
<!--//
Markdown-plus-plus is a project to support Markdown syntax in Notepad++.
All UDLs are carefully designed by human, rather than generated by machine.
Want an UDL for different theme?
Want to change its preference?
Want to create your own?
Go get it: https://github.com/Edditoria/markdown-plus-plus
Please read the README file for details.
Welcome issues and pull requests via the above link.
Copyright (c) Edditoria. Open source under the MIT license:
https://github.com/Edditoria/markdown-plus-plus/blob/master/LICENSE.txt
//-->
<NotepadPlus>
<UserLang name="Markdown (preinstalled dark mode)" ext="md markdown" darkModeTheme="yes" udlVersion="2.1">
<Settings>
<Global caseIgnored="yes" allowFoldOfComments="no" foldCompact="no" forcePureLC="2" decimalSeparator="0" />
<Prefix Keywords1="yes" Keywords2="yes" Keywords3="yes" Keywords4="yes" Keywords5="yes" Keywords6="yes" Keywords7="yes" Keywords8="no" />
</Settings>
<KeywordLists>
<Keywords name="Comments">00# 01 02((EOL)) 03&lt;!-- 04--&gt;</Keywords>
<Keywords name="Numbers, prefix1"></Keywords>
<Keywords name="Numbers, prefix2"></Keywords>
<Keywords name="Numbers, extras1"></Keywords>
<Keywords name="Numbers, extras2"></Keywords>
<Keywords name="Numbers, suffix1">.</Keywords>
<Keywords name="Numbers, suffix2">.</Keywords>
<Keywords name="Numbers, range"></Keywords>
<Keywords name="Operators1">@ &lt; &gt; \&lt; \&gt; \\ \` \* \_ \{ \} \[ \] \( \) \# \+ \- \. \! \~ \| |:-: |:--: |:---: | :-: :--: :---: :|: |: :|</Keywords>
<Keywords name="Operators2">- + :- :-- :--- :</Keywords>
<Keywords name="Folders in code1, open"></Keywords>
<Keywords name="Folders in code1, middle"></Keywords>
<Keywords name="Folders in code1, close"></Keywords>
<Keywords name="Folders in code2, open"></Keywords>
<Keywords name="Folders in code2, middle"></Keywords>
<Keywords name="Folders in code2, close"></Keywords>
<Keywords name="Folders in comment, open"></Keywords>
<Keywords name="Folders in comment, middle"></Keywords>
<Keywords name="Folders in comment, close"></Keywords>
<Keywords name="Keywords1">../ (../ http:// (http:// https:// (https:// mailto: (mailto: ftp:// (ftp:// ftps:// (ftps:// (/ /</Keywords>
<Keywords name="Keywords2">==== ----</Keywords>
<Keywords name="Keywords3">*** ___</Keywords>
<Keywords name="Keywords4">** __</Keywords>
<Keywords name="Keywords5">* _</Keywords>
<Keywords name="Keywords6">** __</Keywords>
<Keywords name="Keywords7">* _</Keywords>
<Keywords name="Keywords8"></Keywords>
<Keywords name="Delimiters">00![ 00[ 01\ 02] 02] 03``` 03` 03~~~ 04\ 05``` 05((EOL `)) 05~~~ 06*** 07\ 08((EOL ***)) 09** 10\ 11((EOL **)) 12* 13\ 14((EOL *)) 15** 16\ 17((EOL **)) 18* 19\ 20((EOL *)) 21 22 23</Keywords>
</KeywordLists>
<Styles>
<WordsStyle name="DEFAULT" fgColor="DCDCCC" bgColor="3F3F3F" colorStyle="0" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="COMMENTS" fgColor="7F9F7F" bgColor="3F3F3F" colorStyle="1" fontName="" fontStyle="2" nesting="0" />
<WordsStyle name="LINE COMMENTS" fgColor="FF8040" bgColor="3F3F3F" colorStyle="1" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="NUMBERS" fgColor="8CD0D3" bgColor="3F3F3F" colorStyle="1" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS1" fgColor="EDD6ED" bgColor="3F3F3F" colorStyle="1" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS2" fgColor="FF8040" bgColor="3F3F3F" colorStyle="1" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="KEYWORDS3" fgColor="E3CEAB" bgColor="3F3F3F" colorStyle="1" fontName="" fontStyle="3" nesting="0" />
<WordsStyle name="KEYWORDS4" fgColor="E3CEAB" bgColor="3F3F3F" colorStyle="1" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="KEYWORDS5" fgColor="E3CEAB" bgColor="3F3F3F" colorStyle="1" fontName="" fontStyle="2" nesting="0" />
<WordsStyle name="KEYWORDS6" fgColor="E3CEAB" bgColor="3F3F3F" colorStyle="1" fontName="" fontStyle="3" nesting="0" />
<WordsStyle name="KEYWORDS7" fgColor="E3CEAB" bgColor="3F3F3F" colorStyle="1" fontName="" fontStyle="3" nesting="0" />
<WordsStyle name="KEYWORDS8" fgColor="DCDCCC" bgColor="3F3F3F" colorStyle="0" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="OPERATORS" fgColor="DFC47D" bgColor="3F3F3F" colorStyle="1" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="FOLDER IN CODE1" fgColor="DCDCCC" bgColor="3F3F3F" colorStyle="0" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="FOLDER IN CODE2" fgColor="DCDCCC" bgColor="3F3F3F" colorStyle="0" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="FOLDER IN COMMENT" fgColor="DCDCCC" bgColor="3F3F3F" colorStyle="0" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS1" fgColor="EDD6ED" bgColor="3F3F3F" colorStyle="1" fontName="" fontStyle="2" nesting="0" />
<WordsStyle name="DELIMITERS2" fgColor="CEDF99" bgColor="3F3F3F" colorStyle="1" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS3" fgColor="E3CEAB" bgColor="3F3F3F" colorStyle="1" fontName="" fontStyle="3" nesting="0" />
<WordsStyle name="DELIMITERS4" fgColor="E3CEAB" bgColor="3F3F3F" colorStyle="1" fontName="" fontStyle="1" nesting="65600" />
<WordsStyle name="DELIMITERS5" fgColor="E3CEAB" bgColor="3F3F3F" colorStyle="1" fontName="" fontStyle="2" nesting="32800" />
<WordsStyle name="DELIMITERS6" fgColor="E3CEAB" bgColor="3F3F3F" colorStyle="1" fontName="" fontStyle="3" nesting="0" />
<WordsStyle name="DELIMITERS7" fgColor="E3CEAB" bgColor="3F3F3F" colorStyle="1" fontName="" fontStyle="3" nesting="0" />
<WordsStyle name="DELIMITERS8" fgColor="DCDCCC" bgColor="3F3F3F" colorStyle="0" fontName="" fontStyle="0" nesting="0" />
</Styles>
</UserLang>
</NotepadPlus>

View File

@ -1,10 +0,0 @@
// this file contains fixes needed for Notepad++ to be built by GCC
// the makefile automatically includes this file
// __try and __except are unknown to GCC, so convert them to something eligible
#define __try try
#define __except(x) catch(...)
#ifndef PROCESSOR_ARCHITECTURE_ARM64
#define PROCESSOR_ARCHITECTURE_ARM64 12
#endif

View File

@ -0,0 +1,52 @@
//this file contains definitions not available in gcc 3.4.5,
//but are needed for Notepad++
//the makefile will automatically include this header file
//GetLongPathName = 410
//Multimonitor: 410
#define _WIN32_WINDOWS 0x0410
//Toolbar imagelist = 300
//TCS_BOTTOM = 300
//LVS_EX_BORDERSELECT = 500
//TBSTYLE_EX_HIDECLIPPEDBUTTONS = 501
//#define _WIN32_IE 0x501
//Theme (uxtheme)
#define _WIN32_WINNT 0x0600
//#include <windows.h>
#if (_WIN32_IE >= 0x0400)
#define TCN_GETOBJECT (TCN_FIRST - 3)
#endif
#if (_WIN32_IE >= 0x0500)
#define RBN_CHEVRONPUSHED (RBN_FIRST - 10)
#endif // _WIN32_IE >= 0x0500
/*
#ifndef max
#define max(a,b) (((a) > (b)) ? (a) : (b))
#endif
#ifndef min
#define min(a,b) (((a) < (b)) ? (a) : (b))
#endif
*/
static inline int max(unsigned int a, unsigned int b) {
return (((a) > (b)) ? (a) : (b));
}
static inline int min(unsigned int a, unsigned int b) {
return (((a) < (b)) ? (a) : (b));
}
//__try and __except dont work in gcc, so heres some defines to take em out
#define __try try
#define __except(x) catch(...)
//Missing unicode CRT funcs
//double _wtof(const wchar_t * string);
// from MinGW include/driverspecs.h
#define __inout
#define __inout_opt

View File

@ -1,5 +1,5 @@
# This file is part of Notepad++ project
# Copyright (C)2021 Ivan U7n <jprofic@yandex.ru>
# Copyright (C)2008 Harry Bruin <harrybharry@users.sourceforge.net>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -14,320 +14,287 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
# definitions
#
# Directories:
NPP_DIR = ../src
SCI_DIR = ../../scintilla/include
GCC_DIR = .
GCCINCLUDE_DIR = $(GCC_DIR)/include
GCC_DIRECTORY := ../gcc
GCC_EXCLUDE := $(GCC_DIRECTORY)/gcc-%
SRC_DIRECTORY := ../src
SRC_EXCLUDE := $(SRC_DIRECTORY)/tools/%
BIN_DIRECTORY := ../bin
INSTALLER_DIRECTORY := ../installer
#darkmode:
DARKMODE_DIR = $(NPP_DIR)/darkmode
TARGET_BINARY := notepad++.exe
SRC_DATA := contextMenu.xml langs.model.xml shortcuts.xml stylers.model.xml tabContextMenu_example.xml toolbarButtonsConf_example.xml
BIN_DATA := change.log doLocalConf.xml nppLogNulContentCorruptionIssue.xml readme.txt userDefineLangs/
INSTALLER_DATA := autoCompletion/ functionList/ localization/ themes/
#json:
JSON_DIR = $(NPP_DIR)/json
SCINTILLA_DIRECTORY := ../../scintilla
SCINTILLA_TARGET := libscintilla.a
#MISC:
MISC_DIR = $(NPP_DIR)/MISC
COMMON_DIR = $(MISC_DIR)/Common
EXCEPTION_DIR = $(MISC_DIR)/Exception
MD5_DIR = $(MISC_DIR)/md5
SHA2_DIR = $(MISC_DIR)/sha2
PLUGINS_DIR = $(MISC_DIR)/PluginsManager
PROCESS_DIR = $(MISC_DIR)/Process
REGEXT_DIR = $(MISC_DIR)/RegExt
LEXILLA_DIRECTORY := ../../lexilla
LEXILLA_TARGET := liblexilla.a
#ScintillaComponent:
SCINT_DIR = $(NPP_DIR)/ScintillaComponent
ifeq ($(CXX),clang++)
CXX := $(CROSS_COMPILE)clang++
#TinyXml
TIXML_DIR = $(NPP_DIR)/TinyXml
TIXMLA_DIR = $(TIXML_DIR)/tinyXmlA
#uchardet
UCHARDET_DIR = $(NPP_DIR)/uchardet
#WinControls
WIN_DIR = $(NPP_DIR)/WinControls
ABOUT_DIR = $(WIN_DIR)/AboutDlg
ANSICHAR_DIR = $(WIN_DIR)/AnsiCharPanel
CLIPBOARD_DIR = $(WIN_DIR)/ClipboardHistory
CONTEXT_DIR = $(WIN_DIR)/ContextMenu
COLOUR_DIR = $(WIN_DIR)/ColourPicker
DOCKING_DIR = $(WIN_DIR)/DockingWnd
DOCMAP_DIR = $(WIN_DIR)/DocumentMap
FBROWSER_DIR = $(WIN_DIR)/FileBrowser
FINDCHARS_DIR = $(WIN_DIR)/FindCharsInRange
FUNCLIST_DIR = $(WIN_DIR)/FunctionList
GRID_DIR = $(WIN_DIR)/Grid
IMLIST_DIR = $(WIN_DIR)/ImageListSet
OPENSAVE_DIR = $(WIN_DIR)/OpenSaveFileDialog
PLUGADMIN_DIR = $(WIN_DIR)/PluginsAdmin
PREFERENCE_DIR = $(WIN_DIR)/Preference
PRJPANEL_DIR = $(WIN_DIR)/ProjectPanel
READDIR_DIR = $(WIN_DIR)/ReadDirectoryChanges
SHORTCUT_DIR = $(WIN_DIR)/shortcut
SPLITTER_DIR = $(WIN_DIR)/SplitterContainer
STATICDLG_DIR = $(WIN_DIR)/StaticDialog
RUNDLG_DIR = $(STATICDLG_DIR)/RunDlg
STATUSBAR_DIR = $(WIN_DIR)/StatusBar
TABBAR_DIR = $(WIN_DIR)/TabBar
TASKLIST_DIR = $(WIN_DIR)/TaskList
TOOLBAR_DIR = $(WIN_DIR)/ToolBar
TOOLTIP_DIR = $(WIN_DIR)/ToolTip
TRAYICON_DIR = $(WIN_DIR)/TrayIcon
TREEVIEW_DIR = $(WIN_DIR)/TreeView
VERTFILE_DIR = $(WIN_DIR)/VerticalFileSwitcher
WINDOWSDLG_DIR = $(WIN_DIR)/WindowsDlg
# Sources:
SRC_NPP = $(wildcard $(NPP_DIR)/*.cpp)
SRC_GCCINCLUDE = $(wildcard $(GCCINCLUDE_DIR)/*.cpp)
#DARKMODE
SRC_DARKMODE = $(wildcard $(DARKMODE_DIR)/*.cpp)
#MISC
SRC_MISC = $(wildcard $(MISC_DIR)/*.cpp)
SRC_COMMON = $(wildcard $(COMMON_DIR)/*.cpp)
SRC_EXCEPTION = $(wildcard $(EXCEPTION_DIR)/*.cpp)
SRC_MD5 = $(wildcard $(MD5_DIR)/*.cpp)
SRC_SHA2 = $(wildcard $(SHA2_DIR)/*.cpp)
SRC_PLUGINS = $(wildcard $(PLUGINS_DIR)/*.cpp)
SRC_PROCESS = $(wildcard $(PROCESS_DIR)/*.cpp)
SRC_REGEXT = $(wildcard $(REGEXT_DIR)/*.cpp)
#ScintillaComponent
SRC_SCINT = $(wildcard $(SCINT_DIR)/*.cpp)
#TinyXml
SRC_TIXML = $(wildcard $(TIXML_DIR)/*.cpp)
SRC_TIXMLA = $(wildcard $(TIXMLA_DIR)/*.cpp)
#uchardet
SRC_UCHARDET = $(wildcard $(UCHARDET_DIR)/*.cpp)
#WinControls
SRC_WIN = $(wildcard $(WIN_DIR)/*.cpp)
SRC_ABOUT = $(wildcard $(ABOUT_DIR)/*.cpp)
SRC_ANSICHAR = $(wildcard $(ANSICHAR_DIR)/*.cpp)
SRC_CLIPBOARD = $(wildcard $(CLIPBOARD_DIR)/*.cpp)
SRC_CONTEXT = $(wildcard $(CONTEXT_DIR)/*.cpp)
SRC_COLOUR = $(wildcard $(COLOUR_DIR)/*.cpp)
SRC_DOCKING = $(wildcard $(DOCKING_DIR)/*.cpp)
SRC_DOCMAP = $(wildcard $(DOCMAP_DIR)/*.cpp)
SRC_FBROWSER = $(wildcard $(FBROWSER_DIR)/*.cpp)
SRC_FINDCHARS = $(wildcard $(FINDCHARS_DIR)/*.cpp)
SRC_FUNCLIST = $(wildcard $(FUNCLIST_DIR)/*.cpp)
SRC_GRID = $(wildcard $(GRID_DIR)/*.cpp)
SRC_IMLIST = $(wildcard $(IMLIST_DIR)/*.cpp)
SRC_OPENSAVE = $(wildcard $(OPENSAVE_DIR)/*.cpp)
SRC_PLUGADMIN = $(wildcard $(PLUGADMIN_DIR)/*.cpp)
SRC_PREFERENCE = $(wildcard $(PREFERENCE_DIR)/*.cpp)
SRC_PRJPANEL = $(wildcard $(PRJPANEL_DIR)/*.cpp)
SRC_READDIR = $(wildcard $(READDIR_DIR)/*.cpp)
SRC_SHORTCUT = $(wildcard $(SHORTCUT_DIR)/*.cpp)
SRC_SPLITTER = $(wildcard $(SPLITTER_DIR)/*.cpp)
SRC_STATICDLG = $(wildcard $(STATICDLG_DIR)/*.cpp)
SRC_RUNDLG = $(wildcard $(RUNDLG_DIR)/*.cpp)
SRC_STATUSBAR = $(wildcard $(STATUSBAR_DIR)/*.cpp)
SRC_TABBAR = $(wildcard $(TABBAR_DIR)/*.cpp)
SRC_TASKLIST = $(wildcard $(TASKLIST_DIR)/*.cpp)
SRC_TOOLBAR = $(wildcard $(TOOLBAR_DIR)/*.cpp)
SRC_TOOLTIP = $(wildcard $(TOOLTIP_DIR)/*.cpp)
SRC_TRAYICON = $(wildcard $(TRAYICON_DIR)/*.cpp)
SRC_TREEVIEW = $(wildcard $(TREEVIEW_DIR)/*.cpp)
SRC_VERTFILE = $(wildcard $(VERTFILE_DIR)/*.cpp)
SRC_WINDOWSDLG = $(wildcard $(WINDOWSDLG_DIR)/*.cpp)
# Objects:
OBJ_NPP = $(patsubst %.cpp,%.o,$(SRC_NPP))
OBJ_GCCINCLUDE = $(patsubst %.cpp,%.o,$(SRC_GCCINCLUDE))
#DARKMODE
OBJ_DARKMODE = $(patsubst %.cpp,%.o,$(SRC_DARKMODE))
#MISC
OBJ_MISC = $(patsubst %.cpp,%.o,$(SRC_MISC))
OBJ_COMMON = $(patsubst %.cpp,%.o,$(SRC_COMMON))
OBJ_EXCEPTION = $(patsubst %.cpp,%.o,$(SRC_EXCEPTION))
OBJ_MD5 = $(patsubst %.cpp,%.o,$(SRC_MD5))
OBJ_SHA2 = $(patsubst %.cpp,%.o,$(SRC_SHA2))
OBJ_PLUGINS = $(patsubst %.cpp,%.o,$(SRC_PLUGINS))
OBJ_PROCESS = $(patsubst %.cpp,%.o,$(SRC_PROCESS))
OBJ_REGEXT = $(patsubst %.cpp,%.o,$(SRC_REGEXT))
#ScintillaComponent
OBJ_SCINT = $(patsubst %.cpp,%.o,$(SRC_SCINT))
#TinyXml
OBJ_TIXML = $(patsubst %.cpp,%.o,$(SRC_TIXML))
OBJ_TIXMLA = $(patsubst %.cpp,%.o,$(SRC_TIXMLA))
#uchardet
OBJ_UCHARDET = $(patsubst %.cpp,%.o,$(SRC_UCHARDET))
#WinControls
OBJ_WIN = $(patsubst %.cpp,%.o,$(SRC_WIN))
OBJ_ABOUT = $(patsubst %.cpp,%.o,$(SRC_ABOUT))
OBJ_ANSICHAR = $(patsubst %.cpp,%.o,$(SRC_ANSICHAR))
OBJ_CLIPBOARD = $(patsubst %.cpp,%.o,$(SRC_CLIPBOARD))
OBJ_CONTEXT = $(patsubst %.cpp,%.o,$(SRC_CONTEXT))
OBJ_COLOUR = $(patsubst %.cpp,%.o,$(SRC_COLOUR))
OBJ_DOCKING = $(patsubst %.cpp,%.o,$(SRC_DOCKING))
OBJ_DOCMAP = $(patsubst %.cpp,%.o,$(SRC_DOCMAP))
OBJ_FBROWSER = $(patsubst %.cpp,%.o,$(SRC_FBROWSER))
OBJ_FINDCHARS = $(patsubst %.cpp,%.o,$(SRC_FINDCHARS))
OBJ_FUNCLIST = $(patsubst %.cpp,%.o,$(SRC_FUNCLIST))
OBJ_GRID = $(patsubst %.cpp,%.o,$(SRC_GRID))
OBJ_IMLIST = $(patsubst %.cpp,%.o,$(SRC_IMLIST))
OBJ_OPENSAVE = $(patsubst %.cpp,%.o,$(SRC_OPENSAVE))
OBJ_PLUGADMIN = $(patsubst %.cpp,%.o,$(SRC_PLUGADMIN))
OBJ_PREFERENCE = $(patsubst %.cpp,%.o,$(SRC_PREFERENCE))
OBJ_PRJPANEL = $(patsubst %.cpp,%.o,$(SRC_PRJPANEL))
OBJ_READDIR = $(patsubst %.cpp,%.o,$(SRC_READDIR))
OBJ_SHORTCUT = $(patsubst %.cpp,%.o,$(SRC_SHORTCUT))
OBJ_SPLITTER = $(patsubst %.cpp,%.o,$(SRC_SPLITTER))
OBJ_STATICDLG = $(patsubst %.cpp,%.o,$(SRC_STATICDLG))
OBJ_RUNDLG = $(patsubst %.cpp,%.o,$(SRC_RUNDLG))
OBJ_STATUSBAR = $(patsubst %.cpp,%.o,$(SRC_STATUSBAR))
OBJ_TABBAR = $(patsubst %.cpp,%.o,$(SRC_TABBAR))
OBJ_TASKLIST = $(patsubst %.cpp,%.o,$(SRC_TASKLIST))
OBJ_TOOLBAR = $(patsubst %.cpp,%.o,$(SRC_TOOLBAR))
OBJ_TOOLTIP = $(patsubst %.cpp,%.o,$(SRC_TOOLTIP))
OBJ_TRAYICON = $(patsubst %.cpp,%.o,$(SRC_TRAYICON))
OBJ_TREEVIEW = $(patsubst %.cpp,%.o,$(SRC_TREEVIEW))
OBJ_VERTFILE = $(patsubst %.cpp,%.o,$(SRC_VERTFILE))
OBJ_WINDOWSDLG = $(patsubst %.cpp,%.o,$(SRC_WINDOWSDLG))
# Collections
DIRS_WIN = $(WIN_DIR) $(ABOUT_DIR) $(ANSICHAR_DIR) $(CLIPBOARD_DIR) $(CONTEXT_DIR) $(COLOUR_DIR) $(DOCKING_DIR) $(DOCMAP_DIR) $(FBROWSER_DIR) $(FINDCHARS_DIR) $(FUNCLIST_DIR) $(GRID_DIR) $(IMLIST_DIR) $(OPENSAVE_DIR) $(PLUGADMIN_DIR) $(PREFERENCE_DIR) $(PRJPANEL_DIR) $(READDIR_DIR) $(SHORTCUT_DIR) $(SPLITTER_DIR) $(STATICDLG_DIR) $(RUNDLG_DIR) $(STATUSBAR_DIR) $(TABBAR_DIR) $(TASKLIST_DIR) $(TOOLBAR_DIR) $(TOOLTIP_DIR) $(TRAYICON_DIR) $(TREEVIEW_DIR) $(VERTFILE_DIR) $(WINDOWSDLG_DIR)
DIRS_UCHARDET = $(UCHARDET_DIR)
DIRS_TIXML = $(TIXML_DIR) $(TIXMLA_DIR)
DIRS_SCINT = $(SCINT_DIR)
DIRS_MISC = $(MISC_DIR) $(COMMON_DIR) $(EXCEPTION_DIR) $(MD5_DIR) $(SHA2_DIR) $(PLUGINS_DIR) $(PROCESS_DIR) $(REGEXT_DIR)
DIRS = $(NPP_DIR) $(DIRS_WIN) $(DIRS_UCHARDET) $(DIRS_TIXML) $(DIRS_SCINT) $(DIRS_MISC) $(JSON_DIR) $(SCI_DIR)
SRCS_WIN = $(SRC_WIN) $(SRC_ABOUT) $(SRC_ANSICHAR) $(SRC_CLIPBOARD) $(SRC_CONTEXT) $(SRC_COLOUR) $(SRC_DOCKING) $(SRC_DOCMAP) $(SRC_FBROWSER) $(SRC_FINDCHARS) $(SRC_FUNCLIST) $(SRC_GRID) $(SRC_IMLIST) $(SRC_OPENSAVE) $(SRC_PLUGADMIN) $(SRC_PREFERENCE) $(SRC_PRJPANEL) $(SRC_READDIR) $(SRC_SHORTCUT) $(SRC_SPLITTER) $(SRC_STATICDLG) $(SRC_RUNDLG) $(SRC_STATUSBAR) $(SRC_TABBAR) $(SRC_TASKLIST) $(SRC_TOOLBAR) $(SRC_TOOLTIP) $(SRC_TRAYICON) $(SRC_TREEVIEW) $(SRC_VERTFILE) $(SRC_WINDOWSDLG)
SRCS_UCHARDET = $(SRC_UCHARDET)
SRCS_TIXML = $(SRC_TIXML) $(SRC_TIXMLA)
SRCS_SCINT = $(SRC_SCINT)
SRCS_MISC = $(SRC_MISC) $(SRC_COMMON) $(SRC_EXCEPTION) $(SRC_MD5) $(SRC_SHA2) $(SRC_PLUGINS) $(SRC_PROCESS) $(SRC_REGEXT)
SRCS = $(SRC_NPP) $(SRCS_WIN) $(SRCS_UCHARDET) $(SRCS_TIXML) $(SRCS_SCINT) $(SRCS_MISC) $(SRC_GCCINCLUDE)
OBJS_WIN = $(OBJ_WIN) $(OBJ_ABOUT) $(OBJ_ANSICHAR) $(OBJ_CLIPBOARD) $(OBJ_CONTEXT) $(OBJ_COLOUR) $(OBJ_DOCKING) $(OBJ_DOCMAP) $(OBJ_FBROWSER) $(OBJ_FINDCHARS) $(OBJ_FUNCLIST) $(OBJ_GRID) $(OBJ_IMLIST) $(OBJ_OPENSAVE) $(OBJ_PLUGADMIN) $(OBJ_PREFERENCE) $(OBJ_PRJPANEL) $(OBJ_READDIR) $(OBJ_SHORTCUT) $(OBJ_SPLITTER) $(OBJ_STATICDLG) $(OBJ_RUNDLG) $(OBJ_STATUSBAR) $(OBJ_TABBAR) $(OBJ_TASKLIST) $(OBJ_TOOLBAR) $(OBJ_TOOLTIP) $(OBJ_TRAYICON) $(OBJ_TREEVIEW) $(OBJ_VERTFILE) $(OBJ_WINDOWSDLG)
OBJS_UCHARDET = $(OBJ_UCHARDET)
OBJS_TIXML = $(OBJ_TIXML) $(OBJ_TIXMLA)
OBJS_SCINT = $(OBJ_SCINT)
OBJS_DARKMODE = $(OBJ_DARKMODE)
OBJS_MISC = $(OBJ_MISC) $(OBJ_COMMON) $(OBJ_EXCEPTION) $(OBJ_MD5) $(OBJ_SHA2) $(OBJ_PLUGINS) $(OBJ_PROCESS) $(OBJ_REGEXT)
OBJS = $(OBJ_NPP) $(OBJS_WIN) $(OBJS_UCHARDET) $(OBJS_TIXML) $(OBJS_SCINT) $(OBJS_MISC) $(OBJS_DARKMODE) $(OBJ_GCCINCLUDE)
# Main resource file
SRC_RES = ./resources.rc
OBJ_RES = $(patsubst %.rc,%.res,$(SRC_RES))
# XML config files
SRC_XMLCFG = $(addprefix $(NPP_DIR)/,langs.model.xml stylers.model.xml shortcuts.xml contextMenu.xml)
DST_XMLCFG = $(subst $(NPP_DIR),../bin,$(SRC_XMLCFG))
DEPS = $(patsubst %.o,%.d,$(OBJS))
ifeq ($(OS),Windows_NT)
ifdef ComSpec
SHELL = $(ComSpec)
else
CXX := $(CROSS_COMPILE)g++
SHELL = cmd.exe
endif
CXXFLAGS := -include $(GCC_DIRECTORY)/gcc-fixes.h -std=c++20
RC := $(CROSS_COMPILE)windres
RCFLAGS := --codepage=65001
CPP_PATH := $(SCINTILLA_DIRECTORY)/include $(LEXILLA_DIRECTORY)/include
CPP_DEFINE := UNICODE _UNICODE OEMRESOURCE NOMINMAX _WIN32_WINNT=_WIN32_WINNT_WIN7 NTDDI_VERSION=NTDDI_WIN7 TIXML_USE_STL TIXMLA_USE_STL
LD := $(CXX)
LDFLAGS := -municode -mwindows
LD_PATH :=
LD_LINK := comctl32 crypt32 dbghelp ole32 sensapi shlwapi uuid uxtheme version wininet wintrust dwmapi
LD_LINK += $(patsubst lib%.a,%,$(SCINTILLA_TARGET)) $(patsubst lib%.a,%,$(LEXILLA_TARGET)) imm32 msimg32 ole32 oleaut32
SUBMAKEFLAGS := -O --no-print-directory
# detect a request for a debug build
ifeq "$(filter-out 0,$(DEBUG))" ""
BUILD_TYPE := release
BUILD_SUFFIX :=
CXXFLAGS += -O3 -Wconversion
CPP_DEFINE += NDEBUG
LDFLAGS += -s
CROSS_COMPILE =
DIRSEP = \\
RM = del
CP = copy /Y
else
BUILD_TYPE := debug
BUILD_SUFFIX := -debug
CXXFLAGS += -Og -g -Wpedantic -Wall -Wextra -Wno-cast-function-type -Wno-overloaded-virtual -Wconversion
CPP_DEFINE += DEBUG
CROSS_COMPILE ?= i686-w64-mingw32-
DIRSEP = /
RM = rm -f
CP = cp
endif
ifeq ($(CXX),clang++)
CXXFLAGS += -Wimplicit-fallthrough \
-Wformat=2 \
-Wno-c++98-compat \
-Wno-c++98-compat-pedantic \
-Wno-reserved-id-macro \
-Wno-pragma-pack \
-Wno-unknown-pragmas \
-Wno-unused-command-line-argument \
-Wno-overloaded-virtual \
-Wno-sign-conversion \
-Wno-c99-extensions \
-Wno-deprecated-declarations
else ifeq ($(BUILD_TYPE),release)
CXXFLAGS += -Wno-alloc-size-larger-than
endif
# Parameters
INCLUDESPECIAL = -include./include/various.h
UNICODE = -DUNICODE -D_UNICODE
ifneq "$(filter-out 0,$(CLANGANALYZE))" ""
CXXFLAGS += --analyze -Xanalyzer -analyzer-output=text
endif
CXX = $(CROSS_COMPILE)g++
#CXXFLAGS = -O2 $(INCLUDESPECIAL)
CXXFLAGS = $(INCLUDESPECIAL) -D_WIN32_WINNT=0x0600 -DTIXML_USE_STL -DTIXMLA_USE_STL $(UNICODE) -std=c++17 -fpermissive -Wno-conversion-null
INCLUDES = $(patsubst %,-I%,$(DIRS)) -I./include
LDFLAGS = -Wl,--subsystem,windows -municode -mwindows
LIBS = -lcomdlg32 -lcomctl32 -lgdi32 -lole32 -loleacc -lshell32 -lshlwapi -ldbghelp -lversion -lcrypt32 -lsensapi -lwininet -lwintrust -luuid -luxtheme
LIBSCILEX = -L$(SCI_DIR)/../bin -lscilexer -loleaut32 -limm32 -lmsimg32
#
# preparations
#
RC = $(CROSS_COMPILE)windres
# detect Windows directory
WIN_DIR := $(or $(windir),$(WINDIR))
OUT_NPP = NotepadPP.exe
# detect target CPU
TARGET_CPU := $(firstword $(subst -, ,$(shell $(CXX) -dumpmachine)))
ifeq "$(TARGET_CPU)" ""
$(error TARGET_CPU detection failed)
endif
ifneq "$(filter-out x86_64 i686,$(TARGET_CPU))" ""
$(error $(TARGET_CPU) build is unsupported)
endif
ifeq "$(TARGET_CPU)" "i686"
# for some reason i686 versions of MinGW-w64 GCC don't include a linking library for SensApi.dll
# thus it is generated on the fly, but first check if the DLL is available
ifeq "$(wildcard $(WIN_DIR)/system32/SensApi.dll)" ""
$(error $(TARGET_CPU) build requires "%windir%/system32/SensApi.dll" to be present)
endif
# detect explicit definition of TARGET_CPU via command line to force a 32-bit build for MinGW-w64 with support multilib
ifeq "$(origin TARGET_CPU)" "command line"
export CXX += -m32
export LD += -m32
export RC += -Fpe-i386
endif
# detect explicit definition of TARGET_CPU via command line to force a 64-bit build for MinGW-w64 with support multilib
else ifneq "$(and $(findstring x86_64,$(TARGET_CPU)),$(findstring command line,$(origin TARGET_CPU)))" ""
export CXX += -m64
export LD += -m64
export RC += -Fpe-x86-64
endif
EXEC = ../bin/$(OUT_NPP)
# define target and build directories and update dependent variables
TARGET_DIRECTORY := bin.$(TARGET_CPU)$(BUILD_SUFFIX)
BUILD_DIRECTORY := $(TARGET_DIRECTORY).build
all: NotepadPP xmlcfg
TARGET_BINARY := $(TARGET_DIRECTORY)/$(TARGET_BINARY)
SRC_DATA := $(addprefix $(TARGET_DIRECTORY)/,$(SRC_DATA))
BIN_DATA := $(addprefix $(TARGET_DIRECTORY)/,$(BIN_DATA))
INSTALLER_DATA := $(addprefix $(TARGET_DIRECTORY)/,$(INSTALLER_DATA))
-include $(DEPS)
SCINTILLA_TARGET := $(BUILD_DIRECTORY)/$(SCINTILLA_TARGET)
SCINTILLA_TARGET_PATH := ../../PowerEditor/gcc/$(SCINTILLA_TARGET)
SCINTILLA_BUILD_DIRECTORY := $(BUILD_DIRECTORY)/_scintilla.build
SCINTILLA_BUILD_PATH := ../../PowerEditor/gcc/$(SCINTILLA_BUILD_DIRECTORY)
# Main Notepad++ rule
NotepadPP: $(EXEC)
LEXILLA_TARGET := $(BUILD_DIRECTORY)/$(LEXILLA_TARGET)
LEXILLA_TARGET_PATH := ../../PowerEditor/gcc/$(LEXILLA_TARGET)
LEXILLA_BUILD_DIRECTORY := $(BUILD_DIRECTORY)/_lexilla.build
LEXILLA_BUILD_PATH := ../../PowerEditor/gcc/$(LEXILLA_BUILD_DIRECTORY)
$(EXEC): $(OBJS) $(OBJ_RES)
$(CXX) $(LDFLAGS) $^ $(LIBSCILEX) $(LIBS) -o $@_dynamic
$(CXX) $(LDFLAGS) $^ $(LIBSCILEX) $(LIBS) -static -o $@
%.o: %.cpp
$(CXX) $(CXXFLAGS) $(INCLUDES) -MMD -c $< -o $@
LD_PATH += $(BUILD_DIRECTORY)
%.res: %.rc
$(RC) $(INCLUDES) $(UNICODE) --input=$< --output=$@ --input-format=rc --output-format=coff
# detect a build outside of PowerEditor/gcc and update dependent variables
SPACES_ERROR := "For outside build spaces in the project path are not supported! Please move the project files to the correct path."
$(foreach makefile,$(MAKEFILE_LIST),$(if $(wildcard $(makefile)),,$(error $(SPACES_ERROR))))
xmlcfg: $(DST_XMLCFG)
MAKEFILE_DIRECTORY := $(patsubst %/,%,$(dir $(subst \,/,$(firstword $(MAKEFILE_LIST)))))
ifneq "$(MAKEFILE_DIRECTORY)" "."
MAKEFILE_PARENT := $(patsubst %/,%,$(dir $(MAKEFILE_DIRECTORY)))
BIN_DIRECTORY := $(patsubst ../%,$(MAKEFILE_PARENT)/%,$(BIN_DIRECTORY))
GCC_DIRECTORY := $(patsubst ../%,$(MAKEFILE_PARENT)/%,$(GCC_DIRECTORY))
GCC_EXCLUDE := $(patsubst ../%,$(MAKEFILE_PARENT)/%,$(GCC_EXCLUDE))
SRC_DIRECTORY := $(patsubst ../%,$(MAKEFILE_PARENT)/%,$(SRC_DIRECTORY))
SRC_EXCLUDE := $(patsubst ../%,$(MAKEFILE_PARENT)/%,$(SRC_EXCLUDE))
INSTALLER_DIRECTORY := $(patsubst ../%,$(MAKEFILE_PARENT)/%,$(INSTALLER_DIRECTORY))
SCINTILLA_DIRECTORY := $(patsubst ../%,$(MAKEFILE_PARENT)/%,$(SCINTILLA_DIRECTORY))
SCINTILLA_TARGET_PATH := $(CURDIR)/$(SCINTILLA_TARGET)
SCINTILLA_BUILD_PATH := $(CURDIR)/$(SCINTILLA_BUILD_DIRECTORY)
LEXILLA_DIRECTORY := $(patsubst ../%,$(MAKEFILE_PARENT)/%,$(LEXILLA_DIRECTORY))
LEXILLA_TARGET_PATH := $(CURDIR)/$(LEXILLA_TARGET)
LEXILLA_BUILD_PATH := $(CURDIR)/$(LEXILLA_BUILD_DIRECTORY)
CXXFLAGS := $(patsubst ../%,$(MAKEFILE_PARENT)/%,$(CXXFLAGS))
CPP_PATH := $(patsubst ../%,$(MAKEFILE_PARENT)/%,$(CPP_PATH))
endif
# detect a request for a verbose output
ifeq "$(filter-out 0,$(VERBOSE))" ""
AT := @
endif
# detect the current operating system
ifeq "$(WIN_DIR)" ""
# not a Windows system
MKDIR := mkdir -p
CPDIR := cp -r
RMDIR := rm -rf
CP := cp
RM := rm -f
PREBUILD_EVENT_CMD := cmd //C "cd PowerEditor/src && NppLibsVersionH-generator.bat"
normalize-path = $1
else ifneq "$(wildcard $(dir $(SHELL))ls.exe)" ""
# a Windows system with a proper shell
NULL :=
SPACE := $(NULL) $(NULL)
SHELL_DIRECTORY := $(subst |,$(SPACE),$(dir $(subst $(SPACE),|,$(SHELL))))
MKDIR := $(SHELL_DIRECTORY)mkdir.exe -p
CPDIR := $(SHELL_DIRECTORY)cp.exe -r
RMDIR := $(SHELL_DIRECTORY)rm.exe -rf
CP := $(SHELL_DIRECTORY)cp.exe
RM := $(SHELL_DIRECTORY)rm.exe -f
PREBUILD_EVENT_CMD := cmd //C "cd PowerEditor/src && NppLibsVersionH-generator.bat"
normalize-path = $1
else
# a standard Windows system
MKDIR := mkdir
CPDIR := xcopy /q /e /i /y
RMDIR := rmdir /q /s
CP := copy /y
RM := del /q
PREBUILD_EVENT_CMD := cd ..\src && NppLibsVersionH-generator.bat
normalize-path = $(subst /,\,$1)
endif
# discover files
list-subtree = $(foreach i,$(wildcard $1/*),$i $(call list-subtree,$i))
GCC_SUBTREE := $(patsubst $(GCC_DIRECTORY)/%,%,$(filter-out $(GCC_EXCLUDE),$(call list-subtree,$(GCC_DIRECTORY))))
SRC_SUBTREE := $(patsubst $(SRC_DIRECTORY)/%,%,$(filter-out $(SRC_EXCLUDE),$(call list-subtree,$(SRC_DIRECTORY))))
CPP_PATH += $(addprefix $(GCC_DIRECTORY)/,$(sort $(patsubst %/,%,$(dir $(filter %.h %.hpp,$(GCC_SUBTREE))))))
CPP_PATH += $(addprefix $(SRC_DIRECTORY)/,$(sort $(patsubst %/,%,$(dir $(filter %.h %.hpp,$(SRC_SUBTREE))))))
vpath %.cpp $(GCC_DIRECTORY) $(SRC_DIRECTORY)
CXX_TARGETS := $(patsubst %.cpp,$(BUILD_DIRECTORY)/%.o,$(sort $(filter %.cpp,$(GCC_SUBTREE) $(SRC_SUBTREE))))
vpath %.rc $(GCC_DIRECTORY) $(SRC_DIRECTORY)
RC_TARGETS := $(patsubst %.rc,$(BUILD_DIRECTORY)/%.res,$(sort $(filter %.rc,$(GCC_SUBTREE) $(SRC_SUBTREE))))
#
# actions
#
.PHONY: .force all binary data clean sciclean lexclean fullclean
.force:
SUBMAKEFLAGS += $(if $(NUMBER_OF_PROCESSORS),-j$(NUMBER_OF_PROCESSORS),)
all: pre-build-event $(SCINTILLA_TARGET) $(LEXILLA_TARGET)
$(AT)$(MAKE) -f $(firstword $(MAKEFILE_LIST)) $(SUBMAKEFLAGS) binary
pre-build-event:
@echo Executing pre-build events...
$(AT)$(PREBUILD_EVENT_CMD)
$(BUILD_DIRECTORY):
@echo + creating BUILD_DIRECTORY $@
$(AT)$(MKDIR) $(call normalize-path,$(sort $@ $(patsubst %/,%,$(dir $(CXX_TARGETS) $(RC_TARGETS)))))
$(SCINTILLA_BUILD_DIRECTORY):
@echo + creating SCINTILLA_BUILD_DIRECTORY $@
$(AT)$(MKDIR) $(call normalize-path,$(SCINTILLA_BUILD_DIRECTORY))
$(LEXILLA_BUILD_DIRECTORY):
@echo + creating LEXILLA_BUILD_DIRECTORY $@
$(AT)$(MKDIR) $(call normalize-path,$(LEXILLA_BUILD_DIRECTORY))
ifeq "$(MAKELEVEL)" "0"
$(SCINTILLA_TARGET): .force
$(LEXILLA_TARGET): .force
endif
$(SCINTILLA_TARGET): | $(BUILD_DIRECTORY) $(SCINTILLA_BUILD_DIRECTORY)
$(AT)$(MAKE) $(SUBMAKEFLAGS) -C $(SCINTILLA_DIRECTORY)/win32 -f makefile -f ../../boostregex/nppSpecifics_mingw.mak DIR_O=$(SCINTILLA_BUILD_PATH) LIBSCI=$(SCINTILLA_TARGET_PATH) $(SCINTILLA_TARGET_PATH)
$(LEXILLA_TARGET): | $(BUILD_DIRECTORY) $(LEXILLA_BUILD_DIRECTORY)
$(AT)$(MAKE) $(SUBMAKEFLAGS) -C $(LEXILLA_DIRECTORY)/src DIR_O=$(LEXILLA_BUILD_PATH) LIBLEXILLA=$(LEXILLA_TARGET_PATH) $(LEXILLA_TARGET_PATH)
binary: $(TARGET_BINARY) data
@echo +++ $(TARGET_CPU) $(BUILD_TYPE) : $(CURDIR)/$(TARGET_BINARY) +++
$(CXX_TARGETS): $(BUILD_DIRECTORY)/%.o: %.cpp | $(BUILD_DIRECTORY)
@echo + compiling $<
$(AT)$(CXX) $(CXXFLAGS) $(addprefix -I,$(CPP_PATH)) $(addprefix -D,$(CPP_DEFINE)) -MMD -c -o $@ $<
$(RC_TARGETS): $(BUILD_DIRECTORY)/%.res: %.rc | $(BUILD_DIRECTORY)
@echo + compiling $<
$(AT)$(RC) $(RCFLAGS) $(addprefix -I,$(CPP_PATH)) $(addprefix -D,$(CPP_DEFINE)) -O coff -o $@ -i $<
ifeq "$(TARGET_CPU)" "i686"
$(TARGET_BINARY): $(BUILD_DIRECTORY)/libsensapi.a
$(BUILD_DIRECTORY)/libsensapi.a: | $(BUILD_DIRECTORY)
@echo + generating $@
$(AT)gendef $(call normalize-path,$(firstword $(wildcard $(WIN_DIR)/syswow64/SensApi.dll $(WIN_DIR)/system32/SensApi.dll)))
$(AT)dlltool -mi386 -f--32 -d SensApi.def -k -l $(call normalize-path,$@)
$(AT)$(RM) SensApi.def
endif
$(TARGET_DIRECTORY):
@echo + creating TARGET_DIRECTORY $@
$(AT)$(MKDIR) $(call normalize-path,$@)
$(TARGET_BINARY): $(CXX_TARGETS) $(RC_TARGETS) $(SCINTILLA_TARGET) $(LEXILLA_TARGET) | $(TARGET_DIRECTORY)
@echo + linking $@
$(AT)$(LD) $(LDFLAGS) $(filter-out %.a,$^) $(addprefix -L,$(LD_PATH)) $(addprefix -l,$(LD_LINK)) -static -o $@
data: $(patsubst %/,%,$(SRC_DATA) $(BIN_DATA) $(INSTALLER_DATA))
$(patsubst %/,%,$(filter %/,$(SRC_DATA))): $(TARGET_DIRECTORY)/%: $(SRC_DIRECTORY)/% | $(TARGET_DIRECTORY)
@echo + copying $@
$(AT)$(CPDIR) $(call normalize-path,$< $@)
$(filter-out %/,$(SRC_DATA)): $(TARGET_DIRECTORY)/%: $(SRC_DIRECTORY)/% | $(TARGET_DIRECTORY)
@echo + copying $@
$(AT)$(CP) $(call normalize-path,$< $@)
$(patsubst %/,%,$(filter %/,$(BIN_DATA))): $(TARGET_DIRECTORY)/%: $(BIN_DIRECTORY)/% | $(TARGET_DIRECTORY)
@echo + copying $@
$(AT)$(CPDIR) $(call normalize-path,$< $@)
$(filter-out %/,$(BIN_DATA)): $(TARGET_DIRECTORY)/%: $(BIN_DIRECTORY)/% | $(TARGET_DIRECTORY)
@echo + copying $@
$(AT)$(CP) $(call normalize-path,$< $@)
$(TARGET_DIRECTORY)/autoCompletion: $(INSTALLER_DIRECTORY)/APIs
$(TARGET_DIRECTORY)/functionList: $(INSTALLER_DIRECTORY)/functionList
$(TARGET_DIRECTORY)/localization: $(INSTALLER_DIRECTORY)/nativeLang
$(TARGET_DIRECTORY)/themes: $(INSTALLER_DIRECTORY)/themes
$(patsubst %/,%,$(filter %/,$(INSTALLER_DATA))): | $(TARGET_DIRECTORY)
@echo + copying $@
$(AT)$(CPDIR) $(call normalize-path,$< $@)
$(filter-out %/,$(INSTALLER_DATA)): | $(TARGET_DIRECTORY)
@echo + copying $@
$(AT)$(CP) $(call normalize-path,$< $@)
$(DST_XMLCFG): $(dir $(firstword $(DST_XMLCFG)))%.xml: $(dir $(firstword $(SRC_XMLCFG)))%.xml
$(CP) $(subst /,$(DIRSEP),$< $@)
# Cleanup
clean:
-$(AT)$(RMDIR) $(call normalize-path,$(BUILD_DIRECTORY))
-@$(RM) $(subst /,$(DIRSEP),$(OBJS) $(OBJ_RES))
-@$(RM) $(subst /,$(DIRSEP),$(DST_XMLCFG))
-@$(RM) $(subst /,$(DIRSEP),$(DEPS))
sciclean:
-$(AT)$(RMDIR) $(call normalize-path,$(SCINTILLA_BUILD_DIRECTORY))
lexclean:
-$(AT)$(RMDIR) $(call normalize-path,$(LEXILLA_BUILD_DIRECTORY))
fullclean: clean
-$(AT)$(RMDIR) $(call normalize-path,$(TARGET_DIRECTORY))
-include $(CXX_TARGETS:%.o=%.d)
.PHONY: all clean NotepadPP

View File

@ -1,3 +0,0 @@
#include <windows.h>
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "../src/notepad++.exe.manifest"

View File

@ -0,0 +1,24 @@
makefile was renewed after the v6.8.7 release.
It was tested with a MinGW-w64 distribution containing
GCC 5.2.0 (cross-compiled with i686-w64-mingw32 on Arch Linux) and
GCC 4.9.2 (natively on Windows 7, will not work anymore with this version).
The default make rule should suffice for building Notepad++,
and copying the required .xml config files.
If cross-compiling you may have to pass a custom CROSS_COMPILE
variable depending on your Linux distribution.
The clean rule removes .o/.d and .res and the copied .xml files
For localization support in the editor preferences you have to copy the
PowerEditor/installer/nativeLang/ directory to PowerEditor/bin/ with the new
directory name "localization".
On Linux a symbolic link suffices:
$ ln -s ../installer/nativeLang localization
For execution with Wine some additional DLLs from the MinGW package have to be
found inside of the PowerEditor/bin/ directory, which can be achieved by using
links again, e.g.:
$ ln -s /usr/i686-w64-mingw32/bin/libgcc_s_sjlj-1.dll
$ ln -s /usr/i686-w64-mingw32/bin/libstdc++-6.dll
$ ln -s /usr/i686-w64-mingw32/bin/libwinpthread-1.dll

View File

@ -0,0 +1,30 @@
#include "./include/various.h"
#define TEXT(quote) quote
#include "../src/ScintillaComponent/columnEditor.rc"
#include "../src/ScintillaComponent/FindReplaceDlg.rc"
#include "../src/ScintillaComponent/UserDefineDialog.rc"
#include "../src/MISC/md5/md5Dlgs.rc"
#include "../src/MISC/RegExt/regExtDlg.rc"
#include "../src/WinControls/AnsiCharPanel/ansiCharPanel.rc"
#include "../src/WinControls/ClipboardHistory/clipboardHistoryPanel.rc"
#include "../src/WinControls/ColourPicker/ColourPopup.rc"
#include "../src/WinControls/ColourPicker/WordStyleDlg.rc"
#include "../src/WinControls/DockingWnd/DockingGUIWidget.rc"
#include "../src/WinControls/DocumentMap/documentMap.rc"
#include "../src/WinControls/DocumentMap/documentSnapshot.rc"
#include "../src/WinControls/FileBrowser/fileBrowser.rc"
#include "../src/WinControls/FindCharsInRange/findCharsInRange.rc"
#include "../src/WinControls/FunctionList/functionListPanel.rc"
#include "../src/WinControls/Grid/ShortcutMapper.rc"
#include "../src/WinControls/PluginsAdmin/pluginsAdmin.rc"
#include "../src/WinControls/Preference/preference.rc"
#include "../src/WinControls/ProjectPanel/ProjectPanel.rc"
#include "../src/WinControls/shortcut/RunMacroDlg.rc"
#include "../src/WinControls/shortcut/shortcut.rc"
#include "../src/WinControls/TaskList/TaskListDlg.rc"
#include "../src/WinControls/StaticDialog/RunDlg/RunDlg.rc"
#include "../src/WinControls/VerticalFileSwitcher/VerticalFileSwitcher.rc"
#include "../src/WinControls/WindowsDlg/WindowsDlg.rc"
#include "../src/Notepad_plus.rc"

View File

@ -24,7 +24,6 @@
<KeyWord name="appendChild" />
<KeyWord name="apply" />
<KeyWord name="arguments" />
<KeyWord name="ArgumentError" />
<KeyWord name="arguments.callee" />
<KeyWord name="arguments.caller" />
<KeyWord name="Array" />
@ -70,7 +69,6 @@
<KeyWord name="charCodeAt" />
<KeyWord name="childNodes" />
<KeyWord name="chr" />
<KeyWord name="Class" />
<KeyWord name="clear" />
<KeyWord name="clearInterval" />
<KeyWord name="cloneNode" />
@ -100,10 +98,7 @@
<KeyWord name="Date" />
<KeyWord name="Date.UTC" />
<KeyWord name="decode" />
<KeyWord name="decodeURI" />
<KeyWord name="decodeURIComponent" />
<KeyWord name="default" />
<KeyWord name="DefinitionError" />
<KeyWord name="delete" />
<KeyWord name="DELETEKEY" />
<KeyWord name="do" />
@ -117,18 +112,14 @@
<KeyWord name="else" />
<KeyWord name="embedFonts" />
<KeyWord name="enabled" />
<KeyWord name="encodeURI" />
<KeyWord name="encodeURIComponent" />
<KeyWord name="END" />
<KeyWord name="endFill" />
<KeyWord name="ENTER" />
<KeyWord name="enterFrame" />
<KeyWord name="eq" />
<KeyWord name="Error" />
<KeyWord name="escape" />
<KeyWord name="ESCAPE" />
<KeyWord name="eval" />
<KeyWord name="EvalError" />
<KeyWord name="evaluate" />
<KeyWord name="exp" />
<KeyWord name="false" />
@ -142,7 +133,6 @@
<KeyWord name="fscommand" />
<KeyWord name="FStyleFormat" />
<KeyWord name="function" />
<KeyWord name="Function" />
<KeyWord name="ge" />
<KeyWord name="get" />
<KeyWord name="getAscii" />
@ -233,10 +223,9 @@
<KeyWord name="isPropertyEnumerable" />
<KeyWord name="isPrototypeOf" />
<KeyWord name="isToggled" />
<KeyWord name="isXMLName" />
<KeyWord name="italic" />
<KeyWord name="john@3wgraphics.net" />
<KeyWord name="join" />
<KeyWord name="JSON" />
<KeyWord name="Key" />
<KeyWord name="Key.ALT" />
<KeyWord name="Key.BACKSPACE" />
@ -343,7 +332,6 @@
<KeyWord name="moveTo" />
<KeyWord name="MovieClip" />
<KeyWord name="multiline" />
<KeyWord name="Namespace" />
<KeyWord name="NaN" />
<KeyWord name="ne" />
<KeyWord name="NEGATIVE_INFINITY" />
@ -425,13 +413,9 @@
<KeyWord name="prototype" />
<KeyWord name="publish" />
<KeyWord name="push" />
<KeyWord name="QName" />
<KeyWord name="random" />
<KeyWord name="RangeError" />
<KeyWord name="receiveAudio" />
<KeyWord name="receiveVideo" />
<KeyWord name="ReferenceError" />
<KeyWord name="RegExp" />
<KeyWord name="registerClass" />
<KeyWord name="release" />
<KeyWord name="releaseOutside" />
@ -456,7 +440,6 @@
<KeyWord name="scroll" />
<KeyWord name="scrollString" />
<KeyWord name="security" />
<KeyWord name="SecurityError" />
<KeyWord name="seek" />
<KeyWord name="selectable" />
<KeyWord name="Selection" />
@ -549,7 +532,6 @@
<KeyWord name="super" />
<KeyWord name="swapDepths" />
<KeyWord name="switch" />
<KeyWord name="SyntaxError" />
<KeyWord name="System" />
<KeyWord name="System.capabilities" />
<KeyWord name="System.capabilities.hasAccessibility" />
@ -595,9 +577,7 @@
<KeyWord name="trackAsMenu" />
<KeyWord name="true" />
<KeyWord name="type" />
<KeyWord name="TypeError" />
<KeyWord name="typeof" />
<KeyWord name="uint" />
<KeyWord name="undefined" />
<KeyWord name="underline" />
<KeyWord name="unescape" />
@ -609,15 +589,12 @@
<KeyWord name="unwatch" />
<KeyWord name="UP" />
<KeyWord name="updateAfterEvent" />
<KeyWord name="URIError" />
<KeyWord name="url" />
<KeyWord name="useHandCursor" />
<KeyWord name="UTC" />
<KeyWord name="valueOf" />
<KeyWord name="var" />
<KeyWord name="variable" />
<KeyWord name="Vector" />
<KeyWord name="VerifyError" />
<KeyWord name="version" />
<KeyWord name="Video" />
<KeyWord name="void" />
@ -628,7 +605,6 @@
<KeyWord name="wordWrap" />
<KeyWord name="XML" />
<KeyWord name="xmlDecl" />
<KeyWord name="XMLList" />
<KeyWord name="XMLNode" />
<KeyWord name="XMLSocket" />
<KeyWord name="_alpha" />

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8" ?>
<NotepadPlus>
<Environment ignoreCase="yes" startFunc="(" stopFunc=")" paramSeparator="," additionalWordChar="-" />
<!-- note: this list was created using functions and reserved words known to GnuCOBOL (COBOL85,2002,2014 + extensions from IBM/MF/RM/ACUCOBOL) -->
<AutoComplete language="COBOL">
<Environment ignoreCase="yes" startFunc="(" stopFunc=")" paramSeparator="," additionalWordChar="-" />
<KeyWord name="3-D" />
<KeyWord name="ABS" func="yes">
<Overload retVal="Integer/Numeric" descr="absolute value of &lt;number&gt;">

View File

@ -16,7 +16,7 @@
<KeyWord name="else" />
<KeyWord name="extends" />
<KeyWord name="false" />
<KeyWord name="finally" />
<keyWord name="finally" />
<KeyWord name="for" />
<KeyWord name="if" />
<KeyWord name="in" />
@ -26,16 +26,16 @@
<KeyWord name="instanceof" />
<KeyWord name="loop" />
<KeyWord name="new" />
<KeyWord name="not" />
<keyWord name="not" />
<KeyWord name="null" />
<KeyWord name="NaN" />
<KeyWord name="of" />
<KeyWord name="or" />
<KeyWord name="on" />
<KeyWord name="no" />
<keyWord name="no" />
<KeyWord name="return" />
<KeyWord name="switch" />
<KeyWord name="super" />
<keyWord name="super" />
<KeyWord name="then" />
<KeyWord name="this" />
<KeyWord name="throw" />
@ -46,9 +46,9 @@
<KeyWord name="unless" />
<KeyWord name="when" />
<KeyWord name="while" />
<KeyWord name="yes" />
<keyWord name="yes" />
<KeyWord name="yield" />
<KeyWord name="=>" />
<KeyWord name="->" />
<keyWord name="=>" />
<keyWord name="->" />
</AutoComplete>
</NotepadPlus>

View File

@ -34,7 +34,6 @@
<KeyWord name="#line" />
<KeyWord name="#pragma" />
<KeyWord name="#undef" />
<KeyWord name="NULL" />
<KeyWord name="abort" func="yes">
<Overload retVal="void" >
<Param name="void" />
@ -64,14 +63,10 @@
<KeyWord name="adjacent_difference" />
<KeyWord name="adjacent_find" />
<KeyWord name="advance" />
<KeyWord name="alignas" />
<KeyWord name="alignof" />
<KeyWord name="allocate" />
<KeyWord name="allocator" />
<KeyWord name="allocmem" />
<KeyWord name="always_noconv" />
<KeyWord name="and" />
<KeyWord name="and_eq" />
<KeyWord name="any" />
<KeyWord name="append" />
<KeyWord name="arc" />
@ -128,9 +123,6 @@
<Param name="const char *nptr" />
</Overload>
</KeyWord>
<KeyWord name="atomic_cancel" />
<KeyWord name="atomic_commit" />
<KeyWord name="atomic_noexcept" />
<KeyWord name="auto" />
<KeyWord name="auto_ptr" />
<KeyWord name="back" />
@ -159,8 +151,6 @@
<KeyWord name="biosmemory" />
<KeyWord name="biosprint" />
<KeyWord name="biostime" />
<KeyWord name="bitand" />
<KeyWord name="bitor" />
<KeyWord name="bitset" />
<KeyWord name="bool" />
<KeyWord name="boolalpha" />
@ -196,9 +186,6 @@
<KeyWord name="cerr" />
<KeyWord name="cgets" />
<KeyWord name="char" />
<KeyWord name="char16_t" />
<KeyWord name="char32_t" />
<KeyWord name="char8_t" />
<KeyWord name="char_type" />
<KeyWord name="chdir" func="yes">
<Overload retVal="int" >
@ -229,7 +216,6 @@
<Param name="void" />
</Overload>
</KeyWord>
<KeyWord name="clock_t" />
<KeyWord name="clog" />
<KeyWord name="close" func="yes">
<Overload retVal="int" >
@ -244,22 +230,14 @@
<KeyWord name="closegraph" />
<KeyWord name="clreol" />
<KeyWord name="clrscr" />
<KeyWord name="co_await" />
<KeyWord name="co_return" />
<KeyWord name="co_yield" />
<KeyWord name="compare" />
<KeyWord name="compl" />
<KeyWord name="complex" />
<KeyWord name="concept" />
<KeyWord name="conj" />
<KeyWord name="const" />
<KeyWord name="construct" />
<KeyWord name="const_cast" />
<KeyWord name="const_pointer" />
<KeyWord name="const_reference" />
<KeyWord name="consteval" />
<KeyWord name="constexpr" />
<KeyWord name="constinit" />
<KeyWord name="container" />
<KeyWord name="continue" />
<KeyWord name="copy" />
@ -306,7 +284,6 @@
<KeyWord name="deallocate" />
<KeyWord name="dec" />
<KeyWord name="decimal_point" />
<KeyWord name="decltype" />
<KeyWord name="default" />
<KeyWord name="delay" />
<KeyWord name="delete" />
@ -456,7 +433,6 @@
</KeyWord>
<KeyWord name="expl" />
<KeyWord name="explicit" />
<KeyWord name="export" />
<KeyWord name="extern" />
<KeyWord name="extern_type" />
<KeyWord name="fabs" func="yes">
@ -539,7 +515,6 @@
<KeyWord name="fillellipse" />
<KeyWord name="fillpoly" />
<KeyWord name="fill_n" />
<KeyWord name="final" />
<KeyWord name="find" />
<KeyWord name="findfirst" />
<KeyWord name="findnext" />
@ -827,26 +802,12 @@
<KeyWord name="installuserdriver" />
<KeyWord name="installuserfont" />
<KeyWord name="int" />
<KeyWord name="int16_t" />
<KeyWord name="int32_t" />
<KeyWord name="int64_t" />
<KeyWord name="int86" />
<KeyWord name="int86x" />
<KeyWord name="int8_t" />
<KeyWord name="int_fast16_t" />
<KeyWord name="int_fast32_t" />
<KeyWord name="int_fast64_t" />
<KeyWord name="int_fast8_t" />
<KeyWord name="int_least16_t" />
<KeyWord name="int_least32_t" />
<KeyWord name="int_least64_t" />
<KeyWord name="int_least8_t" />
<KeyWord name="intdos" />
<KeyWord name="intdosx" />
<KeyWord name="internal" />
<KeyWord name="intern_type" />
<KeyWord name="intmax_t" />
<KeyWord name="intptr_t" />
<KeyWord name="Intl" />
<KeyWord name="intr" />
<KeyWord name="int_type" />
@ -1127,7 +1088,6 @@
<KeyWord name="new" />
<KeyWord name="next_permutation" />
<KeyWord name="noboolalpha" />
<KeyWord name="noexcept" />
<KeyWord name="none" />
<KeyWord name="norm" />
<KeyWord name="normvideo" />
@ -1136,16 +1096,13 @@
<KeyWord name="noshowpos" />
<KeyWord name="noskipws" />
<KeyWord name="nosound" />
<KeyWord name="not" />
<KeyWord name="not1" />
<KeyWord name="not2" />
<KeyWord name="not_eof" />
<KeyWord name="not_eq" />
<KeyWord name="not_equal_to" />
<KeyWord name="nounitbuf" />
<KeyWord name="nouppercase" />
<KeyWord name="nth_element" />
<KeyWord name="nullptr" />
<KeyWord name="numeric_limits" />
<KeyWord name="oct" />
<KeyWord name="off_type" />
@ -1193,8 +1150,6 @@
<KeyWord name="operator^" />
<KeyWord name="operator^=" />
<KeyWord name="operator~" />
<KeyWord name="or" />
<KeyWord name="or_eq" />
<KeyWord name="ostream" />
<KeyWord name="ostream_type" />
<KeyWord name="ostringstream" />
@ -1207,7 +1162,6 @@
<KeyWord name="outtext" />
<KeyWord name="outtextxy" />
<KeyWord name="overflow" />
<KeyWord name="override" />
<KeyWord name="pair" />
<KeyWord name="parsfnm" />
<KeyWord name="partial_sort" />
@ -1264,7 +1218,6 @@
<KeyWord name="private" />
<KeyWord name="protected" />
<KeyWord name="ptr_fun" />
<KeyWord name="ptrdiff_t" />
<KeyWord name="pubimbue" />
<KeyWord name="public" />
<KeyWord name="pubseekoff" />
@ -1352,7 +1305,6 @@
</KeyWord>
<KeyWord name="rectangle" />
<KeyWord name="reference" />
<KeyWord name="reflexpr" />
<KeyWord name="register" />
<KeyWord name="registerbgidriver" />
<KeyWord name="registerbgifont" />
@ -1380,7 +1332,6 @@
<KeyWord name="replace_copy" />
<KeyWord name="replace_copy_if" />
<KeyWord name="replace_if" />
<KeyWord name="requires" />
<KeyWord name="reserve" />
<KeyWord name="reset" />
<KeyWord name="resetiosflag" />
@ -1535,7 +1486,6 @@
<KeyWord name="sinl" />
<KeyWord name="size" />
<KeyWord name="sizeof" />
<KeyWord name="size_t" />
<KeyWord name="size_type" />
<KeyWord name="skipws" />
<KeyWord name="sleep" func="yes">
@ -1585,7 +1535,6 @@
<Param name="..." />
</Overload>
</KeyWord>
<KeyWord name="ssize_t" />
<KeyWord name="stable_partition" />
<KeyWord name="stable_sort" />
<KeyWord name="stack" />
@ -1599,7 +1548,6 @@
<KeyWord name="state" />
<KeyWord name="state_type" />
<KeyWord name="static" />
<KeyWord name="static_assert" />
<KeyWord name="static_cast" />
<KeyWord name="stime" />
<KeyWord name="stpcpy" />
@ -1761,7 +1709,6 @@
<KeyWord name="switch" />
<KeyWord name="sync" />
<KeyWord name="sync_with_stdio" />
<KeyWord name="synchronized" />
<KeyWord name="system" func="yes">
<Overload retVal="int" >
<Param name="const char *string" />
@ -1796,7 +1743,6 @@
<KeyWord name="thousands_sep" />
<KeyWord name="thread" />
<KeyWord name="thread2" />
<KeyWord name="thread_local" />
<KeyWord name="throw" />
<KeyWord name="tie" />
<KeyWord name="time" func="yes">
@ -1804,7 +1750,6 @@
<Param name="time_t *timer" />
</Overload>
</KeyWord>
<KeyWord name="time_t" />
<KeyWord name="times" func="yes">
<Overload retVal="clock_t" >
<Param name="struct tms *buffer" />
@ -1853,20 +1798,6 @@
</Overload>
</KeyWord>
<KeyWord name="uflow" />
<KeyWord name="uint16_t" />
<KeyWord name="uint32_t" />
<KeyWord name="uint64_t" />
<KeyWord name="uint8_t" />
<KeyWord name="uint_fast16_t" />
<KeyWord name="uint_fast32_t" />
<KeyWord name="uint_fast64_t" />
<KeyWord name="uint_fast8_t" />
<KeyWord name="uint_least16_t" />
<KeyWord name="uint_least32_t" />
<KeyWord name="uint_least64_t" />
<KeyWord name="uint_least8_t" />
<KeyWord name="uintmax_t" />
<KeyWord name="uintptr_t" />
<KeyWord name="ultoa" />
<KeyWord name="umask" func="yes">
<Overload retVal="mode_t" >
@ -2005,8 +1936,6 @@
<KeyWord name="wstringbuf" />
<KeyWord name="wstringstream" />
<KeyWord name="xalloc" />
<KeyWord name="xor" />
<KeyWord name="xor_eq" />
<KeyWord name="xsgetn" />
<KeyWord name="xsputn" />
<KeyWord name="_atold" />

View File

@ -1016,7 +1016,6 @@
<KeyWord name="virtual" />
<KeyWord name="void" />
<KeyWord name="volatile" />
<KeyWord name="when" />
<KeyWord name="while" />
</AutoComplete>
</NotepadPlus>

View File

@ -22,29 +22,9 @@
<KeyWord name="@page" />
<KeyWord name="above" />
<KeyWord name="absolute" />
<KeyWord name="accent-color" />
<KeyWord name="ActiveBorder" />
<KeyWord name="ActiveCaption" />
<KeyWord name="additive-symbols" />
<KeyWord name="always" />
<KeyWord name="align-content" />
<KeyWord name="align-items" />
<KeyWord name="align-self" />
<KeyWord name="all" />
<KeyWord name="animation" />
<KeyWord name="animation-delay" />
<KeyWord name="animation-delay-end" />
<KeyWord name="animation-delay-start" />
<KeyWord name="animation-direction" />
<KeyWord name="animation-duration" />
<KeyWord name="animation-fill-mode" />
<KeyWord name="animation-iteration-count" />
<KeyWord name="animation-name" />
<KeyWord name="animation-play-state" />
<KeyWord name="animation-range" />
<KeyWord name="animation-range-end" />
<KeyWord name="animation-range-start" />
<KeyWord name="animation-timing-function" />
<KeyWord name="AppWorkspace" />
<KeyWord name="aqua" />
<KeyWord name="armenian" />
@ -53,68 +33,28 @@
<KeyWord name="avoid" />
<KeyWord name="azimuth" />
<KeyWord name="background" />
<KeyWord name="backdrop-filter" />
<KeyWord name="backface-visibility" />
<KeyWord name="background-attachment" />
<KeyWord name="background-blend-mode" />
<KeyWord name="background-clip" />
<KeyWord name="background-color" />
<KeyWord name="background-image" />
<KeyWord name="background-origin" />
<KeyWord name="background-position" />
<KeyWord name="background-position-x" />
<KeyWord name="background-position-y" />
<KeyWord name="background-repeat" />
<KeyWord name="background-size" />
<KeyWord name="baseline" />
<KeyWord name="behind" />
<KeyWord name="below" />
<KeyWord name="bidi-override" />
<KeyWord name="black" />
<KeyWord name="bleed" />
<KeyWord name="blink" />
<KeyWord name="block" />
<KeyWord name="block-size" />
<KeyWord name="blue" />
<KeyWord name="bold" />
<KeyWord name="bolder" />
<KeyWord name="border" />
<KeyWord name="border-block-end" />
<KeyWord name="border-block-end-color" />
<KeyWord name="border-block-end-style" />
<KeyWord name="border-block-end-width" />
<KeyWord name="border-block-start" />
<KeyWord name="border-block-start-color" />
<KeyWord name="border-block-start-style" />
<KeyWord name="border-block-start-width" />
<KeyWord name="border-bottom" />
<KeyWord name="border-bottom-color" />
<KeyWord name="border-bottom-left-radius" />
<KeyWord name="border-bottom-right-radius" />
<KeyWord name="border-bottom-style" />
<KeyWord name="border-bottom-width" />
<KeyWord name="border-collapse" />
<KeyWord name="border-color" />
<KeyWord name="border-end-end-radius" />
<KeyWord name="border-end-start-radius" />
<KeyWord name="border-image" />
<KeyWord name="border-image-outset" />
<KeyWord name="border-image-repeat" />
<KeyWord name="border-image-slice" />
<KeyWord name="border-image-source" />
<KeyWord name="border-image-width" />
<KeyWord name="border-inline" />
<KeyWord name="border-inline-color" />
<KeyWord name="border-inline-end" />
<KeyWord name="border-inline-end-color" />
<KeyWord name="border-inline-end-style" />
<KeyWord name="border-inline-end-width" />
<KeyWord name="border-inline-start" />
<KeyWord name="border-inline-start-color" />
<KeyWord name="border-inline-start-style" />
<KeyWord name="border-inline-start-width" />
<KeyWord name="border-inline-style" />
<KeyWord name="border-inline-width" />
<KeyWord name="border-left" />
<KeyWord name="border-left-color" />
<KeyWord name="border-left-style" />
@ -124,24 +64,14 @@
<KeyWord name="border-right-style" />
<KeyWord name="border-right-width" />
<KeyWord name="border-spacing" />
<KeyWord name="border-start-end-radius" />
<KeyWord name="border-start-start-radius" />
<KeyWord name="border-style" />
<KeyWord name="border-top" />
<KeyWord name="border-top-color" />
<KeyWord name="border-top-left-radius" />
<KeyWord name="border-top-right-radius" />
<KeyWord name="border-top-style" />
<KeyWord name="border-top-width" />
<KeyWord name="border-width" />
<KeyWord name="both" />
<KeyWord name="bottom" />
<KeyWord name="box-decoration-break" />
<KeyWord name="box-shadow" />
<KeyWord name="box-sizing" />
<KeyWord name="break-after" />
<KeyWord name="break-before" />
<KeyWord name="break-inside" />
<KeyWord name="ButtonFace" />
<KeyWord name="ButtonHighlight" />
<KeyWord name="ButtonShadow" />
@ -149,7 +79,6 @@
<KeyWord name="capitalize" />
<KeyWord name="caption" />
<KeyWord name="caption-side" />
<KeyWord name="caret-color" />
<KeyWord name="CaptionText" />
<KeyWord name="center" />
<KeyWord name="center-left" />
@ -158,29 +87,10 @@
<KeyWord name="cjk-ideographic" />
<KeyWord name="clear" />
<KeyWord name="clip" />
<KeyWord name="clip-path" />
<KeyWord name="clip-rule" />
<KeyWord name="close-quote" />
<KeyWord name="code" />
<KeyWord name="collapse" />
<KeyWord name="color" />
<KeyWord name="color-adjust" />
<KeyWord name="color-interpolation-filters" />
<KeyWord name="color-scheme" />
<KeyWord name="column-count" />
<KeyWord name="column-fill" />
<KeyWord name="column-gap" />
<KeyWord name="column-rule" />
<KeyWord name="column-rule-color" />
<KeyWord name="column-rule-style" />
<KeyWord name="column-rule-width" />
<KeyWord name="column-span" />
<KeyWord name="column-width" />
<KeyWord name="columns" />
<KeyWord name="contain" />
<KeyWord name="container" />
<KeyWord name="container-name" />
<KeyWord name="container-type" />
<KeyWord name="compact" />
<KeyWord name="condensed" />
<KeyWord name="content" />
@ -207,80 +117,30 @@
<KeyWord name="em" />
<KeyWord name="embed" />
<KeyWord name="empty-cells" />
<KeyWord name="enable-background" />
<KeyWord name="ex" />
<KeyWord name="expanded" />
<KeyWord name="extra-condensed" />
<KeyWord name="extra-expanded" />
<KeyWord name="fallback" />
<KeyWord name="far-left" />
<KeyWord name="far-right" />
<KeyWord name="fast" />
<KeyWord name="faster" />
<KeyWord name="fill" />
<KeyWord name="fill-opacity" />
<KeyWord name="fill-rule" />
<KeyWord name="filter" />
<KeyWord name="fixed" />
<KeyWord name="flex" />
<KeyWord name="flex-basis" />
<KeyWord name="flex-direction" />
<KeyWord name="flex-flow" />
<KeyWord name="flex-grow" />
<KeyWord name="flex-shrink" />
<KeyWord name="flex-wrap" />
<KeyWord name="float" />
<KeyWord name="flood-color" />
<KeyWord name="flood-opacity" />
<KeyWord name="font" />
<KeyWord name="font-display" />
<KeyWord name="font-family" />
<KeyWord name="font-feature-settings" />
<KeyWord name="font-kerning" />
<KeyWord name="font-language-override" />
<KeyWord name="font-optical-sizing" />
<KeyWord name="font-size" />
<KeyWord name="font-size-adjust" />
<KeyWord name="font-stretch" />
<KeyWord name="font-style" />
<KeyWord name="font-synthesis" />
<KeyWord name="font-variant" />
<KeyWord name="font-variant-alternates" />
<KeyWord name="font-variant-caps" />
<KeyWord name="font-variant-east-asian" />
<KeyWord name="font-variant-ligatures" />
<KeyWord name="font-variant-numeric" />
<KeyWord name="font-variant-position" />
<KeyWord name="font-variation-settings" />
<KeyWord name="font-weight" />
<KeyWord name="fuchsia" />
<KeyWord name="gap" />
<KeyWord name="georgian" />
<KeyWord name="grad" />
<KeyWord name="gray" />
<KeyWord name="GrayText" />
<KeyWord name="green" />
<KeyWord name="glyph-orientation-horizontal" />
<KeyWord name="glyph-orientation-vertical" />
<KeyWord name="grid" />
<KeyWord name="grid-area" />
<KeyWord name="grid-auto-columns" />
<KeyWord name="grid-auto-flow" />
<KeyWord name="grid-auto-rows" />
<KeyWord name="grid-column" />
<KeyWord name="grid-column-end" />
<KeyWord name="grid-column-gap" />
<KeyWord name="grid-column-start" />
<KeyWord name="grid-gap" />
<KeyWord name="grid-row" />
<KeyWord name="grid-row-end" />
<KeyWord name="grid-row-gap" />
<KeyWord name="grid-row-start" />
<KeyWord name="grid-template" />
<KeyWord name="grid-template-areas" />
<KeyWord name="grid-template-columns" />
<KeyWord name="grid-template-rows" />
<KeyWord name="hanging-punctuation" />
<KeyWord name="hebrew" />
<KeyWord name="height" />
<KeyWord name="help" />
@ -292,7 +152,6 @@
<KeyWord name="HighlightText" />
<KeyWord name="hiragana" />
<KeyWord name="hiragana-iroha" />
<KeyWord name="hyphens" />
<KeyWord name="hz" />
<KeyWord name="icon" />
<KeyWord name="InactiveBorder" />
@ -500,4 +359,4 @@
<KeyWord name="yellow" />
<KeyWord name="z-index" />
</AutoComplete>
</NotepadPlus>
</NotepadPlus>

File diff suppressed because it is too large Load Diff

View File

@ -1,145 +0,0 @@
<NotepadPlus>
<AutoComplete language="Go">
<KeyWord name="_" />
<KeyWord name="false" />
<KeyWord name="iota" />
<KeyWord name="nil" />
<KeyWord name="true" />
<KeyWord name="break" />
<KeyWord name="case" />
<KeyWord name="continue" />
<KeyWord name="default" />
<KeyWord name="defer" />
<KeyWord name="else" />
<KeyWord name="fallthrough" />
<KeyWord name="for" />
<KeyWord name="go" />
<KeyWord name="goto" />
<KeyWord name="if" />
<KeyWord name="import" />
<KeyWord name="range" />
<KeyWord name="return" />
<KeyWord name="select" />
<KeyWord name="switch" />
<KeyWord name="append" func="yes">
<Overload retVal="[]Type" >
<Param name="slice []Type" />
<Param name="elems ...Type" />
</Overload>
</KeyWord>
<KeyWord name="cap" func="yes">
<Overload retVal="int" >
<Param name="v Type" />
</Overload>
</KeyWord>
<KeyWord name="clear" func="yes">
<Overload retVal="~[]Type" >
<Param name="t T" />
</Overload>
</KeyWord>
<KeyWord name="close" func="yes">
<Overload retVal="" >
<Param name="c chan&lt;- Type" />
</Overload>
</KeyWord>
<KeyWord name="complex" func="yes">
<Overload retVal="ComplexType" >
<Param name="r" />
<Param name="i FloatType" />
</Overload>
</KeyWord>
<KeyWord name="copy" func="yes">
<Overload retVal="int" >
<Param name="dst" />
<Param name="src []Type" />
</Overload>
</KeyWord>
<KeyWord name="delete" func="yes">
<Overload retVal="" >
<Param name="m map[Type]Type1" />
<Param name="key Type" />
</Overload>
</KeyWord>
<KeyWord name="imag" func="yes">
<Overload retVal="FloatType" >
<Param name="c ComplexType" />
</Overload>
</KeyWord>
<KeyWord name="len" func="yes">
<Overload retVal="int" >
<Param name="v Type" />
</Overload>
</KeyWord>
<KeyWord name="make" func="yes">
<Overload retVal="Type" >
<Param name="Type" />
<Param name="size IntegerType" />
</Overload>
</KeyWord>
<KeyWord name="new" func="yes">
<Overload retVal="*Type" >
<Param name="Type" />
</Overload>
</KeyWord>
<KeyWord name="panic" func="yes">
<Overload retVal="" >
<Param name="v interface{}" />
</Overload>
</KeyWord>
<KeyWord name="print" func="yes">
<Overload retVal="" >
<Param name="args ...Type" />
</Overload>
</KeyWord>
<KeyWord name="println" func="yes">
<Overload retVal="" >
<Param name="args ...Type" />
</Overload>
</KeyWord>
<KeyWord name="real" func="yes">
<Overload retVal="FloatType" >
<Param name="c ComplexType" />
</Overload>
</KeyWord>
<KeyWord name="recover" func="yes">
<Overload retVal="interface{}" >
</Overload>
</KeyWord>
<KeyWord name="ComplexType" />
<KeyWord name="FloatType" />
<KeyWord name="IntegerType" />
<KeyWord name="Type" />
<KeyWord name="Type1" />
<KeyWord name="any" />
<KeyWord name="bool" />
<KeyWord name="byte" />
<KeyWord name="comparable" />
<KeyWord name="complex128" />
<KeyWord name="complex64" />
<KeyWord name="error" />
<KeyWord name="float32" />
<KeyWord name="float64" />
<KeyWord name="int" />
<KeyWord name="int16" />
<KeyWord name="int32" />
<KeyWord name="int64" />
<KeyWord name="int8" />
<KeyWord name="rune" />
<KeyWord name="string" />
<KeyWord name="uint" />
<KeyWord name="uint16" />
<KeyWord name="uint32" />
<KeyWord name="uint64" />
<KeyWord name="uint8" />
<KeyWord name="uintptr" />
<KeyWord name="chan" />
<KeyWord name="const" />
<KeyWord name="func" />
<KeyWord name="interface" />
<KeyWord name="map" />
<KeyWord name="package" />
<KeyWord name="struct" />
<KeyWord name="type" />
<KeyWord name="var" />
</AutoComplete>
</NotepadPlus>

View File

@ -310,7 +310,6 @@
<KeyWord name="min" />
<KeyWord name="min-height" />
<KeyWord name="min-width" />
<KeyWord name="minlength" />
<KeyWord name="mix" />
<KeyWord name="move" />
<KeyWord name="ms" />
@ -538,7 +537,6 @@
<KeyWord name="src" />
<KeyWord name="srcdoc" />
<KeyWord name="srclang" />
<KeyWord name="srcset" />
<KeyWord name="start" />
<KeyWord name="static" />
<KeyWord name="status-bar" />

View File

@ -3,23 +3,16 @@
<AutoComplete>
<KeyWord name="above" />
<KeyWord name="abs" />
<KeyWord name="AbortController" />
<KeyWord name="AbortSignal" />
<KeyWord name="AbstractRange" />
<KeyWord name="acos" />
<KeyWord name="action" />
<KeyWord name="addEventListener" />
<KeyWord name="afterbegin" />
<KeyWord name="afterend" />
<KeyWord name="alert" />
<KeyWord name="align" />
<KeyWord name="aLinkcolor" />
<KeyWord name="all" />
<KeyWord name="allSettled" />
<KeyWord name="Anchor" />
<KeyWord name="anchor" />
<KeyWord name="anchors" />
<KeyWord name="any" />
<KeyWord name="appCodeName" />
<KeyWord name="appCore" />
<KeyWord name="appendChild" />
@ -38,31 +31,22 @@
<KeyWord name="arity" />
<KeyWord name="Array" />
<KeyWord name="asin" />
<KeyWord name="async" />
<KeyWord name="at" />
<KeyWord name="atan" />
<KeyWord name="atan2" />
<KeyWord name="atob" />
<KeyWord name="Atomics" />
<KeyWord name="attachEvent" />
<KeyWord name="Attr" />
<KeyWord name="attributes" />
<KeyWord name="availHeight" />
<KeyWord name="availLeft" />
<KeyWord name="availTop" />
<KeyWord name="availWidth" />
<KeyWord name="await" />
<KeyWord name="back" />
<KeyWord name="background" />
<KeyWord name="backgroundColor" />
<KeyWord name="backgroundImage" />
<KeyWord name="beforebegin" />
<KeyWord name="beforeend" />
<KeyWord name="below" />
<KeyWord name="bgColor" />
<KeyWord name="big" />
<KeyWord name="BigInt" />
<KeyWord name="bind" />
<KeyWord name="blink" />
<KeyWord name="blob" />
<KeyWord name="blur" />
@ -88,11 +72,8 @@
<KeyWord name="captureEvents" />
<KeyWord name="case" />
<KeyWord name="catch" />
<KeyWord name="cbrt" />
<KeyWord name="CDATASection" />
<KeyWord name="ceil" />
<KeyWord name="char" />
<KeyWord name="CharacterData" />
<KeyWord name="characterSet" />
<KeyWord name="charAt" />
<KeyWord name="charCodeAt" />
@ -111,17 +92,14 @@
<KeyWord name="clientInformation" />
<KeyWord name="clip" />
<KeyWord name="clipboardData" />
<KeyWord name="cloneNode" />
<KeyWord name="close" />
<KeyWord name="closed" />
<KeyWord name="codePointAt" />
<KeyWord name="colorDepth" />
<KeyWord name="Comment" />
<KeyWord name="compile" />
<KeyWord name="complete" />
<KeyWord name="components" />
<KeyWord name="concat" />
<KeyWord name="configurable" />
<KeyWord name="confirm" />
<KeyWord name="console" />
<KeyWord name="const" />
@ -132,7 +110,6 @@
<KeyWord name="controllers" />
<KeyWord name="cookie" />
<KeyWord name="cookieEnabled" />
<KeyWord name="copyWithin" />
<KeyWord name="cos" />
<KeyWord name="cpuClass" />
<KeyWord name="createDocumentFragment" />
@ -145,7 +122,6 @@
<KeyWord name="credentials" />
<KeyWord name="crypto" />
<KeyWord name="current" />
<KeyWord name="CustomEvent" />
<KeyWord name="data" />
<KeyWord name="dataset" />
<KeyWord name="Date" />
@ -156,10 +132,7 @@
<KeyWord name="defaultStatus" />
<KeyWord name="defaultValue" />
<KeyWord name="defaultView" />
<KeyWord name="defineProperty" />
<KeyWord name="defineProperties" />
<KeyWord name="delete" />
<KeyWord name="depth" />
<KeyWord name="description" />
<KeyWord name="detachEvent" />
<KeyWord name="dialogArguments" />
@ -173,25 +146,17 @@
<KeyWord name="disconnect" />
<KeyWord name="dispatchEvent" />
<KeyWord name="display" />
<KeyWord name="DisplayNames" />
<KeyWord name="do" />
<KeyWord name="doctype" />
<KeyWord name="document" />
<KeyWord name="Document" />
<KeyWord name="documentElement" />
<KeyWord name="DocumentFragment" />
<KeyWord name="DocumentType" />
<KeyWord name="domain" />
<KeyWord name="DOMContentLoaded" />
<KeyWord name="DOMImplementation" />
<KeyWord name="DOMParser" />
<KeyWord name="DOMTokenList" />
<KeyWord name="double" />
<KeyWord name="dump" />
<KeyWord name="E" />
<KeyWord name="EPSILON" />
<KeyWord name="elementFromPoint" />
<KeyWord name="Element" />
<KeyWord name="elements" />
<KeyWord name="else" />
<KeyWord name="embeds" />
@ -200,16 +165,11 @@
<KeyWord name="encodeURI" />
<KeyWord name="encodeURIComponent" />
<KeyWord name="encoding" />
<KeyWord name="endsWith" />
<KeyWord name="enum" />
<KeyWord name="enumerable" />
<KeyWord name="entries" />
<KeyWord name="escape" />
<KeyWord name="eval" />
<KeyWord name="event" />
<KeyWord name="Event" />
<KeyWord name="EventTarget" />
<KeyWord name="every" />
<KeyWord name="exec" />
<KeyWord name="execCommand" />
<KeyWord name="execScript" />
@ -227,19 +187,12 @@
<KeyWord name="fileSize" />
<KeyWord name="fileUpdatedDate" />
<KeyWord name="FileUpload" />
<KeyWord name="filter" />
<KeyWord name="final" />
<KeyWord name="FinalizationRegistry" />
<KeyWord name="finally" />
<KeyWord name="find" />
<KeyWord name="findAll" />
<KeyWord name="findIndex" />
<KeyWord name="findLast" />
<KeyWord name="findLastIndex" />
<KeyWord name="firstChild" />
<KeyWord name="fixed" />
<KeyWord name="flat" />
<KeyWord name="flatMap" />
<KeyWord name="float" />
<KeyWord name="floor" />
<KeyWord name="focus" />
@ -258,13 +211,10 @@
<KeyWord name="Frame" />
<KeyWord name="frameElement" />
<KeyWord name="frames" />
<KeyWord name="freeze" />
<KeyWord name="from" />
<KeyWord name="fromCharCode" />
<KeyWord name="fromEntries" />
<KeyWord name="Function" />
<KeyWord name="function" />
<KeyWord name="get" />
<KeyWord name="getAllResponseHeaders" />
<KeyWord name="getAttention" />
<KeyWord name="getAttribute" />
@ -281,15 +231,11 @@
<KeyWord name="getElementsByName" />
<KeyWord name="getElementsByTagName" />
<KeyWord name="getElementsByTagNameNS" />
<KeyWord name="getNamedItem" />
<KeyWord name="getFullYear" />
<KeyWord name="getHours" />
<KeyWord name="getMilliseconds" />
<KeyWord name="getMinutes" />
<KeyWord name="getMonth" />
<KeyWord name="getOwnPropertyDescriptor" />
<KeyWord name="getOwnPropertyNames" />
<KeyWord name="getPrototypeOf" />
<KeyWord name="getSeconds" />
<KeyWord name="getSelection" />
<KeyWord name="getResponseHeader" />
@ -305,7 +251,6 @@
<KeyWord name="getUTCSeconds" />
<KeyWord name="getYear" />
<KeyWord name="global" />
<KeyWord name="globalThis" />
<KeyWord name="go" />
<KeyWord name="goto" />
<KeyWord name="handleEvent" />
@ -313,7 +258,6 @@
<KeyWord name="hasAttributeNS" />
<KeyWord name="hasAttributes" />
<KeyWord name="hasFocus" />
<KeyWord name="hasOwn" />
<KeyWord name="hasOwnProperty" />
<KeyWord name="hash" />
<KeyWord name="height" />
@ -325,7 +269,6 @@
<KeyWord name="hostname" />
<KeyWord name="href" />
<KeyWord name="hspace" />
<KeyWord name="HTMLCollection" />
<KeyWord name="ids" />
<KeyWord name="if" />
<KeyWord name="ignoreCase" />
@ -344,24 +287,14 @@
<KeyWord name="innerText" />
<KeyWord name="innerWidth" />
<KeyWord name="input" />
<KeyWord name="insertAdjacentElement" />
<KeyWord name="insertAdjacentHTML" />
<KeyWord name="insertAdjacentText" />
<KeyWord name="insertBefore" />
<KeyWord name="instanceof" />
<KeyWord name="int" />
<KeyWord name="interface" />
<KeyWord name="IntersectionObserver" />
<KeyWord name="isArray" />
<KeyWord name="isExtensible" />
<KeyWord name="isFinite" />
<KeyWord name="isFrozen" />
<KeyWord name="isInteger" />
<KeyWord name="isNaN" />
<KeyWord name="isSafeInteger" />
<KeyWord name="isSealed" />
<KeyWord name="italics" />
<KeyWord name="item" />
<KeyWord name="java" />
<KeyWord name="JavaArray" />
<KeyWord name="JavaClass" />
@ -369,7 +302,6 @@
<KeyWord name="JavaObject" />
<KeyWord name="JavaPackage" />
<KeyWord name="join" />
<KeyWord name="JSON" />
<KeyWord name="keys" />
<KeyWord name="language" />
<KeyWord name="lastChild" />
@ -392,7 +324,6 @@
<KeyWord name="Link" />
<KeyWord name="linkColor" />
<KeyWord name="links" />
<KeyWord name="ListFormat" />
<KeyWord name="listStyleType" />
<KeyWord name="LN10" />
<KeyWord name="LN2" />
@ -403,25 +334,20 @@
<KeyWord name="location" />
<KeyWord name="locationbar" />
<KeyWord name="log" />
<KeyWord name="log2" />
<KeyWord name="log10" />
<KeyWord name="LOG10E" />
<KeyWord name="LOG2E" />
<KeyWord name="long" />
<KeyWord name="lowsrc" />
<KeyWord name="map" />
<KeyWord name="marginBottom" />
<KeyWord name="marginLeft" />
<KeyWord name="marginRight" />
<KeyWord name="margins" />
<KeyWord name="marginTop" />
<KeyWord name="match" />
<KeyWord name="matchAll" />
<KeyWord name="matches" />
<KeyWord name="matchesSelector" />
<KeyWord name="Math" />
<KeyWord name="max" />
<KeyWord name="MAX_SAFE_INTEGER" />
<KeyWord name="MAX_VALUE" />
<KeyWord name="media" />
<KeyWord name="menubar" />
@ -430,7 +356,6 @@
<KeyWord name="MimeType" />
<KeyWord name="mimeTypes" />
<KeyWord name="min" />
<KeyWord name="MIN_SAFE_INTEGER" />
<KeyWord name="MIN_VALUE" />
<KeyWord name="moveAbove" />
<KeyWord name="moveBelow" />
@ -438,10 +363,7 @@
<KeyWord name="moveTo" />
<KeyWord name="moveToAbsolute" />
<KeyWord name="multiline" />
<KeyWord name="MutationObserver" />
<KeyWord name="MutationRecord" />
<KeyWord name="name" />
<KeyWord name="NamedNodeMap" />
<KeyWord name="nameProp" />
<KeyWord name="namespaces" />
<KeyWord name="namespaceURI" />
@ -454,18 +376,11 @@
<KeyWord name="new" />
<KeyWord name="next" />
<KeyWord name="nextSibling" />
<KeyWord name="Node" />
<KeyWord name="NodeFilter" />
<KeyWord name="NodeIterator" />
<KeyWord name="NodeList" />
<KeyWord name="nodeName" />
<KeyWord name="nodeType" />
<KeyWord name="nodeValue" />
<KeyWord name="notify" />
<KeyWord name="now" />
<KeyWord name="null" />
<KeyWord name="Number" />
<KeyWord name="NumberFormat" />
<KeyWord name="Object" />
<KeyWord name="observe" />
<KeyWord name="of" />
@ -555,8 +470,6 @@
<KeyWord name="paddingRight" />
<KeyWord name="paddings" />
<KeyWord name="paddingTop" />
<KeyWord name="padEnd" />
<KeyWord name="padStart" />
<KeyWord name="pageX" />
<KeyWord name="pageXOffset" />
<KeyWord name="pageY" />
@ -581,7 +494,6 @@
<KeyWord name="Plugin" />
<KeyWord name="plugins" />
<KeyWord name="plugins.refresh" />
<KeyWord name="PluralRules" />
<KeyWord name="pop" />
<KeyWord name="port" />
<KeyWord name="POSITIVE_INFINITY" />
@ -589,15 +501,12 @@
<KeyWord name="preference" />
<KeyWord name="prefix" />
<KeyWord name="preventDefault" />
<KeyWord name="preventExtensions" />
<KeyWord name="previous" />
<KeyWord name="previousSibling" />
<KeyWord name="print" />
<KeyWord name="private" />
<KeyWord name="ProcessingInstruction" />
<KeyWord name="product" />
<KeyWord name="productSub" />
<KeyWord name="Promise" />
<KeyWord name="prompt" />
<KeyWord name="prompter" />
<KeyWord name="protected" />
@ -611,18 +520,12 @@
<KeyWord name="queryCommandValue" />
<KeyWord name="querySelector" />
<KeyWord name="querySelectorAll" />
<KeyWord name="race" />
<KeyWord name="Radio" />
<KeyWord name="random" />
<KeyWord name="Range" />
<KeyWord name="readyState" />
<KeyWord name="recalc" />
<KeyWord name="reduce" />
<KeyWord name="reduceRight" />
<KeyWord name="reject" />
<KeyWord name="referrer" />
<KeyWord name="RegExp" />
<KeyWord name="RelativeTimeFormat" />
<KeyWord name="releaseCapture" />
<KeyWord name="releaseEvents" />
<KeyWord name="reload" />
@ -631,14 +534,11 @@
<KeyWord name="removeAttributeNode" />
<KeyWord name="removeChild" />
<KeyWord name="removeEventListener" />
<KeyWord name="removeNamedItem" />
<KeyWord name="replace" />
<KeyWord name="replaceAll" />
<KeyWord name="Reset" />
<KeyWord name="reset" />
<KeyWord name="resizeBy" />
<KeyWord name="resizeTo" />
<KeyWord name="resolve" />
<KeyWord name="response" />
<KeyWord name="responseText" />
<KeyWord name="responseType" />
@ -672,7 +572,6 @@
<KeyWord name="scrollWidth" />
<KeyWord name="scrollX" />
<KeyWord name="scrollY" />
<KeyWord name="seal" />
<KeyWord name="search" />
<KeyWord name="security" />
<KeyWord name="securityPolicy" />
@ -683,7 +582,6 @@
<KeyWord name="selectedIndex" />
<KeyWord name="selection" />
<KeyWord name="self" />
<KeyWord name="set" />
<KeyWord name="Set" />
<KeyWord name="setActive" />
<KeyWord name="setAttribute" />
@ -699,7 +597,6 @@
<KeyWord name="setMilliseconds" />
<KeyWord name="setMinutes" />
<KeyWord name="setMonth" />
<KeyWord name="setNamedItem" />
<KeyWord name="setRequestHeader" />
<KeyWord name="setResizable" />
<KeyWord name="setSeconds" />
@ -714,7 +611,6 @@
<KeyWord name="setUTCSeconds" />
<KeyWord name="setYear" />
<KeyWord name="setZOptions" />
<KeyWord name="ShadowRoot" />
<KeyWord name="shift" />
<KeyWord name="short" />
<KeyWord name="showHelp" />
@ -723,30 +619,24 @@
<KeyWord name="siblingAbove" />
<KeyWord name="siblingBelow" />
<KeyWord name="sidebar" />
<KeyWord name="sign" />
<KeyWord name="signText" />
<KeyWord name="sin" />
<KeyWord name="sizeToContent" />
<KeyWord name="slice" />
<KeyWord name="small" />
<KeyWord name="some" />
<KeyWord name="sort" />
<KeyWord name="source" />
<KeyWord name="specified" />
<KeyWord name="splice" />
<KeyWord name="split" />
<KeyWord name="sqrt" />
<KeyWord name="SQRT1_2" />
<KeyWord name="SQRT2" />
<KeyWord name="src" />
<KeyWord name="startsWith" />
<KeyWord name="static" />
<KeyWord name="StaticRange" />
<KeyWord name="status" />
<KeyWord name="statusbar" />
<KeyWord name="stop" />
<KeyWord name="strike" />
<KeyWord name="stringify" />
<KeyWord name="String" />
<KeyWord name="Style" />
<KeyWord name="styleSheets" />
@ -760,7 +650,6 @@
<KeyWord name="sup" />
<KeyWord name="super" />
<KeyWord name="switch" />
<KeyWord name="Symbol" />
<KeyWord name="synchronized" />
<KeyWord name="systemLanguage" />
<KeyWord name="tags" />
@ -787,30 +676,17 @@
<KeyWord name="timeEnd" />
<KeyWord name="title" />
<KeyWord name="toGMTString" />
<KeyWord name="toLocaleDateString" />
<KeyWord name="toLocaleString" />
<KeyWord name="toLocaleTimeString" />
<KeyWord name="toLowerCase" />
<KeyWord name="toolbar" />
<KeyWord name="top" />
<KeyWord name="total" />
<KeyWord name="toTimeString" />
<KeyWord name="toISOString" />
<KeyWord name="toJSON" />
<KeyWord name="toReversed" />
<KeyWord name="toSorted" />
<KeyWord name="toSource" />
<KeyWord name="toSpliced" />
<KeyWord name="toString" />
<KeyWord name="toUpperCase" />
<KeyWord name="toUTCString" />
<KeyWord name="transient" />
<KeyWord name="TreeWalker" />
<KeyWord name="trim" />
<KeyWord name="trimEnd" />
<KeyWord name="trimStart" />
<KeyWord name="true" />
<KeyWord name="trunc" />
<KeyWord name="try" />
<KeyWord name="type" />
<KeyWord name="typeof" />
@ -831,7 +707,6 @@
<KeyWord name="userProfile" />
<KeyWord name="UTC" />
<KeyWord name="value" />
<KeyWord name="values" />
<KeyWord name="valueOf" />
<KeyWord name="var" />
<KeyWord name="vendor" />
@ -841,29 +716,18 @@
<KeyWord name="void" />
<KeyWord name="volatile" />
<KeyWord name="vspace" />
<KeyWord name="wait" />
<KeyWord name="waitAsync" />
<KeyWord name="watch" />
<KeyWord name="WeakMap" />
<KeyWord name="WeakRef" />
<KeyWord name="WeakSets" />
<KeyWord name="while" />
<KeyWord name="whiteSpace" />
<KeyWord name="width" />
<KeyWord name="window" />
<KeyWord name="Window" />
<KeyWord name="with" />
<KeyWord name="writable" />
<KeyWord name="write" />
<KeyWord name="writeln" />
<KeyWord name="x" />
<KeyWord name="XMLDocument" />
<KeyWord name="XMLHttpRequest" />
<KeyWord name="XPathEvaluator" />
<KeyWord name="XPathExpression" />
<KeyWord name="XPathResult" />
<KeyWord name="XSLDocument" />
<KeyWord name="XSLTProcessor" />
<KeyWord name="y" />
<KeyWord name="zIndex" />
<KeyWord name="_content" />

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More