mirror of
https://github.com/notepad-plus-plus/notepad-plus-plus.git
synced 2025-09-04 16:48:25 +02:00
Compare commits
No commits in common. "master" and "v8.1.1" have entirely different histories.
79
.github/ISSUE_TEMPLATE/1-bug.yml
vendored
79
.github/ISSUE_TEMPLATE/1-bug.yml
vendored
@ -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
|
52
.github/ISSUE_TEMPLATE/2-feature-request.yml
vendored
52
.github/ISSUE_TEMPLATE/2-feature-request.yml
vendored
@ -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
|
1
.github/ISSUE_TEMPLATE/config.yml
vendored
1
.github/ISSUE_TEMPLATE/config.yml
vendored
@ -1 +0,0 @@
|
||||
blank_issues_enabled: true
|
13
.github/dependabot.yml
vendored
13
.github/dependabot.yml
vendored
@ -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"
|
387
.github/workflows/CI_build.yml
vendored
387
.github/workflows/CI_build.yml
vendored
@ -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
|
69
.github/workflows/release-notifier.yml
vendored
69
.github/workflows/release-notifier.yml
vendored
@ -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
31
.gitignore
vendored
@ -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
|
||||
|
78
BUILD.md
78
BUILD.md
@ -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.
|
||||
|
391
CONTRIBUTING.md
391
CONTRIBUTING.md
@ -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
|
||||

|
||||
|
||||
|
||||
|
||||
#### 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.
|
||||
|
@ -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
60
LICENSE
@ -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>.
|
||||
|
@ -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"}
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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"}
|
@ -0,0 +1 @@
|
||||
{"leaves":["setenv","action_needed","canonicalize_path","make_module","db2_name","versioned_copy"],"root":"unitTest"}
|
@ -124,13 +124,6 @@ static void test()
|
||||
assert(fabsf(test_quat.q3 - quat.q3) < .01);
|
||||
}
|
||||
|
||||
/*
|
||||
void commented_func()
|
||||
{
|
||||
return;
|
||||
}
|
||||
*/
|
||||
|
||||
int main()
|
||||
{
|
||||
test();
|
||||
|
@ -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 //
|
||||
//------------------------------//
|
||||
|
@ -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)
|
@ -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"}
|
@ -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
|
||||
|
@ -1 +0,0 @@
|
||||
{"leaves":["p_CheckPic","p_ChooseFX","p_TOFunc","p_SyncedRestart","p_MainLoop","p_Start16FX","p_Init","p_EventFunc"],"root":"unitTest"}
|
@ -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.";
|
||||
|
@ -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"}
|
@ -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}
|
@ -1 +0,0 @@
|
||||
{"leaves":["\\begin{document}","\\section*{Notes for My Paper}","\\subsection*{How to handle topicalization}","\\begin{tabular}[t]{cccc}","\\subsection*{Mood}"],"root":"unitTest"}
|
@ -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"
|
@ -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
|
@ -1 +0,0 @@
|
||||
{"leaves":["createDir"],"nodes":[{"leaves":["packet","draw"],"name":"tap"}],"root":"unitTest"}
|
@ -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
|
||||
|
@ -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.
|
@ -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"}
|
@ -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';
|
||||
}
|
||||
|
@ -14,13 +14,6 @@ function Clear-Host
|
||||
$host.PrivateData.ClearHost()
|
||||
}
|
||||
|
||||
<#
|
||||
function Commented-Func
|
||||
{
|
||||
return $s
|
||||
}
|
||||
#>
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Simple path completion function for PowerConsole.
|
||||
|
@ -1,11 +0,0 @@
|
||||
def func1(a,b):
|
||||
pass
|
||||
|
||||
def func2(a,b):
|
||||
pass
|
||||
|
||||
def func3(a,b):
|
||||
pass
|
||||
|
||||
def func4(a,b):
|
||||
pass
|
@ -1 +0,0 @@
|
||||
{"leaves":["func1(a,b)","func2(a,b)","func3(a,b)","func4(a,b)"],"root":"unitTest"}
|
@ -1 +0,0 @@
|
||||
{"leaves":["func1(a,b)","func2(a,b)","func3(a,b)","func4(a,b)"],"root":"unitTest"}
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -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"}
|
@ -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";
|
||||
}
|
@ -1 +0,0 @@
|
||||
{"leaves":["MakeTag","PackageName","SubName","VarNames","functionNoParentheses"],"root":"unitTest"}
|
@ -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 }
|
||||
|
||||
|
@ -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;
|
@ -1 +0,0 @@
|
||||
{"leaves":["%macro printz","function SharedBday"],"root":"unitTest"}
|
@ -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;
|
||||
/
|
||||
|
@ -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"}
|
@ -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;
|
||||
*/
|
||||
/
|
@ -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"}
|
@ -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}
|
@ -1 +0,0 @@
|
||||
{"leaves":["\\begin{document}","\\section*{Notes for My Paper}","\\subsection*{How to handle topicalization}","\\begin{tabular}[t]{cccc}","\\subsection*{Mood}"],"root":"unitTest"}
|
@ -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"
|
||||
]
|
@ -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"}
|
@ -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, '&')
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>')
|
||||
.replace(/"/g, '"')
|
||||
.replace(/'/g, ''');
|
||||
}
|
||||
|
||||
// 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;
|
||||
|
@ -1 +0,0 @@
|
||||
{"leaves":["extractKeywords","convertBasicMarkup","function","function","function","function","defineModels","slugGenerator","slugGenerator","validatePresenceOf","function","function","function","function","function","function"],"root":"unitTest"}
|
@ -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
|
@ -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"}
|
@ -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:
|
||||
|
||||
|
||||

|
||||
|
||||
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!
|
@ -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"}
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
@ -1 +0,0 @@
|
||||
{"leaves":["Main"],"root":"unitTest"}
|
@ -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" />
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
@ -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>
|
@ -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>
|
@ -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>
|
@ -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>
|
@ -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>
|
@ -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>
|
@ -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>
|
@ -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>
|
@ -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>
|
@ -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>
|
@ -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()
|
||||
|
BIN
PowerEditor/bin/NppShell.dll
Normal file
BIN
PowerEditor/bin/NppShell.dll
Normal file
Binary file not shown.
BIN
PowerEditor/bin/NppShell64.dll
Normal file
BIN
PowerEditor/bin/NppShell64.dll
Normal file
Binary file not shown.
@ -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
|
||||
|
65
PowerEditor/bin/userDefineLang.xml
Normal file
65
PowerEditor/bin/userDefineLang.xml
Normal 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>
|
@ -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>
|
||||
|
@ -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<!-- 04--></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">../ (../ 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>
|
@ -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
|
52
PowerEditor/gcc/include/various.h
Normal file
52
PowerEditor/gcc/include/various.h
Normal 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
|
@ -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
|
||||
|
@ -1,3 +0,0 @@
|
||||
#include <windows.h>
|
||||
|
||||
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "../src/notepad++.exe.manifest"
|
24
PowerEditor/gcc/readme.txt
Normal file
24
PowerEditor/gcc/readme.txt
Normal 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
|
30
PowerEditor/gcc/resources.rc
Normal file
30
PowerEditor/gcc/resources.rc
Normal 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"
|
@ -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" />
|
||||
|
@ -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 <number>">
|
||||
|
@ -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>
|
@ -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" />
|
||||
|
@ -1016,7 +1016,6 @@
|
||||
<KeyWord name="virtual" />
|
||||
<KeyWord name="void" />
|
||||
<KeyWord name="volatile" />
|
||||
<KeyWord name="when" />
|
||||
<KeyWord name="while" />
|
||||
</AutoComplete>
|
||||
</NotepadPlus>
|
||||
|
@ -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
@ -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<- 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>
|
@ -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" />
|
||||
|
@ -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
Loading…
x
Reference in New Issue
Block a user