You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+46-1Lines changed: 46 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,7 +16,50 @@ Document some advanced types so users may try them out and provide feedback. The
16
16
17
17
- Read more in the extension documentation
18
18
19
-
IDL 9.1 introduces new, command-line based progress bars. We have a first-pass of support for these progress bars inside IDL Notebooks.
19
+
IDL 9.1 introduces new, command-line based progress bars. We have a first-pass of support for these progress bars inside IDL Notebooks (not all types are supported).
20
+
21
+
## 4.7.0 - November 2024
22
+
23
+
Added the ability to statically determine the return types for functions and function methods that don't have documentation. This means that, for the following example, we properly detect that we return an IDL Long (because of `compile_opt idl2`):
24
+
25
+
```idl
26
+
function myFunc
27
+
compile_opt idl2
28
+
return, 42 ; or is it 84?
29
+
end
30
+
```
31
+
32
+
This marks the first step of an iterative process to automatically detect types from code when you don't have strict documentation. We can also, in the future, check to make sure actual return values match docs.
33
+
34
+
In order to detect types from your code, we had to make some pretty big changes to the language server in order to properly resolve types that don't come from documentation. With that, if you notice any odd behaviors or issues, please reach out to us on Github to let us know of any problems. For large workspaces, such as the IDL lib folder, this means it will take about 1.5-2.5 more seconds to parse your code (depending on complexity of your code base and how many routines are called in other files).
35
+
36
+
In order for our type detection functionality to work correctly, we did have to revert a change we recently made to reduce long-term memory usage of the language server.
37
+
38
+
However, we did tweak the in-memory cache for parsed files to optimize performance. We no longer copy complex data structures which adds a 10-15% performance improvement parse speed and helps reduce memory usage.
39
+
40
+
Optimized the language server change detection process to focus on only routines/globals that have changed and not everything in a file (change detection is a process for validating usage of routines in other files when the source definition is updated).
41
+
42
+
Changed the error message reported when we can't find a structure definition. This adds some context for why we might not know about a structure definition to help users who aren't following best practices/standards.
43
+
44
+
Fixed a bug where code actions were not appearing in notebook cells.
45
+
46
+
Fixed an issue where code actions, in notebooks, incorrectly fixed issues on the first line of a cell.
47
+
48
+
Fixed an issue where the language server was not correctly detecting pointers being de-referenced. This caused false errors for "standalone expressions" to be reported and for formatting to not function correctly.
49
+
50
+
Update extension docs with the latest version of node.js that we require (to work around language server crashes).
51
+
52
+
Updated hover help packaged with the extension with ENVI 6.1, IDL 9.1, and ENVI Deep Learning 3.0.1 docs
53
+
54
+
Tweak the logic for how we respond to settings changes for problems that we report. This change means, as you change which problems you want reported in real-time, the problems tab in VSCode will add/remove problems that you do/don't want to see. Previously you would need to restart VSCode for the changes to take effect.
55
+
56
+
Improved the logic when checking if we report problems or not for a file to account for the folder on IDL's path being recursive or not.
57
+
58
+
Fixed an issue where, when disabling problems from duplicate routines, they were still being reported.
59
+
60
+
Updating our formatting logic to add a final line feed or carriage return after the last line of a file when formatting your code.
61
+
62
+
POtential fix to resolve canonical (true) filepaths when you have symbolic links in your workspace or on IDL's search path. This should fix a problem where the same file was incorrectly having two paths and reporting duplicate problems.
20
63
21
64
## 4.6.2 - September 2024
22
65
@@ -32,6 +75,8 @@ Fixed an issue where, from the JSON settings editor, a valid extension setting w
32
75
33
76
Fixed an issue where the "don't ask again" options didn't honor your choice for using IDL as the formatter.
34
77
78
+
Fixed an issue where "none" style for functions and procedures was not being honored as expected.
An open-source extension which brings IDL (Interactive Data Language) to Visual Studio Code! This extension does _not_ include IDL, but you can download it from our website [here](https://portal.nv5geospatialsoftware.com/).
38
34
39
-
**4.0.0 is here!**
35
+
This extension includes:
40
36
41
-
This release headlines our newest feature: IDL Notebooks! The IDL Notebook format is standalone and only requires this extension to function (no extra dependencies on Python or Jupyter).
37
+
- A full-featured IDL code editor, with variable type detection, auto complete, chromacoding, problem reporting, and code formatting
42
38
43
-
Within the extension, you'll find a new sidebar entry to help create a new notebook, open IDL and ENVI Notebook examples, and convert your IDL Notebooks to a PRO file as well. If you have questions, feel free to reach out to us on GitHub with any feedback or issues you encounter.
39
+
- Does not require IDL to be installed to write/edit code. IDL is only required when debugging/running code or using IDL Notebooks.
44
40
45
-
In addition to this, we have revamped our tools for styling/formatting your code to include other case styles like pascal and camel case.
41
+
- An integrated debugger with breakpoints, or run command-line IDL within the VS Code terminal
46
42
47
-
That's not all that is included in this release, so check out the [CHANGELOG.md](./CHANGELOG.md) for full details.
43
+
- Native support IDL Notebooks with embedded graphics and save to PDF (this is from VSCode, does not require Python)
48
44
49
-
> If you are looking to contribute, or get your development environment setup, see [CONTRIBUTING.md](./CONTRIBUTING.md).
45
+
- Hover help contains the complete documentation for ENVI and IDL, including examples that you can open in IDL Notebooks.
50
46
51
-
---
47
+
- Create routine-definition documentation for routines within SAVE files or DLMs
52
48
53
-
This extension adds syntax highlighting, code snippets, debugging, problem reporting (undefined variables and syntax errors, 100+ in total!), IDL Notebooks, and much more for the Interactive Data Language (IDL) from NV5 Geospatial Software (formerly Research Systems, Inc.).
54
-
55
-
For a full list of changes, see [CHANGELOG.md](./CHANGELOG.md) for lots of details.
56
-
57
-
## IDL Requirement
49
+
- Support for internationalization
58
50
59
-
Using the "debug" sessions of IDL requires that you have a version of IDL with lists, hashes, and orderedhashes (and the ability to parse/serialize JSON).
51
+
- Submit a bug/feature for adding languages. Hopefully they are for a language that you speak, so you could also help with the translation :)
60
52
61
-
The extension is tested against:
53
+
Check out our [official docs site](https://interactive-data-language.github.io/vscode-idl/) to learn more about these features and what else is included in the extension.
62
54
63
-
- IDL 8.9
55
+
##IDL and ENVI Requirement
64
56
65
-
-IDL 9.0
57
+
You do not need IDL installed to write code with this extension. If you are using IDL Notebooks, the debug sessions of IDL, or running IDL in a terminal window, you will need to have IDL installed on the same machine where VSCode is running.
66
58
67
-
Anything else is use-at-your-own-risk and may not work.
59
+
While there are many versions of IDL out there, we test the extension against the two latest versions of IDL. As of right now, that would be IDL 9.1 and IDL 9.0. Any other version is use-at-your-own-risk and may not work (you need lists, hashes, and ordered hashes for it to function).
68
60
69
-
Notebooks have specific version requirements for IDL and ENVI:
61
+
IDL Notebooks have specific version requirements for IDL and ENVI:
70
62
71
63
- For IDL, you'll need IDL 8.8.0 or newer (enforced, and checked, when notebooks start)
72
64
73
65
- For ENVI, you'll need ENVI 6.0 or ENVI 5.7. Any other version of ENVI is not guaranteed to work.
74
66
75
-
## Features
76
-
77
-
- IDL Notebooks for a new, modern, and ad-hoc way to develop IDL code! Check out the examples to learn about how they work (accessible through the sidebar of the extension).
78
-
79
-
- Before compiling any code, more than 100 syntax errors/problems/hints are detected and reported to users.
80
-
81
-
- Syntax errors you encounter while writing code offer information/details on why they are problems to help you learn the in's and out's of IDL better.
82
-
83
-
- Syntax-based highlighting to make it easy to visually catch errors. This new-and-improved highlighting experience also accentuates keywords and operators like never before. Actual colors will depend on your theme and there is a guide for how you can customize token colors/appearances for IDL.
84
-
85
-
- Ability to format your code on save and have control over key formatting preferences. The default matches what we think of as a modern approach and styling to IDL code that will be welcoming to new users.
86
-
87
-
- AutoDoc which, if enabled, automatically adds/updates documentation for user routines as you save your files. Works for routines and structure definitions found within "\_\_define" named procedures
88
-
89
-
-**Debugging!** A preview release of debugging has been implemented and is stable enough for use. **Note**: this is going to be re-worked over the course of the next 3-6 months
90
-
91
-
- Hover help for user-defined variables, functions, procedures, arguments, and keywords.
92
-
93
-
- Integrated hover help for core IDL and ENVI routines, their keywords, and structure properties.
94
-
95
-
- Integrated support for ENVI and IDL task files in workspaces and on IDL's path, including auto complete and hover help
96
-
97
-
- Go-to definition for functions, procedures, and methods from user defined routines
98
-
99
-
- Extensive auto-complete built on the IDL and ENVI documentation. Auto-complete is also automatic (you don't have to press Ctrl + Space in order to trigger it).
100
-
101
-
- Provides a high-level outline of your code with global constructs (i.e. routines and main level programs)
102
-
103
-
- Profiling. Get basic profiling information for your routines and access via buttons or commands.
104
-
105
-
- Custom IDL color themes. If you are feeling like you miss the IDL Workbench, then the "Retro IDL" theme is for you! Two more dark themes are included and are "Novus IDL" and "Neon IDL."
106
-
107
-
- Finds `TODO` statements just like the workbench
108
-
109
-
- Support for VSCode's auto-comment (Ctrl+/ or command+/)
110
-
111
-
- Code snippets for common code blocks
112
-
113
-
- Colorization and schema validation of ENVI and IDL task files.
114
-
115
-
- Commands (Ctrl+shift+p) for terminal and debug sessions:
116
-
117
-
- Opening an IDL session
118
-
119
-
- Compiling
120
-
121
-
- Running PRO files (run button in the workbench)
122
-
123
-
- Executing PRO files as batch files (single line statements)
124
-
125
-
- Execution controls (stop, in, over, out) for IDL in a terminal
126
-
127
-
- Plus some others!
128
-
129
-
- Support for internationalization
130
-
131
-
- Submit a bug/feature for adding languages. Hopefully they are for a language that you speak, so you could also help with the translation :)
132
-
133
67
## Known Issues
134
68
135
69
- Not an issue, but structure definitions are _only_ found in procedures that end with "\_\_define" following IDL's standard. If you define structures anywhere else, they will not be detected and you'll see a error regarding unknown structures.
@@ -138,11 +72,9 @@ Notebooks have specific version requirements for IDL and ENVI:
138
72
139
73
When the IDL extension starts, if it finds node.js on your path, it will automatically start the language server using node, which should remove this limitation. If you still see memory errors, then reach out to us on GitHub and let us know.
140
74
141
-
To install node.js, get the latest v18 release from https://nodejs.org/en/download/releases.
142
-
143
-
- As a part of the code that we parse, we also do our best to statically determine types and do type checking. If you notice issues with type checks being wrong, or there are incorrectly documented routines, let us know!
75
+
To install node.js, get the latest v20 release from https://nodejs.org/en/download/releases.
144
76
145
-
- The debugger is back and has some improvements. However, this is still a pre-release version of the ability to interactively run IDL code. For the next IDL release in late 2023 we are hoping to have this dramatically improved. Here's a few important things to know:
77
+
- The debugger is back and has some improvements. However, this is still a pre-release version of the ability to interactively run IDL code. Here's a few important things to know:
146
78
147
79
- Pausing is not supported on Windows, this will hopefully be resolved in the near future. Currently it kills the IDL process and is being worked on.
148
80
@@ -206,6 +138,6 @@ To learn more about what we collect and why, view our [USAGE_METRICS](./extensio
0 commit comments