Skip to content

Nautilus009/free-bidi

Repository files navigation

Free Bidi VS Code Extension Overview The Free Bidi extension for Visual Studio Code simplifies working with COBOL files containing RTL language text. It automatically converts files from a configurable RTL encoding (default: ISO-8859-8) to UTF-8, adding Left-to-Right Override (LRO, \u202D) markers before RTL language text to ensure proper display. The converted files are stored in a .freebidi directory and opened in VS Code with UTF-8 encoding. When typing new RTL language characters in these converted files, the extension automatically inserts LRO markers to maintain consistent text direction. Features

Automatic Conversion: Converts COBOLIT files (.cob, .inc, .cpy, .pco) with RTL language text from a configurable RTL encoding (default: ISO-8859-8) to UTF-8 with LRO markers. Smart Tab Management: When opening a source file that has an existing .freebidi version, automatically closes the original file tab and opens only the freebidi version. Line Number Preservation: When opening a file with a specific line number (e.g., src/file.cob:100), the freebidi version opens at the same line position. Temporary Files: Saves converted files in a .freebidi directory, which are automatically deleted when their tabs are closed. Real-Time RTL language Support: Automatically inserts LRO markers (\u202D) before new RTL language characters typed in .freebidi files. Encoding Enforcement: Ensures .freebidi files are opened with UTF-8 encoding, regardless of VS Code?s files.encoding or files.autoGuessEncoding settings. Non-Recursive: Prevents recursive file opening for .freebidi files. Save Back: Updates the original file using the configured RTL encoding (default: ISO-8859-8) when saving changes to the .freebidi file, removing LRO markers.

Installation

Install the Extension:

Open VS Code. Go to the Extensions view (Ctrl+Shift+X or Cmd+Shift+X on macOS). Search for Free Bidi by NLTCInc. Click Install.

Set Up Dependencies:

Ensure Node.js is installed for development (optional). Run npm install in the extension directory (~/free-bidi) to install dependencies like iconv-lite.

Configure VS Code Settings:

Open VS Code settings (Ctrl+, or Cmd+, on macOS). Add the following to settings.json for the best experience:{ "editor.renderControlCharacters": false, "editor.unicodeHighlight.invisibleCharacters": false, "freeBidi.rtlEncoding": "ISO-8859-8" }

The settings "editor.renderControlCharacters": false and "editor.unicodeHighlight.invisibleCharacters": false prevent visual glyphs for LRO markers and other invisible Unicode characters, ensuring a clean editing experience.

Git Recommendation

If your project uses Git, add the temporary .freebidi/ directory to .gitignore so converted working files are not tracked:

.freebidi/

Usage

Open a COBOL File:

Open a COBOLIT file (.cob, .inc, .cpy, or .pco) containing RTL language text (e.g., /Users/orennissan/Desktop/test.cob). Set the language mode to COBOLIT (Ctrl+Shift+P ? ?Change Language Mode? ? COBOLIT).

Automatic Conversion:

The extension uses freeBidi.rtlEncoding from settings.json (default: ISO-8859-8) and creates a UTF-8 version with LRO markers in the .freebidi directory (e.g., /Users/orennissan/Desktop/.freebidi/test.cob). The converted file opens automatically in VS Code with UTF-8 encoding.

Edit RTL language Text:

When typing RTL language characters in the .freebidi file, the extension automatically inserts \u202D before each RTL language sequence to maintain text direction.

Save Changes:

Saving the .freebidi file updates the original file, removing LRO markers and encoding it back using freeBidi.rtlEncoding (default: ISO-8859-8).

Close File:

Closing the .freebidi file deletes it to keep your workspace clean.

Manual Conversion

Run the command Free Bidi Editor: Convert File (Ctrl+Shift+P ? type ?Free Bidi?) to manually convert the active COBOLIT file (.cob, .inc, .cpy, or .pco).

Troubleshooting

File Not Converting:

Ensure the file has the COBOLIT language ID. Check the Output panel (free-bidi) for error messages. Verify the file contains RTL language characters.

Encoding Issues:

Confirm the .freebidi file opens with UTF-8 (check the status bar). Run the following to inspect the file:xxd -l 3 /Users/orennissan/Desktop/.freebidi/test.cob

Expect: 00000000: efbb bf ... (UTF-8 BOM).

LRO Not Inserted:

Ensure you're editing the .freebidi file, not the original .cob file. Check the Output panel for Inserted LRO before RTL language text....

Extension Not Activating:

Check the Output panel for Free Bidi extension activated on platform: .... Disable conflicting extensions like redhat.java (see settings above). Clear workspace storage:rm -rf ~/Library/Application\ Support/Code/User/workspaceStorage/9eee23559e7c9649f178964da0909a5c

Debugging:

Open the extension in VS Code (~/free-bidi). Set breakpoints in src/extension.ts. Run ?Run Extension? in the Debug view (F5). Share Debug Console and Output panel logs if issues persist.

Development

Clone the Repository: git clone https://github.com/Nautilus009/free-bidi.git ~/free-bidi

Install Dependencies: cd ~/free-bidi npm install

Compile: npm run compile

Test: npm test

Publish: npx vsce login NLTCInc npx vsce publish

Contact For issues, feature requests, or contributions, visit the GitHub repository or file an issue.

About

VS Code extension to convert ISO-8859-8 COBOL files to UTF-8 with LRO for Hebrew text

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors