easycoder 251104.1__tar.gz → 251104.2__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.
Potentially problematic release.
This version of easycoder might be problematic. Click here for more details.
- easycoder-251104.2/.vscode/EXTENSION_GUIDE.md +77 -0
- easycoder-251104.2/.vscode/PYTHON_SETUP.md +107 -0
- easycoder-251104.2/.vscode/extensions/easycoder/README.md +67 -0
- easycoder-251104.2/.vscode/extensions/easycoder/language-configuration.json +26 -0
- easycoder-251104.2/.vscode/extensions/easycoder/package.json +41 -0
- easycoder-251104.2/.vscode/extensions/easycoder/snippets/easycoder.json +173 -0
- easycoder-251104.2/.vscode/extensions/easycoder/syntaxes/easycoder.tmLanguage.json +112 -0
- easycoder-251104.2/.vscode/settings.json +47 -0
- {easycoder-251104.1 → easycoder-251104.2}/PKG-INFO +1 -1
- {easycoder-251104.1 → easycoder-251104.2}/easycoder/__init__.py +1 -1
- {easycoder-251104.1 → easycoder-251104.2}/easycoder/ec_classes.py +7 -2
- {easycoder-251104.1 → easycoder-251104.2}/easycoder/ec_compiler.py +2 -1
- {easycoder-251104.1 → easycoder-251104.2}/easycoder/ec_core.py +1 -1
- easycoder-251104.2/easycoder/ec_debug.py +464 -0
- {easycoder-251104.1 → easycoder-251104.2}/easycoder/ec_program.py +17 -8
- {easycoder-251104.1 → easycoder-251104.2}/easycoder/ec_pyside.py +2 -0
- {easycoder-251104.1 → easycoder-251104.2}/scripts/tests.ecs +1 -0
- easycoder-251104.2/test.py +5 -0
- easycoder-251104.1/test.py +0 -5
- {easycoder-251104.1 → easycoder-251104.2}/.github/copilot-instructions.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/.gitignore +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/LICENSE +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/README.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/backdrop.jpg +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/README.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/README.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/conditions/boolean.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/conditions/empty.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/conditions/ends.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/conditions/even.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/conditions/exists.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/conditions/greater.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/conditions/hasProperty.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/conditions/includes.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/conditions/is.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/conditions/less.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/conditions/list.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/conditions/none.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/conditions/not.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/conditions/numeric.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/conditions/object.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/conditions/odd.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/conditions/starts.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/conditions/string.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/add.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/append.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/assert.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/begin.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/clear.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/close.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/create.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/debug.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/decrement.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/delete.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/divide.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/exit.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/file.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/fork.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/get.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/go.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/gosub.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/if.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/import.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/increment.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/index.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/init.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/input.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/load.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/lock.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/log.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/module.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/multiply.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/negate.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/on.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/open.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/pop.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/post.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/print.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/push.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/put.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/read.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/release.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/replace.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/return.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/run.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/save.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/script.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/send.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/set.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/shuffle.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/split.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/stack.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/stop.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/system.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/take.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/toggle.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/truncate.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/unlock.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/use.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/variable.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/wait.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/while.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/keywords/write.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/arg.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/args.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/cos.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/datime.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/decode.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/element.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/elements.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/empty.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/encode.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/error.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/files.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/float.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/from.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/hash.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/index.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/integer.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/json.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/keys.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/left.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/length.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/lowercase.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/memory.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/modification.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/modulo.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/newline.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/now.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/position.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/property.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/random.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/right.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/sin.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/stringify.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/tab.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/tan.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/timestamp.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/today.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/trim.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/type.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/uppercase.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/value.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/core/values/weekday.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/graphics/README.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/graphics/keywords/attach.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/graphics/keywords/close.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/graphics/keywords/create.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/graphics/keywords/ellipse.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/graphics/keywords/image.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/graphics/keywords/move.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/graphics/keywords/on.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/graphics/keywords/rectangle.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/graphics/keywords/render.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/graphics/keywords/run.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/graphics/keywords/set.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/graphics/keywords/text.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/graphics/values/attribute.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/doc/graphics/values/window.md +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/easycoder/close.png +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/easycoder/ec_border.py +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/easycoder/ec_condition.py +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/easycoder/ec_handler.py +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/easycoder/ec_keyboard.py +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/easycoder/ec_timestamp.py +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/easycoder/ec_value.py +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/easycoder/tick.png +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/images/Semoigo Dawn.jpg +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/json/graphics-demo.json +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/plugins/ec_keyboard.py +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/plugins/ec_p100.py +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/plugins/ec_pyside6.py +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/plugins/points.py +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/plugins/sql.py +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/pyproject.toml +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/scripts/benchmark.ecs +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/scripts/ec_keyboard.py +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/scripts/fizzbuzz.ecs +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/scripts/hello.ecs +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/scripts/points.ecs +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/scripts/test.ecs +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/testrc.py +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/testsql.py +0 -0
- {easycoder-251104.1 → easycoder-251104.2}/testui.py +0 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# VS Code EasyCoder Extension Installation
|
|
2
|
+
|
|
3
|
+
The EasyCoder language extension has been created and installed for VS Code.
|
|
4
|
+
|
|
5
|
+
## What's Included
|
|
6
|
+
|
|
7
|
+
1. **Syntax Highlighting** - Keywords, strings, numbers, and comments are color-coded
|
|
8
|
+
2. **Code Snippets** - Quick templates for common patterns (type prefix + Tab)
|
|
9
|
+
3. **Auto-completion** - IntelliSense suggestions as you type
|
|
10
|
+
4. **Auto-closing** - Brackets, quotes, and parentheses close automatically
|
|
11
|
+
5. **Comment Toggling** - Use Ctrl+/ to toggle line comments
|
|
12
|
+
|
|
13
|
+
## Installation
|
|
14
|
+
|
|
15
|
+
The extension has been copied to: `~/.vscode/extensions/easycoder/`
|
|
16
|
+
|
|
17
|
+
**To activate:**
|
|
18
|
+
1. Reload VS Code: Press `Ctrl+Shift+P` and type "Reload Window"
|
|
19
|
+
2. Open any `.ecs` file to see the features in action
|
|
20
|
+
|
|
21
|
+
## Usage Examples
|
|
22
|
+
|
|
23
|
+
### Using Snippets
|
|
24
|
+
|
|
25
|
+
Type these prefixes and press **Tab**:
|
|
26
|
+
|
|
27
|
+
- `script` + Tab → Creates full script template
|
|
28
|
+
- `if` + Tab → Creates if-else block
|
|
29
|
+
- `while` + Tab → Creates while loop
|
|
30
|
+
- `variable` + Tab → Declares a variable
|
|
31
|
+
- `set` + Tab → Sets variable value
|
|
32
|
+
- `print` + Tab → Print statement
|
|
33
|
+
- `log` + Tab → Log with timestamp
|
|
34
|
+
|
|
35
|
+
### Auto-completion
|
|
36
|
+
|
|
37
|
+
As you type EasyCoder keywords, VS Code will show suggestions:
|
|
38
|
+
- Type `var` → suggests `variable`
|
|
39
|
+
- Type `app` → suggests `append`
|
|
40
|
+
- Type `mul` → suggests `multiply`
|
|
41
|
+
|
|
42
|
+
### Comment Toggling
|
|
43
|
+
|
|
44
|
+
- Select lines and press `Ctrl+/` to toggle comments
|
|
45
|
+
- Comments in EasyCoder start with `!`
|
|
46
|
+
|
|
47
|
+
## Testing
|
|
48
|
+
|
|
49
|
+
Open one of your existing scripts to test:
|
|
50
|
+
```bash
|
|
51
|
+
code scripts/hello.ecs
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
You should see:
|
|
55
|
+
- Syntax highlighting for keywords
|
|
56
|
+
- Colored strings and numbers
|
|
57
|
+
- IntelliSense suggestions as you type
|
|
58
|
+
- Snippet suggestions when typing common prefixes
|
|
59
|
+
|
|
60
|
+
## Troubleshooting
|
|
61
|
+
|
|
62
|
+
If the extension doesn't activate:
|
|
63
|
+
1. Reload Window: `Ctrl+Shift+P` → "Reload Window"
|
|
64
|
+
2. Check file extension is `.ecs`
|
|
65
|
+
3. Verify extension is in `~/.vscode/extensions/easycoder/`
|
|
66
|
+
4. Restart VS Code completely
|
|
67
|
+
|
|
68
|
+
## Customization
|
|
69
|
+
|
|
70
|
+
To modify the extension, edit files in:
|
|
71
|
+
`.vscode/extensions/easycoder/`
|
|
72
|
+
|
|
73
|
+
- `syntaxes/easycoder.tmLanguage.json` - Syntax highlighting rules
|
|
74
|
+
- `snippets/easycoder.json` - Code snippets
|
|
75
|
+
- `language-configuration.json` - Language behavior settings
|
|
76
|
+
|
|
77
|
+
After changes, reload VS Code to see updates.
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# Python Autocompletion Setup Guide
|
|
2
|
+
|
|
3
|
+
## Current Configuration
|
|
4
|
+
|
|
5
|
+
VS Code workspace settings have been configured for optimal Python autocompletion in `.vscode/settings.json`.
|
|
6
|
+
|
|
7
|
+
## Features Enabled
|
|
8
|
+
|
|
9
|
+
### Python IntelliSense Features:
|
|
10
|
+
1. **Type Checking** - Basic type checking for better suggestions
|
|
11
|
+
2. **Auto-Import Completions** - Automatically suggests and adds imports
|
|
12
|
+
3. **Function Parentheses** - Automatically adds `()` when completing functions
|
|
13
|
+
4. **Parameter Hints** - Shows function signatures as you type
|
|
14
|
+
5. **Inlay Hints** - Shows type information inline
|
|
15
|
+
6. **Quick Suggestions** - Fast autocompletion as you type (10ms delay)
|
|
16
|
+
7. **Tab Completion** - Press Tab to accept suggestions
|
|
17
|
+
8. **Bracket Auto-completion** - Adds brackets when completing functions
|
|
18
|
+
|
|
19
|
+
### Project-Specific Configuration:
|
|
20
|
+
- Extra paths include `easycoder/` and `plugins/` directories
|
|
21
|
+
- Workspace-wide analysis for cross-file completions
|
|
22
|
+
- Semantic highlighting enabled
|
|
23
|
+
- EasyCoder (`.ecs`) files properly associated
|
|
24
|
+
|
|
25
|
+
## Required Extension
|
|
26
|
+
|
|
27
|
+
Make sure you have the **Python extension** installed:
|
|
28
|
+
|
|
29
|
+
1. Press `Ctrl+Shift+X` to open Extensions
|
|
30
|
+
2. Search for "Python"
|
|
31
|
+
3. Install "Python" by Microsoft (if not already installed)
|
|
32
|
+
4. The extension includes **Pylance** for advanced IntelliSense
|
|
33
|
+
|
|
34
|
+
## Testing Python Autocompletion
|
|
35
|
+
|
|
36
|
+
Try opening any Python file and test:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
code easycoder/ec_core.py
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### What You Should See:
|
|
43
|
+
|
|
44
|
+
1. **Import Suggestions**: Type `import ` and see module suggestions
|
|
45
|
+
2. **Method Completion**: Type `self.` and see all available methods
|
|
46
|
+
3. **Parameter Hints**: Type a function name and `(` to see parameters
|
|
47
|
+
4. **Type Information**: Hover over variables to see type info
|
|
48
|
+
5. **Quick Info**: Hover over functions to see docstrings
|
|
49
|
+
|
|
50
|
+
### Example Test:
|
|
51
|
+
|
|
52
|
+
Open `easycoder/ec_core.py` and try:
|
|
53
|
+
- Type `self.get` - should suggest `getToken()`, `getValue()`, etc.
|
|
54
|
+
- Type `command['` - should suggest dictionary keys
|
|
55
|
+
- Hover over method names - should show docstrings
|
|
56
|
+
|
|
57
|
+
## Keyboard Shortcuts
|
|
58
|
+
|
|
59
|
+
- `Ctrl+Space` - Trigger IntelliSense manually
|
|
60
|
+
- `Ctrl+Shift+Space` - Show parameter hints
|
|
61
|
+
- `Tab` - Accept suggestion
|
|
62
|
+
- `Esc` - Dismiss suggestion
|
|
63
|
+
- `F12` - Go to definition
|
|
64
|
+
- `Alt+F12` - Peek definition
|
|
65
|
+
- `Shift+F12` - Find all references
|
|
66
|
+
|
|
67
|
+
## Customization
|
|
68
|
+
|
|
69
|
+
To adjust settings, edit `.vscode/settings.json`:
|
|
70
|
+
|
|
71
|
+
- Adjust `editor.quickSuggestionsDelay` (default: 10ms)
|
|
72
|
+
- Toggle `python.analysis.typeCheckingMode` (off/basic/strict)
|
|
73
|
+
- Enable/disable `editor.formatOnSave`
|
|
74
|
+
|
|
75
|
+
## For EasyCoder Files
|
|
76
|
+
|
|
77
|
+
The settings also enhance `.ecs` file editing:
|
|
78
|
+
- Word-based suggestions from all EasyCoder files
|
|
79
|
+
- Suggests variable names and labels you've used
|
|
80
|
+
- Works alongside the syntax highlighting
|
|
81
|
+
|
|
82
|
+
## Troubleshooting
|
|
83
|
+
|
|
84
|
+
If autocompletion isn't working:
|
|
85
|
+
|
|
86
|
+
1. **Reload Window**: `Ctrl+Shift+P` → "Reload Window"
|
|
87
|
+
2. **Check Python Extension**: Ensure it's installed and enabled
|
|
88
|
+
3. **Select Python Interpreter**: `Ctrl+Shift+P` → "Python: Select Interpreter"
|
|
89
|
+
4. **Restart Language Server**: `Ctrl+Shift+P` → "Python: Restart Language Server"
|
|
90
|
+
5. **Clear Cache**: Close VS Code, delete `.vscode/.ropeproject/` if it exists
|
|
91
|
+
|
|
92
|
+
## Additional Tips
|
|
93
|
+
|
|
94
|
+
- IntelliSense learns from your code as you type
|
|
95
|
+
- The more you work in the project, the better suggestions become
|
|
96
|
+
- Pylance indexes the entire workspace for accurate completions
|
|
97
|
+
- Use type hints in your code for even better suggestions
|
|
98
|
+
|
|
99
|
+
## Performance
|
|
100
|
+
|
|
101
|
+
Settings are optimized for:
|
|
102
|
+
- Fast suggestion display (10ms delay)
|
|
103
|
+
- Workspace-wide indexing
|
|
104
|
+
- Cross-file intelligence
|
|
105
|
+
- Module import suggestions
|
|
106
|
+
|
|
107
|
+
Reload VS Code (`Ctrl+Shift+P` → "Reload Window") to activate all settings!
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# EasyCoder Language Support for VS Code
|
|
2
|
+
|
|
3
|
+
Provides language support for EasyCoder (`.ecs`) files.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Syntax Highlighting**: Colorizes keywords, operators, strings, numbers, and comments
|
|
8
|
+
- **Code Snippets**: Quick templates for common EasyCoder patterns
|
|
9
|
+
- **Auto-completion**: IntelliSense support for EasyCoder commands
|
|
10
|
+
- **Bracket Matching**: Automatic bracket, parenthesis, and quote pairing
|
|
11
|
+
- **Comment Support**: Line comments with `!`
|
|
12
|
+
|
|
13
|
+
## Installation
|
|
14
|
+
|
|
15
|
+
To use this extension locally:
|
|
16
|
+
|
|
17
|
+
1. Copy the `easycoder` folder to your VS Code extensions directory:
|
|
18
|
+
- Linux/Mac: `~/.vscode/extensions/`
|
|
19
|
+
- Windows: `%USERPROFILE%\.vscode\extensions\`
|
|
20
|
+
|
|
21
|
+
2. Restart VS Code
|
|
22
|
+
|
|
23
|
+
3. Open any `.ecs` file to see syntax highlighting and autocompletion
|
|
24
|
+
|
|
25
|
+
## Available Snippets
|
|
26
|
+
|
|
27
|
+
Type these prefixes and press Tab to insert:
|
|
28
|
+
|
|
29
|
+
- `script` - Basic script template
|
|
30
|
+
- `variable` - Variable declaration
|
|
31
|
+
- `set` - Set variable value
|
|
32
|
+
- `if` - If-else statement
|
|
33
|
+
- `while` - While loop
|
|
34
|
+
- `print` - Print statement
|
|
35
|
+
- `log` - Log with timestamp
|
|
36
|
+
- `onerror` - Error handler
|
|
37
|
+
- `add` - Add to variable
|
|
38
|
+
- `append` - Append to array
|
|
39
|
+
- `get` - GET REST request
|
|
40
|
+
- `post` - POST REST request
|
|
41
|
+
- `open` - Open file
|
|
42
|
+
- `read` - Read from file
|
|
43
|
+
- `write` - Write to file
|
|
44
|
+
- `use` - Import plugin
|
|
45
|
+
- `goto` - Go to label
|
|
46
|
+
- `gosub` - Call subroutine
|
|
47
|
+
- `input` - Get user input
|
|
48
|
+
- `assert` - Assert condition
|
|
49
|
+
- `index` - Set array index
|
|
50
|
+
- `split` - Split string
|
|
51
|
+
|
|
52
|
+
## Keywords
|
|
53
|
+
|
|
54
|
+
The extension recognizes all EasyCoder core keywords including:
|
|
55
|
+
- Control flow: `if`, `else`, `while`, `goto`, `gosub`, `return`
|
|
56
|
+
- Variables: `variable`, `set`, `clear`
|
|
57
|
+
- Arithmetic: `add`, `multiply`, `divide`, `increment`, `decrement`
|
|
58
|
+
- Arrays: `append`, `pop`, `push`, `index`, `shuffle`
|
|
59
|
+
- I/O: `print`, `log`, `input`, `read`, `write`, `open`, `close`
|
|
60
|
+
- REST: `get`, `post`, `send`
|
|
61
|
+
- And many more...
|
|
62
|
+
|
|
63
|
+
## About EasyCoder
|
|
64
|
+
|
|
65
|
+
EasyCoder is a high-level English-like domain-specific scripting language implemented in Python.
|
|
66
|
+
|
|
67
|
+
For more information, visit: https://github.com/easycoder/easycoder-py
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"comments": {
|
|
3
|
+
"lineComment": "! "
|
|
4
|
+
},
|
|
5
|
+
"brackets": [
|
|
6
|
+
["{", "}"],
|
|
7
|
+
["[", "]"],
|
|
8
|
+
["(", ")"]
|
|
9
|
+
],
|
|
10
|
+
"autoClosingPairs": [
|
|
11
|
+
{ "open": "{", "close": "}" },
|
|
12
|
+
{ "open": "[", "close": "]" },
|
|
13
|
+
{ "open": "(", "close": ")" },
|
|
14
|
+
{ "open": "`", "close": "`", "notIn": ["string"] },
|
|
15
|
+
{ "open": "'", "close": "'", "notIn": ["string", "comment"] },
|
|
16
|
+
{ "open": "\"", "close": "\"", "notIn": ["string"] }
|
|
17
|
+
],
|
|
18
|
+
"surroundingPairs": [
|
|
19
|
+
["{", "}"],
|
|
20
|
+
["[", "]"],
|
|
21
|
+
["(", ")"],
|
|
22
|
+
["`", "`"],
|
|
23
|
+
["'", "'"],
|
|
24
|
+
["\"", "\""]
|
|
25
|
+
]
|
|
26
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "easycoder",
|
|
3
|
+
"displayName": "EasyCoder Language Support",
|
|
4
|
+
"description": "Language support for EasyCoder scripts",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"publisher": "easycoder",
|
|
7
|
+
"engines": {
|
|
8
|
+
"vscode": "^1.60.0"
|
|
9
|
+
},
|
|
10
|
+
"categories": [
|
|
11
|
+
"Programming Languages"
|
|
12
|
+
],
|
|
13
|
+
"contributes": {
|
|
14
|
+
"languages": [
|
|
15
|
+
{
|
|
16
|
+
"id": "easycoder",
|
|
17
|
+
"aliases": [
|
|
18
|
+
"EasyCoder",
|
|
19
|
+
"easycoder"
|
|
20
|
+
],
|
|
21
|
+
"extensions": [
|
|
22
|
+
".ecs"
|
|
23
|
+
],
|
|
24
|
+
"configuration": "./language-configuration.json"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"grammars": [
|
|
28
|
+
{
|
|
29
|
+
"language": "easycoder",
|
|
30
|
+
"scopeName": "source.easycoder",
|
|
31
|
+
"path": "./syntaxes/easycoder.tmLanguage.json"
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"snippets": [
|
|
35
|
+
{
|
|
36
|
+
"language": "easycoder",
|
|
37
|
+
"path": "./snippets/easycoder.json"
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Script Template": {
|
|
3
|
+
"prefix": "script",
|
|
4
|
+
"body": [
|
|
5
|
+
"script ${1:ScriptName}",
|
|
6
|
+
" ${2:! Your code here}",
|
|
7
|
+
" exit"
|
|
8
|
+
],
|
|
9
|
+
"description": "Basic script structure"
|
|
10
|
+
},
|
|
11
|
+
"Variable Declaration": {
|
|
12
|
+
"prefix": "variable",
|
|
13
|
+
"body": [
|
|
14
|
+
"variable ${1:Name}"
|
|
15
|
+
],
|
|
16
|
+
"description": "Declare a variable"
|
|
17
|
+
},
|
|
18
|
+
"Set Variable": {
|
|
19
|
+
"prefix": "set",
|
|
20
|
+
"body": [
|
|
21
|
+
"set ${1:variable} to ${2:value}"
|
|
22
|
+
],
|
|
23
|
+
"description": "Set a variable value"
|
|
24
|
+
},
|
|
25
|
+
"If Statement": {
|
|
26
|
+
"prefix": "if",
|
|
27
|
+
"body": [
|
|
28
|
+
"if ${1:condition}",
|
|
29
|
+
" ${2:! code}",
|
|
30
|
+
"else",
|
|
31
|
+
" ${3:! else code}"
|
|
32
|
+
],
|
|
33
|
+
"description": "If-else statement"
|
|
34
|
+
},
|
|
35
|
+
"While Loop": {
|
|
36
|
+
"prefix": "while",
|
|
37
|
+
"body": [
|
|
38
|
+
"while ${1:condition}",
|
|
39
|
+
"begin",
|
|
40
|
+
" ${2:! loop code}",
|
|
41
|
+
"end"
|
|
42
|
+
],
|
|
43
|
+
"description": "While loop"
|
|
44
|
+
},
|
|
45
|
+
"Print": {
|
|
46
|
+
"prefix": "print",
|
|
47
|
+
"body": [
|
|
48
|
+
"print ${1:value}"
|
|
49
|
+
],
|
|
50
|
+
"description": "Print a value"
|
|
51
|
+
},
|
|
52
|
+
"Log": {
|
|
53
|
+
"prefix": "log",
|
|
54
|
+
"body": [
|
|
55
|
+
"log ${1:message}"
|
|
56
|
+
],
|
|
57
|
+
"description": "Log a message with timestamp"
|
|
58
|
+
},
|
|
59
|
+
"Error Handler": {
|
|
60
|
+
"prefix": "onerror",
|
|
61
|
+
"body": [
|
|
62
|
+
"on error",
|
|
63
|
+
" log error",
|
|
64
|
+
" exit"
|
|
65
|
+
],
|
|
66
|
+
"description": "Error handler"
|
|
67
|
+
},
|
|
68
|
+
"Add": {
|
|
69
|
+
"prefix": "add",
|
|
70
|
+
"body": [
|
|
71
|
+
"add ${1:value} to ${2:variable}"
|
|
72
|
+
],
|
|
73
|
+
"description": "Add to a variable"
|
|
74
|
+
},
|
|
75
|
+
"Append": {
|
|
76
|
+
"prefix": "append",
|
|
77
|
+
"body": [
|
|
78
|
+
"append ${1:value} to ${2:array}"
|
|
79
|
+
],
|
|
80
|
+
"description": "Append to an array"
|
|
81
|
+
},
|
|
82
|
+
"Get REST": {
|
|
83
|
+
"prefix": "get",
|
|
84
|
+
"body": [
|
|
85
|
+
"get ${1:url} to ${2:variable}"
|
|
86
|
+
],
|
|
87
|
+
"description": "GET request"
|
|
88
|
+
},
|
|
89
|
+
"Post REST": {
|
|
90
|
+
"prefix": "post",
|
|
91
|
+
"body": [
|
|
92
|
+
"post ${1:value} to ${2:url}"
|
|
93
|
+
],
|
|
94
|
+
"description": "POST request"
|
|
95
|
+
},
|
|
96
|
+
"Open File": {
|
|
97
|
+
"prefix": "open",
|
|
98
|
+
"body": [
|
|
99
|
+
"open ${1:file} as ${2:mode}"
|
|
100
|
+
],
|
|
101
|
+
"description": "Open a file"
|
|
102
|
+
},
|
|
103
|
+
"Read File": {
|
|
104
|
+
"prefix": "read",
|
|
105
|
+
"body": [
|
|
106
|
+
"read ${1:file} to ${2:variable}"
|
|
107
|
+
],
|
|
108
|
+
"description": "Read from file"
|
|
109
|
+
},
|
|
110
|
+
"Write File": {
|
|
111
|
+
"prefix": "write",
|
|
112
|
+
"body": [
|
|
113
|
+
"write ${1:value} to ${2:file}"
|
|
114
|
+
],
|
|
115
|
+
"description": "Write to file"
|
|
116
|
+
},
|
|
117
|
+
"Use Plugin": {
|
|
118
|
+
"prefix": "use",
|
|
119
|
+
"body": [
|
|
120
|
+
"use ${1:plugin-name}"
|
|
121
|
+
],
|
|
122
|
+
"description": "Import a plugin"
|
|
123
|
+
},
|
|
124
|
+
"Fork Process": {
|
|
125
|
+
"prefix": "fork",
|
|
126
|
+
"body": [
|
|
127
|
+
"fork to ${1:label}"
|
|
128
|
+
],
|
|
129
|
+
"description": "Fork a new process"
|
|
130
|
+
},
|
|
131
|
+
"Go to Label": {
|
|
132
|
+
"prefix": "goto",
|
|
133
|
+
"body": [
|
|
134
|
+
"go to ${1:label}"
|
|
135
|
+
],
|
|
136
|
+
"description": "Go to a label"
|
|
137
|
+
},
|
|
138
|
+
"Gosub": {
|
|
139
|
+
"prefix": "gosub",
|
|
140
|
+
"body": [
|
|
141
|
+
"gosub to ${1:label}"
|
|
142
|
+
],
|
|
143
|
+
"description": "Call a subroutine"
|
|
144
|
+
},
|
|
145
|
+
"Input": {
|
|
146
|
+
"prefix": "input",
|
|
147
|
+
"body": [
|
|
148
|
+
"input ${1:variable} with ${2:prompt}"
|
|
149
|
+
],
|
|
150
|
+
"description": "Get user input"
|
|
151
|
+
},
|
|
152
|
+
"Assert": {
|
|
153
|
+
"prefix": "assert",
|
|
154
|
+
"body": [
|
|
155
|
+
"assert ${1:condition} with ${2:message}"
|
|
156
|
+
],
|
|
157
|
+
"description": "Assert a condition"
|
|
158
|
+
},
|
|
159
|
+
"Index Array": {
|
|
160
|
+
"prefix": "index",
|
|
161
|
+
"body": [
|
|
162
|
+
"index ${1:variable} to ${2:index}"
|
|
163
|
+
],
|
|
164
|
+
"description": "Set array index"
|
|
165
|
+
},
|
|
166
|
+
"Split String": {
|
|
167
|
+
"prefix": "split",
|
|
168
|
+
"body": [
|
|
169
|
+
"split ${1:string} on ${2:delimiter} into ${3:array}"
|
|
170
|
+
],
|
|
171
|
+
"description": "Split a string"
|
|
172
|
+
}
|
|
173
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
|
|
3
|
+
"name": "EasyCoder",
|
|
4
|
+
"scopeName": "source.easycoder",
|
|
5
|
+
"patterns": [
|
|
6
|
+
{
|
|
7
|
+
"include": "#comments"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"include": "#keywords"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"include": "#strings"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"include": "#numbers"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"include": "#operators"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"include": "#labels"
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"repository": {
|
|
26
|
+
"comments": {
|
|
27
|
+
"patterns": [
|
|
28
|
+
{
|
|
29
|
+
"name": "comment.line.exclamation.easycoder",
|
|
30
|
+
"match": "!.*$"
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
"keywords": {
|
|
35
|
+
"patterns": [
|
|
36
|
+
{
|
|
37
|
+
"name": "keyword.control.easycoder",
|
|
38
|
+
"match": "\\b(add|append|assert|begin|clear|close|create|debug|decrement|delete|divide|download|end|exit|file|fork|get|go|goto|gosub|if|else|import|increment|index|init|input|load|lock|log|module|multiply|negate|on|open|pop|post|print|push|put|read|release|replace|return|run|save|script|send|set|shuffle|split|ssh|stack|stop|system|take|toggle|truncate|unlock|use|variable|wait|while|write)\\b"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "keyword.operator.easycoder",
|
|
42
|
+
"match": "\\b(to|from|in|of|with|by|as|at|into|or|and|not|giving|size|binary|directory|error|step|compile|program|custom|stack)\\b"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"name": "storage.type.easycoder",
|
|
46
|
+
"match": "\\b(variable|file|stack|ssh)\\b"
|
|
47
|
+
}
|
|
48
|
+
]
|
|
49
|
+
},
|
|
50
|
+
"strings": {
|
|
51
|
+
"patterns": [
|
|
52
|
+
{
|
|
53
|
+
"name": "string.quoted.backtick.easycoder",
|
|
54
|
+
"begin": "`",
|
|
55
|
+
"end": "`",
|
|
56
|
+
"patterns": [
|
|
57
|
+
{
|
|
58
|
+
"name": "constant.character.escape.easycoder",
|
|
59
|
+
"match": "\\\\."
|
|
60
|
+
}
|
|
61
|
+
]
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"name": "string.quoted.single.easycoder",
|
|
65
|
+
"begin": "'",
|
|
66
|
+
"end": "'",
|
|
67
|
+
"patterns": [
|
|
68
|
+
{
|
|
69
|
+
"name": "constant.character.escape.easycoder",
|
|
70
|
+
"match": "\\\\."
|
|
71
|
+
}
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"name": "string.quoted.double.easycoder",
|
|
76
|
+
"begin": "\"",
|
|
77
|
+
"end": "\"",
|
|
78
|
+
"patterns": [
|
|
79
|
+
{
|
|
80
|
+
"name": "constant.character.escape.easycoder",
|
|
81
|
+
"match": "\\\\."
|
|
82
|
+
}
|
|
83
|
+
]
|
|
84
|
+
}
|
|
85
|
+
]
|
|
86
|
+
},
|
|
87
|
+
"numbers": {
|
|
88
|
+
"patterns": [
|
|
89
|
+
{
|
|
90
|
+
"name": "constant.numeric.easycoder",
|
|
91
|
+
"match": "\\b\\d+(\\.\\d+)?\\b"
|
|
92
|
+
}
|
|
93
|
+
]
|
|
94
|
+
},
|
|
95
|
+
"operators": {
|
|
96
|
+
"patterns": [
|
|
97
|
+
{
|
|
98
|
+
"name": "keyword.operator.comparison.easycoder",
|
|
99
|
+
"match": "(==|!=|<=|>=|<|>)"
|
|
100
|
+
}
|
|
101
|
+
]
|
|
102
|
+
},
|
|
103
|
+
"labels": {
|
|
104
|
+
"patterns": [
|
|
105
|
+
{
|
|
106
|
+
"name": "entity.name.label.easycoder",
|
|
107
|
+
"match": "^\\s*[A-Za-z_][A-Za-z0-9_]*:"
|
|
108
|
+
}
|
|
109
|
+
]
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"python.analysis.typeCheckingMode": "basic",
|
|
3
|
+
"python.analysis.autoImportCompletions": true,
|
|
4
|
+
"python.analysis.completeFunctionParens": true,
|
|
5
|
+
"python.analysis.autoFormatStrings": true,
|
|
6
|
+
"python.analysis.inlayHints.functionReturnTypes": true,
|
|
7
|
+
"python.analysis.inlayHints.variableTypes": true,
|
|
8
|
+
"python.languageServer": "Pylance",
|
|
9
|
+
"python.analysis.extraPaths": [
|
|
10
|
+
"${workspaceFolder}/easycoder",
|
|
11
|
+
"${workspaceFolder}/plugins"
|
|
12
|
+
],
|
|
13
|
+
"python.autoComplete.addBrackets": true,
|
|
14
|
+
"python.analysis.indexing": true,
|
|
15
|
+
"editor.quickSuggestions": {
|
|
16
|
+
"other": true,
|
|
17
|
+
"comments": false,
|
|
18
|
+
"strings": true
|
|
19
|
+
},
|
|
20
|
+
"editor.suggest.insertMode": "replace",
|
|
21
|
+
"editor.suggestSelection": "first",
|
|
22
|
+
"editor.tabCompletion": "on",
|
|
23
|
+
"editor.parameterHints.enabled": true,
|
|
24
|
+
"editor.quickSuggestionsDelay": 10,
|
|
25
|
+
"[python]": {
|
|
26
|
+
"editor.defaultFormatter": "ms-python.python",
|
|
27
|
+
"editor.formatOnSave": false,
|
|
28
|
+
"editor.codeActionsOnSave": {
|
|
29
|
+
"source.organizeImports": "explicit"
|
|
30
|
+
},
|
|
31
|
+
"editor.wordBasedSuggestions": "matchingDocuments"
|
|
32
|
+
},
|
|
33
|
+
"[easycoder]": {
|
|
34
|
+
"editor.quickSuggestions": {
|
|
35
|
+
"other": true,
|
|
36
|
+
"comments": false,
|
|
37
|
+
"strings": true
|
|
38
|
+
},
|
|
39
|
+
"editor.wordBasedSuggestions": "allDocuments",
|
|
40
|
+
"editor.suggest.showWords": true
|
|
41
|
+
},
|
|
42
|
+
"files.associations": {
|
|
43
|
+
"*.ecs": "easycoder"
|
|
44
|
+
},
|
|
45
|
+
"editor.semanticHighlighting.enabled": true,
|
|
46
|
+
"python.analysis.diagnosticMode": "workspace"
|
|
47
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: easycoder
|
|
3
|
-
Version: 251104.
|
|
3
|
+
Version: 251104.2
|
|
4
4
|
Summary: Rapid scripting in English
|
|
5
5
|
Keywords: compiler,scripting,prototyping,programming,coding,python,low code,hypertalk,computer language,learn to code
|
|
6
6
|
Author-email: Graham Trott <gtanyware@gmail.com>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import sys
|
|
2
2
|
|
|
3
|
-
class FatalError:
|
|
3
|
+
class FatalError(BaseException):
|
|
4
4
|
def __init__(self, compiler, message):
|
|
5
5
|
compiler.showWarnings()
|
|
6
6
|
lino = compiler.tokens[compiler.index].lino
|
|
@@ -58,4 +58,9 @@ class Token:
|
|
|
58
58
|
self.token = token
|
|
59
59
|
|
|
60
60
|
class Object():
|
|
61
|
-
|
|
61
|
+
"""Dynamic object that allows arbitrary attribute assignment"""
|
|
62
|
+
def __setattr__(self, name: str, value) -> None:
|
|
63
|
+
self.__dict__[name] = value
|
|
64
|
+
|
|
65
|
+
def __getattr__(self, name: str):
|
|
66
|
+
return self.__dict__.get(name)
|