IncludeCPP 3.7.6__tar.gz → 3.7.11__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. {includecpp-3.7.6 → includecpp-3.7.11}/IncludeCPP.egg-info/PKG-INFO +1 -1
  2. {includecpp-3.7.6 → includecpp-3.7.11}/IncludeCPP.egg-info/SOURCES.txt +4 -0
  3. {includecpp-3.7.6 → includecpp-3.7.11}/PKG-INFO +1 -1
  4. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/__init__.py +1 -1
  5. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/cli/commands.py +137 -66
  6. includecpp-3.7.11/includecpp/vscode/cssl/images/cssl.png +0 -0
  7. includecpp-3.7.11/includecpp/vscode/cssl/images/cssl_pl.png +0 -0
  8. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/vscode/cssl/package.json +24 -5
  9. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/vscode/cssl/syntaxes/cssl.tmLanguage.json +133 -32
  10. {includecpp-3.7.6 → includecpp-3.7.11}/pyproject.toml +3 -2
  11. {includecpp-3.7.6 → includecpp-3.7.11}/IncludeCPP.egg-info/dependency_links.txt +0 -0
  12. {includecpp-3.7.6 → includecpp-3.7.11}/IncludeCPP.egg-info/entry_points.txt +0 -0
  13. {includecpp-3.7.6 → includecpp-3.7.11}/IncludeCPP.egg-info/requires.txt +0 -0
  14. {includecpp-3.7.6 → includecpp-3.7.11}/IncludeCPP.egg-info/top_level.txt +0 -0
  15. {includecpp-3.7.6 → includecpp-3.7.11}/LICENSE +0 -0
  16. {includecpp-3.7.6 → includecpp-3.7.11}/MANIFEST.in +0 -0
  17. {includecpp-3.7.6 → includecpp-3.7.11}/README.md +0 -0
  18. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/__init__.pyi +0 -0
  19. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/__main__.py +0 -0
  20. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/cli/__init__.py +0 -0
  21. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/cli/config_parser.py +0 -0
  22. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/core/__init__.py +0 -0
  23. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/core/ai_integration.py +0 -0
  24. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/core/build_manager.py +0 -0
  25. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/core/cpp_api.py +0 -0
  26. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/core/cpp_api.pyi +0 -0
  27. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/core/cppy_converter.py +0 -0
  28. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/core/cssl/CSSL_DOCUMENTATION.md +0 -0
  29. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/core/cssl/__init__.py +0 -0
  30. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/core/cssl/cssl_builtins.py +0 -0
  31. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/core/cssl/cssl_builtins.pyi +0 -0
  32. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/core/cssl/cssl_events.py +0 -0
  33. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/core/cssl/cssl_modules.py +0 -0
  34. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/core/cssl/cssl_parser.py +0 -0
  35. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/core/cssl/cssl_runtime.py +0 -0
  36. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/core/cssl/cssl_syntax.py +0 -0
  37. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/core/cssl/cssl_types.py +0 -0
  38. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/core/cssl_bridge.py +0 -0
  39. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/core/cssl_bridge.pyi +0 -0
  40. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/core/error_catalog.py +0 -0
  41. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/core/error_formatter.py +0 -0
  42. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/core/exceptions.py +0 -0
  43. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/core/path_discovery.py +0 -0
  44. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/core/project_ui.py +0 -0
  45. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/core/settings_ui.py +0 -0
  46. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/generator/__init__.py +0 -0
  47. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/generator/parser.cpp +0 -0
  48. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/generator/parser.h +0 -0
  49. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/generator/type_resolver.cpp +0 -0
  50. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/generator/type_resolver.h +0 -0
  51. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/py.typed +0 -0
  52. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/templates/cpp.proj.template +0 -0
  53. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/vscode/__init__.py +0 -0
  54. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/vscode/cssl/__init__.py +0 -0
  55. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/vscode/cssl/language-configuration.json +0 -0
  56. {includecpp-3.7.6 → includecpp-3.7.11}/includecpp/vscode/cssl/snippets/cssl.snippets.json +0 -0
  57. {includecpp-3.7.6 → includecpp-3.7.11}/requirements.txt +0 -0
  58. {includecpp-3.7.6 → includecpp-3.7.11}/setup.cfg +0 -0
  59. {includecpp-3.7.6 → includecpp-3.7.11}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: IncludeCPP
3
- Version: 3.7.6
3
+ Version: 3.7.11
4
4
  Summary: Professional C++ Python bindings with type-generic templates, pystubs and native threading
5
5
  Home-page: https://github.com/liliassg/IncludeCPP
6
6
  Author: Lilias Hatterscheidt
@@ -45,6 +45,8 @@ setup.py
45
45
  ./includecpp/vscode/cssl/__init__.py
46
46
  ./includecpp/vscode/cssl/language-configuration.json
47
47
  ./includecpp/vscode/cssl/package.json
48
+ ./includecpp/vscode/cssl/images/cssl.png
49
+ ./includecpp/vscode/cssl/images/cssl_pl.png
48
50
  ./includecpp/vscode/cssl/snippets/cssl.snippets.json
49
51
  ./includecpp/vscode/cssl/syntaxes/cssl.tmLanguage.json
50
52
  IncludeCPP.egg-info/PKG-INFO
@@ -94,5 +96,7 @@ includecpp/vscode/__init__.py
94
96
  includecpp/vscode/cssl/__init__.py
95
97
  includecpp/vscode/cssl/language-configuration.json
96
98
  includecpp/vscode/cssl/package.json
99
+ includecpp/vscode/cssl/images/cssl.png
100
+ includecpp/vscode/cssl/images/cssl_pl.png
97
101
  includecpp/vscode/cssl/snippets/cssl.snippets.json
98
102
  includecpp/vscode/cssl/syntaxes/cssl.tmLanguage.json
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: IncludeCPP
3
- Version: 3.7.6
3
+ Version: 3.7.11
4
4
  Summary: Professional C++ Python bindings with type-generic templates, pystubs and native threading
5
5
  Home-page: https://github.com/liliassg/IncludeCPP
6
6
  Author: Lilias Hatterscheidt
@@ -2,7 +2,7 @@ from .core.cpp_api import CppApi
2
2
  from .core import cssl_bridge as CSSL
3
3
  import warnings
4
4
 
5
- __version__ = "3.7.6"
5
+ __version__ = "3.7.11"
6
6
  __all__ = ["CppApi", "CSSL"]
7
7
 
8
8
  # Module-level cache for C++ modules
@@ -1193,7 +1193,7 @@ def build(ctx, clean, keep, verbose, no_incremental, incremental, parallel, jobs
1193
1193
  @cli.command()
1194
1194
  @click.argument('module_name')
1195
1195
  def add(module_name):
1196
- """Create a new module template."""
1196
+ """Create a new module template with sample C++ code."""
1197
1197
  plugins_dir = Path("plugins")
1198
1198
  if not plugins_dir.exists():
1199
1199
  click.echo("Error: plugins/ directory not found")
@@ -1204,6 +1204,7 @@ def add(module_name):
1204
1204
  click.echo(f"Module {module_name} already exists")
1205
1205
  return
1206
1206
 
1207
+ # Create .cp config file
1207
1208
  template = f"""SOURCE(include/{module_name}.cpp) {module_name}
1208
1209
 
1209
1210
  PUBLIC(
@@ -1215,7 +1216,41 @@ PUBLIC(
1215
1216
  f.write(template)
1216
1217
 
1217
1218
  click.echo(f"Created {cp_file}")
1218
- click.echo(f"Now create include/{module_name}.cpp with your C++ code")
1219
+
1220
+ # Create include/ directory if it doesn't exist
1221
+ include_dir = Path("include")
1222
+ include_dir.mkdir(exist_ok=True)
1223
+
1224
+ # Create .cpp file with sample code
1225
+ cpp_file = include_dir / f"{module_name}.cpp"
1226
+ if not cpp_file.exists():
1227
+ cpp_template = f"""#include <string>
1228
+ #include <vector>
1229
+
1230
+ namespace includecpp {{
1231
+
1232
+ // Example function - returns a greeting
1233
+ std::string example_function(const std::string& name) {{
1234
+ return "Hello, " + name + "!";
1235
+ }}
1236
+
1237
+ // Add more functions here...
1238
+ // int add(int a, int b) {{ return a + b; }}
1239
+ // std::vector<int> range(int n) {{ ... }}
1240
+
1241
+ }} // namespace includecpp
1242
+ """
1243
+ with open(cpp_file, 'w', encoding='utf-8') as f:
1244
+ f.write(cpp_template)
1245
+
1246
+ click.echo(f"Created {cpp_file}")
1247
+ else:
1248
+ click.echo(f"Note: {cpp_file} already exists, skipped")
1249
+
1250
+ click.echo(f"\nNext steps:")
1251
+ click.echo(f" 1. Edit include/{module_name}.cpp to add your functions")
1252
+ click.echo(f" 2. Update plugins/{module_name}.cp to expose functions")
1253
+ click.echo(f" 3. Run: includecpp rebuild")
1219
1254
 
1220
1255
  @cli.command('list')
1221
1256
  def list_modules():
@@ -7823,26 +7858,46 @@ def cssl_vscode():
7823
7858
  click.secho("CSSL extension files not found in package.", fg='red')
7824
7859
  return
7825
7860
 
7826
- # Install extension
7827
- target_dir = vscode_ext_dir / 'includecpp.cssl-1.0.0'
7861
+ # Get version from package.json
7862
+ pkg_json = source_ext_dir / 'package.json'
7863
+ current_version = "1.1.0"
7864
+ if pkg_json.exists():
7865
+ try:
7866
+ pkg_data = json.loads(pkg_json.read_text(encoding='utf-8'))
7867
+ current_version = pkg_data.get('version', '1.1.0')
7868
+ except:
7869
+ pass
7870
+
7871
+ target_dir = vscode_ext_dir / f'includecpp.cssl-{current_version}'
7828
7872
 
7829
7873
  try:
7874
+ # Check for existing installations
7875
+ existing_version = None
7876
+ for existing in vscode_ext_dir.glob('includecpp.cssl-*'):
7877
+ existing_version = existing.name.split('-')[-1]
7878
+ if existing_version != current_version:
7879
+ click.echo(f"Removing old version: {existing_version}")
7880
+ shutil.rmtree(existing)
7881
+
7830
7882
  if target_dir.exists():
7831
7883
  shutil.rmtree(target_dir)
7832
7884
 
7833
7885
  shutil.copytree(source_ext_dir, target_dir)
7834
7886
 
7835
- click.secho("CSSL VSCode extension installed!", fg='green', bold=True)
7887
+ if existing_version and existing_version != current_version:
7888
+ click.secho(f"CSSL extension updated: v{existing_version} -> v{current_version}", fg='green', bold=True)
7889
+ else:
7890
+ click.secho(f"CSSL VSCode extension installed! (v{current_version})", fg='green', bold=True)
7836
7891
  click.echo()
7837
7892
  click.echo(f"Installed to: {target_dir}")
7838
7893
  click.echo()
7839
7894
  click.echo("Features:")
7840
7895
  click.echo(" - Syntax highlighting for .cssl, .cssl-pl, .cssl-mod files")
7841
- click.echo(" - BruteInjection operators: <==, ==>, <<==, +<==, etc.")
7842
- click.echo(" - Type highlighting: int, string, stack<T>, datastruct<T>")
7896
+ click.echo(" - OOP support: class, constructor, this->member")
7897
+ click.echo(" - Injection operators: <== (brute), <<== (infuse)")
7898
+ click.echo(" - Type highlighting: int, string, stack<T>, instance<>")
7843
7899
  click.echo(" - Global references: @Name, r@Name, s@Name")
7844
7900
  click.echo(" - Shared objects: $Name")
7845
- click.echo(" - Filter helpers: string::contains, json::key, etc.")
7846
7901
  click.echo()
7847
7902
  click.secho("Restart VSCode to activate the extension.", fg='yellow')
7848
7903
 
@@ -7866,35 +7921,28 @@ cli.add_command(cssl)
7866
7921
  def vscode(force, stubs_only):
7867
7922
  """Initialize or update VSCode configuration for IncludeCPP/CSSL.
7868
7923
 
7869
- Sets up .vscode folder with:
7870
- - CSSL language support (syntax highlighting, snippets)
7871
- - Type stubs for builtins (.pyi files)
7872
- - Auto-generated stubs for your plugins and modules
7924
+ Installs CSSL extension globally and sets up project stubs.
7873
7925
 
7874
7926
  \b
7875
7927
  Usage:
7876
- includecpp vscode # Initialize .vscode
7877
- includecpp vscode --force # Force overwrite existing
7928
+ includecpp vscode # Install/update extension + stubs
7929
+ includecpp vscode --force # Force reinstall extension
7878
7930
  includecpp vscode --stubs-only # Only update stubs
7879
7931
 
7880
7932
  \b
7881
- What it creates:
7882
- .vscode/
7883
- settings.json - VSCode settings for CSSL
7884
- cssl/ - CSSL language extension
7885
- stubs/ - Type stubs for IDE support
7886
- cssl_builtins.pyi - CSSL builtin functions
7887
- plugins/ - Stubs for your .cp plugins
7888
- modules/ - Stubs for your modules
7933
+ What it does:
7934
+ 1. Installs CSSL extension globally (~/.vscode/extensions/)
7935
+ 2. Creates .vscode/settings.json with file associations
7936
+ 3. Creates .vscode/stubs/ with type hints for IDE support
7889
7937
  """
7890
7938
  from pathlib import Path as PathLib
7939
+ import os
7891
7940
 
7892
7941
  cwd = PathLib.cwd()
7893
7942
  vscode_dir = cwd / '.vscode'
7894
7943
  stubs_dir = vscode_dir / 'stubs'
7895
7944
  plugins_stubs_dir = stubs_dir / 'plugins'
7896
7945
  modules_stubs_dir = stubs_dir / 'modules'
7897
- cssl_ext_dir = vscode_dir / 'cssl'
7898
7946
 
7899
7947
  # Create directories
7900
7948
  vscode_dir.mkdir(exist_ok=True)
@@ -7910,56 +7958,79 @@ def vscode(force, stubs_only):
7910
7958
  updated_count = 0
7911
7959
  created_count = 0
7912
7960
 
7913
- # 1. Copy CSSL extension files (unless stubs-only)
7961
+ # 1. Install CSSL extension GLOBALLY (unless stubs-only)
7914
7962
  if not stubs_only:
7915
- click.secho("Setting up CSSL language support...", fg='yellow')
7963
+ click.secho("Installing CSSL extension globally...", fg='yellow')
7916
7964
 
7917
7965
  # Find source extension directory
7918
7966
  source_ext_dir = PathLib(__file__).parent.parent / 'vscode' / 'cssl'
7919
7967
 
7920
7968
  if source_ext_dir.exists():
7921
- cssl_ext_dir.mkdir(exist_ok=True)
7922
-
7923
- # Copy extension files
7924
- ext_files = [
7925
- 'language-configuration.json',
7926
- 'package.json',
7927
- ]
7928
-
7929
- for fname in ext_files:
7930
- src = source_ext_dir / fname
7931
- dst = cssl_ext_dir / fname
7932
- if src.exists():
7933
- if not dst.exists() or force:
7934
- shutil.copy2(src, dst)
7935
- created_count += 1
7936
- click.echo(f" Created: .vscode/cssl/{fname}")
7937
-
7938
- # Copy syntaxes folder
7939
- syntaxes_src = source_ext_dir / 'syntaxes'
7940
- syntaxes_dst = cssl_ext_dir / 'syntaxes'
7941
- if syntaxes_src.exists():
7942
- syntaxes_dst.mkdir(exist_ok=True)
7943
- for f in syntaxes_src.glob('*.json'):
7944
- dst = syntaxes_dst / f.name
7945
- if not dst.exists() or force:
7946
- shutil.copy2(f, dst)
7947
- created_count += 1
7948
- click.echo(f" Created: .vscode/cssl/syntaxes/{f.name}")
7949
-
7950
- # Copy snippets folder
7951
- snippets_src = source_ext_dir / 'snippets'
7952
- snippets_dst = cssl_ext_dir / 'snippets'
7953
- if snippets_src.exists():
7954
- snippets_dst.mkdir(exist_ok=True)
7955
- for f in snippets_src.glob('*.json'):
7956
- dst = snippets_dst / f.name
7957
- if not dst.exists() or force:
7958
- shutil.copy2(f, dst)
7959
- created_count += 1
7960
- click.echo(f" Created: .vscode/cssl/snippets/{f.name}")
7969
+ # Get version from package.json
7970
+ pkg_json = source_ext_dir / 'package.json'
7971
+ current_version = "1.1.0"
7972
+ if pkg_json.exists():
7973
+ try:
7974
+ pkg_data = json.loads(pkg_json.read_text(encoding='utf-8'))
7975
+ current_version = pkg_data.get('version', '1.1.0')
7976
+ except:
7977
+ pass
7978
+
7979
+ # Find global VSCode extensions directory
7980
+ if os.name == 'nt': # Windows
7981
+ global_ext_dir = PathLib(os.environ.get('USERPROFILE', '')) / '.vscode' / 'extensions'
7982
+ else: # Linux/Mac
7983
+ global_ext_dir = PathLib.home() / '.vscode' / 'extensions'
7984
+
7985
+ if not global_ext_dir.exists():
7986
+ # Try VSCode Insiders
7987
+ if os.name == 'nt':
7988
+ global_ext_dir = PathLib(os.environ.get('USERPROFILE', '')) / '.vscode-insiders' / 'extensions'
7989
+ else:
7990
+ global_ext_dir = PathLib.home() / '.vscode-insiders' / 'extensions'
7991
+
7992
+ if global_ext_dir.exists():
7993
+ target_dir = global_ext_dir / f'includecpp.cssl-{current_version}'
7994
+
7995
+ # Check if already installed with same or older version
7996
+ needs_install = force
7997
+ existing_version = None
7998
+
7999
+ # Find existing installations
8000
+ for existing in global_ext_dir.glob('includecpp.cssl-*'):
8001
+ existing_version = existing.name.split('-')[-1]
8002
+ if existing_version != current_version:
8003
+ # Remove old version
8004
+ click.echo(f" Removing old version: {existing_version}")
8005
+ shutil.rmtree(existing)
8006
+ needs_install = True
8007
+ elif not force:
8008
+ click.echo(f" Already installed: v{current_version}")
8009
+ needs_install = False
8010
+
8011
+ if not target_dir.exists():
8012
+ needs_install = True
8013
+
8014
+ if needs_install:
8015
+ # Remove target if exists (force reinstall)
8016
+ if target_dir.exists():
8017
+ shutil.rmtree(target_dir)
8018
+
8019
+ # Copy extension to global directory
8020
+ shutil.copytree(source_ext_dir, target_dir)
8021
+ created_count += 1
8022
+
8023
+ if existing_version and existing_version != current_version:
8024
+ click.secho(f" Updated: v{existing_version} -> v{current_version}", fg='green')
8025
+ else:
8026
+ click.secho(f" Installed: v{current_version}", fg='green')
7961
8027
 
7962
- click.secho(" CSSL extension configured", fg='green')
8028
+ click.echo(f" Location: {target_dir}")
8029
+ click.echo()
8030
+ click.secho(" Restart VSCode to activate the extension!", fg='yellow', bold=True)
8031
+ else:
8032
+ click.secho(" VSCode extensions directory not found.", fg='red')
8033
+ click.echo(" Make sure VSCode is installed.")
7963
8034
  else:
7964
8035
  click.secho(" Warning: CSSL extension source not found", fg='yellow')
7965
8036
 
@@ -2,9 +2,9 @@
2
2
  "name": "cssl",
3
3
  "displayName": "CSSL - CSO Service Script Language",
4
4
  "description": "Professional syntax highlighting, snippets, and language support for CSSL scripts (.cssl, .cssl-pl, .cssl-mod)",
5
- "version": "1.1.0",
5
+ "version": "1.2.0",
6
6
  "publisher": "IncludeCPP",
7
- "icon": "images/cssl-icon.png",
7
+ "icon": "images/cssl.png",
8
8
  "engines": {
9
9
  "vscode": "^1.60.0"
10
10
  },
@@ -25,11 +25,21 @@
25
25
  {
26
26
  "id": "cssl",
27
27
  "aliases": ["CSSL", "cssl", "CSO Service Script"],
28
- "extensions": [".cssl", ".cssl-pl", ".cssl-mod"],
28
+ "extensions": [".cssl", ".cssl-mod"],
29
29
  "configuration": "./language-configuration.json",
30
30
  "icon": {
31
- "light": "./images/cssl-icon.png",
32
- "dark": "./images/cssl-icon.png"
31
+ "light": "./images/cssl.png",
32
+ "dark": "./images/cssl.png"
33
+ }
34
+ },
35
+ {
36
+ "id": "cssl-pl",
37
+ "aliases": ["CSSL Payload", "cssl-pl"],
38
+ "extensions": [".cssl-pl"],
39
+ "configuration": "./language-configuration.json",
40
+ "icon": {
41
+ "light": "./images/cssl_pl.png",
42
+ "dark": "./images/cssl_pl.png"
33
43
  }
34
44
  }
35
45
  ],
@@ -38,12 +48,21 @@
38
48
  "language": "cssl",
39
49
  "scopeName": "source.cssl",
40
50
  "path": "./syntaxes/cssl.tmLanguage.json"
51
+ },
52
+ {
53
+ "language": "cssl-pl",
54
+ "scopeName": "source.cssl",
55
+ "path": "./syntaxes/cssl.tmLanguage.json"
41
56
  }
42
57
  ],
43
58
  "snippets": [
44
59
  {
45
60
  "language": "cssl",
46
61
  "path": "./snippets/cssl.snippets.json"
62
+ },
63
+ {
64
+ "language": "cssl-pl",
65
+ "path": "./snippets/cssl.snippets.json"
47
66
  }
48
67
  ]
49
68
  }
@@ -33,11 +33,13 @@
33
33
  "super-functions": {
34
34
  "patterns": [
35
35
  {
36
- "name": "markup.bold.super.builtin.cssl",
36
+ "comment": "#$run, #$exec, #$printl - yellow/gold color",
37
+ "name": "entity.name.tag.super.cssl",
37
38
  "match": "#\\$(run|exec|printl|init)\\b"
38
39
  },
39
40
  {
40
- "name": "markup.bold.super.call.cssl",
41
+ "comment": "#$anyFunction - yellow/gold color",
42
+ "name": "entity.name.tag.super.cssl",
41
43
  "match": "#\\$[a-zA-Z_][a-zA-Z0-9_]*"
42
44
  }
43
45
  ]
@@ -111,22 +113,67 @@
111
113
  "name": "meta.class.cssl",
112
114
  "begin": "\\b(class)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\{",
113
115
  "beginCaptures": {
114
- "1": { "name": "keyword.other.class.cssl" },
116
+ "1": { "name": "storage.type.class.cssl" },
115
117
  "2": { "name": "entity.name.class.cssl" }
116
118
  },
117
119
  "end": "\\}",
118
120
  "patterns": [
119
121
  { "include": "#comments" },
120
- { "include": "#function-definition" },
122
+ { "include": "#constructor-definition" },
123
+ { "include": "#class-method-definition" },
124
+ { "include": "#class-member-declaration" },
121
125
  { "include": "#types" },
122
126
  { "include": "#this-access" },
127
+ { "include": "#captured-references" },
128
+ { "include": "#global-references" },
129
+ { "include": "#shared-references" },
123
130
  { "include": "#strings" },
124
131
  { "include": "#numbers" },
132
+ { "include": "#keywords" },
133
+ { "include": "#function-calls" },
134
+ { "include": "#builtins" },
125
135
  { "include": "#operators" }
126
136
  ]
127
137
  }
128
138
  ]
129
139
  },
140
+ "constructor-definition": {
141
+ "patterns": [
142
+ {
143
+ "comment": "Constructor: ClassName { ... } or void ClassName(...)",
144
+ "name": "meta.constructor.cssl",
145
+ "match": "\\b(void\\s+)?([A-Z][a-zA-Z0-9_]*)\\s*(?=\\{|\\()",
146
+ "captures": {
147
+ "1": { "name": "storage.type.cssl" },
148
+ "2": { "name": "entity.name.function.cssl" }
149
+ }
150
+ }
151
+ ]
152
+ },
153
+ "class-method-definition": {
154
+ "patterns": [
155
+ {
156
+ "name": "meta.method.cssl",
157
+ "match": "\\b(void|int|string|float|bool|dynamic|define|shuffled)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\(",
158
+ "captures": {
159
+ "1": { "name": "storage.type.cssl" },
160
+ "2": { "name": "entity.name.function.cssl" }
161
+ }
162
+ }
163
+ ]
164
+ },
165
+ "class-member-declaration": {
166
+ "patterns": [
167
+ {
168
+ "name": "meta.member.cssl",
169
+ "match": "\\b(int|string|float|bool|dynamic|auto)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\s*;",
170
+ "captures": {
171
+ "1": { "name": "storage.type.cssl" },
172
+ "2": { "name": "variable.other.member.cssl" }
173
+ }
174
+ }
175
+ ]
176
+ },
130
177
  "function-definition": {
131
178
  "patterns": [
132
179
  {
@@ -158,12 +205,24 @@
158
205
  "match": "\\b(if|else|elif|while|for|foreach|in|range|switch|case|default|break|continue|return|try|catch|finally|throw)\\b"
159
206
  },
160
207
  {
161
- "name": "keyword.other.class.cssl",
162
- "match": "\\b(class|new|this)\\b"
208
+ "name": "storage.type.class.cssl",
209
+ "match": "\\b(class|struct|structure|enum|interface)\\b"
210
+ },
211
+ {
212
+ "name": "keyword.operator.new.cssl",
213
+ "match": "\\bnew\\b"
214
+ },
215
+ {
216
+ "name": "variable.language.this.cssl",
217
+ "match": "\\bthis\\b"
218
+ },
219
+ {
220
+ "name": "storage.type.function.cssl",
221
+ "match": "\\b(define|void|shuffled)\\b"
163
222
  },
164
223
  {
165
224
  "name": "keyword.other.cssl",
166
- "match": "\\b(service-init|service-run|service-include|struct|structure|define|main|package|package-includes|exec|as|global|include|get|payload|convert)\\b"
225
+ "match": "\\b(service-init|service-run|service-include|main|package|package-includes|exec|as|global|include|get|payload|convert)\\b"
167
226
  },
168
227
  {
169
228
  "name": "keyword.operator.logical.cssl",
@@ -182,19 +241,19 @@
182
241
  "match": "\\b(int|string|float|bool|void|json|dynamic|auto|long|double)\\b"
183
242
  },
184
243
  {
185
- "name": "storage.type.container.cssl",
186
- "match": "\\b(array|vector|stack|list|dictionary|dict|map|datastruct|dataspace|shuffled|iterator|combo|openquote|instance|tuple|set|queue)\\b"
187
- },
188
- {
189
- "name": "storage.type.generic.cssl",
190
- "match": "\\b(array|vector|stack|list|dictionary|dict|map|datastruct|dataspace|shuffled|iterator|combo|openquote|instance|tuple|set|queue)\\s*<",
244
+ "comment": "Generic containers with type parameter: vector<int>, map<string, int>",
245
+ "name": "meta.generic.cssl",
246
+ "match": "(\\b(?:array|vector|stack|list|dictionary|dict|map|datastruct|dataspace|shuffled|iterator|combo|openquote|tuple|set|queue))(<)([^>]+)(>)",
191
247
  "captures": {
192
- "1": { "name": "storage.type.container.cssl" }
248
+ "1": { "name": "storage.type.container.cssl" },
249
+ "2": { "name": "punctuation.definition.typeparameters.begin.cssl" },
250
+ "3": { "name": "storage.type.parameter.cssl" },
251
+ "4": { "name": "punctuation.definition.typeparameters.end.cssl" }
193
252
  }
194
253
  },
195
254
  {
196
- "name": "storage.type.map-literal.cssl",
197
- "match": "\\bmap\\s*<[^>]+>\\s*\\{"
255
+ "name": "storage.type.container.cssl",
256
+ "match": "\\b(array|vector|stack|list|dictionary|dict|map|datastruct|dataspace|shuffled|iterator|combo|openquote|instance|tuple|set|queue)\\b"
198
257
  },
199
258
  {
200
259
  "name": "storage.type.combo-open.cssl",
@@ -213,19 +272,23 @@
213
272
  "injection-operators": {
214
273
  "patterns": [
215
274
  {
216
- "name": "entity.name.tag.infuse.cssl",
275
+ "comment": "Infuse operators <<== (REPLACE) - orange color",
276
+ "name": "constant.character.escape.infuse.cssl",
217
277
  "match": "(\\+<<==|<<==|-<<==)"
218
278
  },
219
279
  {
220
- "name": "entity.name.tag.infuse.out.cssl",
280
+ "comment": "Infuse out operators ==>> - orange color",
281
+ "name": "constant.character.escape.infuse.out.cssl",
221
282
  "match": "(==>>\\+|==>>|-==>>)"
222
283
  },
223
284
  {
224
- "name": "keyword.operator.injection.brute.cssl",
285
+ "comment": "Brute injection <== (ADD) - cyan/blue color",
286
+ "name": "support.function.brute.cssl",
225
287
  "match": "(\\+<==|<==|-<==)"
226
288
  },
227
289
  {
228
- "name": "keyword.operator.injection.brute.out.cssl",
290
+ "comment": "Brute injection out ==> - cyan/blue color",
291
+ "name": "support.function.brute.out.cssl",
229
292
  "match": "(==>\\+|==>|-==>)"
230
293
  },
231
294
  {
@@ -293,40 +356,78 @@
293
356
  "captured-references": {
294
357
  "patterns": [
295
358
  {
296
- "name": "variable.other.captured.cssl",
297
- "match": "%[a-zA-Z_][a-zA-Z0-9_]*"
359
+ "comment": "%identifier - % is light blue, identifier is normal",
360
+ "match": "(%)([a-zA-Z_][a-zA-Z0-9_]*)",
361
+ "captures": {
362
+ "1": { "name": "support.function.captured-prefix.cssl" },
363
+ "2": { "name": "variable.other.captured.cssl" }
364
+ }
298
365
  }
299
366
  ]
300
367
  },
301
368
  "global-references": {
302
369
  "patterns": [
303
370
  {
304
- "name": "variable.other.global.cssl",
305
- "match": "@[a-zA-Z_][a-zA-Z0-9_]*"
371
+ "comment": "@identifier - magenta color for global references",
372
+ "match": "(@)([a-zA-Z_][a-zA-Z0-9_]*)",
373
+ "captures": {
374
+ "1": { "name": "constant.other.symbol.global-prefix.cssl" },
375
+ "2": { "name": "constant.other.symbol.global.cssl" }
376
+ }
306
377
  },
307
378
  {
308
- "name": "variable.other.global-decl.cssl",
309
- "match": "r@[a-zA-Z_][a-zA-Z0-9_]*"
379
+ "comment": "r@identifier - read global reference",
380
+ "match": "(r@)([a-zA-Z_][a-zA-Z0-9_]*)",
381
+ "captures": {
382
+ "1": { "name": "constant.other.symbol.global-prefix.cssl" },
383
+ "2": { "name": "constant.other.symbol.global.cssl" }
384
+ }
310
385
  },
311
386
  {
312
- "name": "variable.other.self-ref.cssl",
313
- "match": "s@[a-zA-Z_][a-zA-Z0-9_]*"
387
+ "comment": "s@identifier - self reference",
388
+ "match": "(s@)([a-zA-Z_][a-zA-Z0-9_]*)",
389
+ "captures": {
390
+ "1": { "name": "constant.other.symbol.global-prefix.cssl" },
391
+ "2": { "name": "constant.other.symbol.global.cssl" }
392
+ }
314
393
  }
315
394
  ]
316
395
  },
317
396
  "shared-references": {
318
397
  "patterns": [
319
398
  {
320
- "name": "variable.other.shared.cssl",
321
- "match": "\\$[a-zA-Z_][a-zA-Z0-9_]*"
399
+ "comment": "$identifier - same color as 'new' keyword",
400
+ "match": "(\\$)([a-zA-Z_][a-zA-Z0-9_]*)",
401
+ "captures": {
402
+ "1": { "name": "keyword.operator.new.shared-prefix.cssl" },
403
+ "2": { "name": "keyword.operator.new.shared.cssl" }
404
+ }
322
405
  }
323
406
  ]
324
407
  },
325
408
  "instance-references": {
326
409
  "patterns": [
327
410
  {
328
- "name": "storage.type.instance.cssl",
329
- "match": "\\binstance<\"[^\"]+\">"
411
+ "comment": "instance<\"name\"> - shared instance reference with string",
412
+ "name": "meta.instance.cssl",
413
+ "match": "(\\binstance)(<)(\"[^\"]+\")(>)",
414
+ "captures": {
415
+ "1": { "name": "storage.type.instance.cssl" },
416
+ "2": { "name": "punctuation.definition.typeparameters.begin.cssl" },
417
+ "3": { "name": "string.quoted.double.cssl" },
418
+ "4": { "name": "punctuation.definition.typeparameters.end.cssl" }
419
+ }
420
+ },
421
+ {
422
+ "comment": "instance<Type> - shared instance reference with type",
423
+ "name": "meta.instance.cssl",
424
+ "match": "(\\binstance)(<)([a-zA-Z_][a-zA-Z0-9_]*)(>)",
425
+ "captures": {
426
+ "1": { "name": "storage.type.instance.cssl" },
427
+ "2": { "name": "punctuation.definition.typeparameters.begin.cssl" },
428
+ "3": { "name": "entity.name.type.cssl" },
429
+ "4": { "name": "punctuation.definition.typeparameters.end.cssl" }
430
+ }
330
431
  }
331
432
  ]
332
433
  },
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "IncludeCPP"
7
- version = "3.7.6"
7
+ version = "3.7.11"
8
8
  description = "Professional C++ Python bindings with type-generic templates, pystubs and native threading"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -63,5 +63,6 @@ includecpp = [
63
63
  "cli/*.pyi",
64
64
  "vscode/cssl/*.json",
65
65
  "vscode/cssl/syntaxes/*.json",
66
- "vscode/cssl/snippets/*.json"
66
+ "vscode/cssl/snippets/*.json",
67
+ "vscode/cssl/images/*.png"
67
68
  ]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes