{"id":24185280,"url":"https://github.com/oraopensource/oracle-and-atom","last_synced_at":"2026-02-03T16:03:00.060Z","repository":{"id":145405546,"uuid":"46465552","full_name":"OraOpenSource/oracle-and-atom","owner":"OraOpenSource","description":"Recommended Atom packages for Oracle developers","archived":false,"fork":false,"pushed_at":"2017-04-25T03:28:36.000Z","size":21,"stargazers_count":11,"open_issues_count":3,"forks_count":0,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-06-13T10:07:02.214Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OraOpenSource.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2015-11-19T03:40:42.000Z","updated_at":"2023-04-21T15:26:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"19bdf81d-74fc-4355-bf43-11928c1fa51d","html_url":"https://github.com/OraOpenSource/oracle-and-atom","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/OraOpenSource/oracle-and-atom","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OraOpenSource%2Foracle-and-atom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OraOpenSource%2Foracle-and-atom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OraOpenSource%2Foracle-and-atom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OraOpenSource%2Foracle-and-atom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OraOpenSource","download_url":"https://codeload.github.com/OraOpenSource/oracle-and-atom/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OraOpenSource%2Foracle-and-atom/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261433936,"owners_count":23157196,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-13T11:19:38.351Z","updated_at":"2026-02-03T16:02:55.023Z","avatar_url":"https://github.com/OraOpenSource.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Atom packages for Oracle Developers\n\n[Atom](https://atom.io/) is a free open source powerful text editor. One of its greatest features is the ability to add packages to enhance its functionality. This document covers recommended packages for Oracle developers that use Atom.\n\n- [Editor enhancements](#editor-enhancements)\n    - [Project management](#project-management)\n    - [Minimap](#minimap)\n    - [File icons](#file-icons)\n    - [Git](#git)\n    - [Editing remote files](#editing-remote-files)\n    - [Terminal emulator](#terminal-emulator)\n- [Development enhancements](#development-enhancements)\n    - [Oracle syntax highlighting](#oracle-syntax-highlighting)\n    - [Symbols navigation](#symbols-navigation)\n    - [Source code alignment](#source-code-alignment)\n    - [Oracle compilation](#oracle-compilation)\n    - [Script runner](#script-runner)\n    - [Pigments](#pigments)\n    - [Colour picker](#colour-picker)\n\n## Editor enhancements\n\n### Project management\n\nTo quickly navigate around your projects, you can install the extension [`project-manager`](https://atom.io/packages/project-manager).\n\nIt allows you to set up a configuration of your active projects so that you can quickly switch between them. The configuration for this is a `cson` file located in your atom user directory - `$HOME/.atom/projects.cson` most typically. You can quickly access it by opening the command palette (`ctrl+shift+p`) and searching for `Edit projects`.\n\n![](https://cloud.githubusercontent.com/assets/1747643/11432340/58a546b2-9500-11e5-8026-d44fa9b0c798.png)\n\nThen, for each project you define properties such as `title`, `paths`, `icon` and `settings` - there are others, which you can read about on the packages README.\n\nTo get your project added without manually filling out the properties, you can search for `Save Project` in the command palette and it will prompt you for the name of the project, which adds the entries for `title` and `paths` in the project configuration file.\n\nSo for example, I have one project set up for my Atom user directory, as:\n\n```cson\natomConfig:\n  title: \"Atom user directory\"\n  paths: [\n    \"/home/trent/.atom\"\n  ]\n  icon: \"icon-tools\"\n  settings:\n    \"*\":\n      \"editor.tabLength\": 2\n```\n\nThis means I can quickly open this project by hitting `alt+shift+P` and searching for `atom user directory`.\n\n![](https://cloud.githubusercontent.com/assets/1747643/11432417/1d6b2cd6-9502-11e5-84a1-cd0137508814.png)\n\n#### Settings\n\nAny settings you can apply system wide, you can also apply in the project configuration, with `*` being the wild card for all file types. You could alternatively have specific settings for specific language scopes. For instance, in the documentation, it has the example:\n\n```cson\n'.source.coffee':\n  'editor.tabLength': 2\n  'editor.preferredLineLength': 80\n```\n\nIf you look at the grammar [specification](https://github.com/atom/language-coffee-script/blob/master/grammars/coffeescript.cson) for CoffeeScript, you will see it's defined the `scopeName` as `source.coffee` which is why the above setting is mapped to `.source.coffee`.\n\n#### Icon\n\nThe icons you can use against your projects are based on [GitHub Octicons](https://octicons.github.com/). For example, on the Atom user directory project I set up earlier, I specified the icon as `icon-tools`. If you look at the grid of icons, you will find that particular icon towards the bottom.\n\nClicking onto will give you the class name as `octicon-tools`. So in our project settings, we use that same class name, only replacing `octicon` with `icon` - thus becoming `icon-tools`.\n\n\n![](https://cloud.githubusercontent.com/assets/1747643/11433288/1e8bdaea-950f-11e5-9fec-de144f7ba02a.png)\n\n### Minimap\n\nThe extension [`minimap`](https://atom.io/packages/minimap) gives a zoomed out view of the code, on either the left or right hand side of the file that you can drag to scroll to a specific portion of the code.\n\n![](https://cloud.githubusercontent.com/assets/1747643/11354495/f057cc2c-929f-11e5-8d31-d7252f001ec9.png)\n\n### File icons\n\nThe extensions [`file-icons`](https://atom.io/packages/file-icons) adds icons specific to a files extension - just to add a bit of eye candy, and one more visual recognition of the file type. The icons are based on FontAwesome (and derivative(s)) fonts.\n\nAs a little example, before using this package:\n\n![](https://cloud.githubusercontent.com/assets/1747643/11354338/d6529614-929e-11e5-9bb9-b7325e5aaaf2.png)\n\nand after:\n\n![](https://cloud.githubusercontent.com/assets/1747643/11354347/e8358f62-929e-11e5-832c-a4b085ec07b6.png)\n\nnote: The icon on `foo.pks` in the screenshot above hasn't yet made it into the package - but gives an idea of what is possible\n\n### Git\n\nIf you would like to be able to perform git operations directly from your editor, you want the extension [`git-plus`](https://atom.io/packages/git-plus). This extension adds commands into the command palette and through context menu's so that you can quickly perform git-operations straight out of your editor.\n\nFor example, From the command pallette, you can run:\n\n* `Git Plus: Add` to add the active file\n* `Git Plus: Add and Commit` to add the active file and trigger a commit\n* `Git Plus: Commit` to commit all staged files\n\nAnd many more.\n\n![image](https://cloud.githubusercontent.com/assets/1747643/25365292/0c2ee112-29ab-11e7-8085-a4953d3f9513.png)\n\nIf you are more of a point-and-click type of person, you can access these commands by right clicking a file in the tree. There will be a menu entry for Git Plus where you can access a sub-set of available commands.\n\n![image](https://cloud.githubusercontent.com/assets/1747643/25365325/4eeb4374-29ab-11e7-9732-b7de7146ee52.png)\n\n### Editing remote files\n\nThe extension [`remote-edit`](https://atom.io/packages/remote-edit) allows editing of files from ftp/sftp.\n\nTo set up a new host, open the command palette and search for `remote edit: new host Sftp`\n\n![image](https://cloud.githubusercontent.com/assets/1747643/25269002/37fa98a8-26be-11e7-9490-29a5788e9baf.png)\n\n![image](https://cloud.githubusercontent.com/assets/1747643/25268955/091d142a-26be-11e7-9a56-a9c68861095b.png)\n\nThis configuration gets serialised into the default config: `~/.atom/remoteEdit.json` (can be changed through settings)\n\nOnce that is set up, you can open those files by opening the `remote-edit` browse dialog - accessed by the command `Remote edit: Browse`. This will bring up a list of saved hosts that you can then browse.\n\n![image](https://cloud.githubusercontent.com/assets/1747643/25269394/c88c5da6-26bf-11e7-8562-3d92031880e4.png)\n\n![image](https://cloud.githubusercontent.com/assets/1747643/25269419/e55a3142-26bf-11e7-84b2-956f6d96d435.png)\n\nOne minor issue that I noticed, is that it doesn't show hidden files - and typing them in manually also doesn't load the file.\n\n### Terminal emulator  \n\nA common requirement for developers is to be able to access a terminal from within the editor. Whilst there are a number of packages that come with one implementation or another, in my testing I found [`platformio-ide-terminal`](https://atom.io/packages/platformio-ide-terminal) to work best (another popular one being `terminal-plus`, but unfortunately didn't seem to be working on my Linux based system).\n\nOnce installed, you will see a `+` and `x` symbol in the bottom left hand side of your status bar. Clicking on the `+` will open up a new console (you can have more than one).\n\n![image](https://cloud.githubusercontent.com/assets/1747643/25366732/f2d61be0-29b4-11e7-9f82-f808a0445699.png)\n\n![image](https://cloud.githubusercontent.com/assets/1747643/25366745/08e253f4-29b5-11e7-8827-fad01904e01e.png)\n\nOne \"feature\" that I found was that when running `git status`, then changes would come in with a drop shadow which made it difficult to read.\n\n![image](https://cloud.githubusercontent.com/assets/1747643/25366792/5e64136c-29b5-11e7-9b89-f3841b24be42.png)\n\nTo get around this, I added the following to my user stylesheet:\n\n```css\n//adapted from: https://github.com/jeremyramin/terminal-plus/issues/124\n.platformio-ide-terminal.terminal-view .xterm \u003e .terminal {\n    text-shadow: none;\n}\n```\n\nAfter this change, it comes through more readable as:\n\n![image](https://cloud.githubusercontent.com/assets/1747643/25366809/832f5cf6-29b5-11e7-86e6-12d7752cfa02.png)\n\n## Development enhancements\n\n### Oracle syntax highlighting\n\nSyntax highlighting for Oracle (PL/SQL) based code files is made available through the extension [`language-oracle`](https://atom.io/packages/language-oracle).\n\nOnce installed, the language will automatically pickup the grammar when opening files with all the common PL/SQL file extensions. If you have not yet saved your file, or are using a currently un-recognised file extension, you can manually apply the language with the keyboard shortcut `ctrl+shft+L` and searching for PL/SQL\n\n![](https://cloud.githubusercontent.com/assets/1747643/11353907/74f00ca6-929b-11e5-89f1-4a52dca44787.png)\n\n### Symbols navigation\n\nThe extension to add a tree of your source code for quick navigation is provided through the extension [`symbols-tree-view`](https://atom.io/packages/symbols-tree-view).\n\nThis package provides a symbols/class view on the right hand side of your text editor. Clicking on any symbol will take you to that position in the code.\n\n![](https://cloud.githubusercontent.com/assets/1747643/11354004/62272df6-929c-11e5-89a4-adc802e6349c.png)\n\nThe pane get easily be toggled on and off with the keyboard shortcut `ctrl+alt+o`.\n\n### Source code alignment\n\nSome developers prefer assignment operators in a given block to be aligned over multiple lines so that all assignment values begin at the same point. If you are one of those people, the extension [`atom-alignment`](https://atom.io/packages/atom-alignment) solves that by allowing you to highlight a section of code, and applying the alignment.\n\nThe key bindings are `ctrl+alt+A` or `ctrl+cmd+A`. Best demonstrated with an example. So first you need to highlight any text where assignment operators occur, then run the aforementioned key bindings (or by selecting from the menu option, `Packages-\u003eatom-alignment`).\n\nExample 1: Just the package call\n\nBefore:\n\n```plsql\ndeclare\n    l_short_field NUMBER;\n    l_really_really_long_field NUMBER;\nbegin\n\n    l_short_field := 1;\n    l_really_really_long_field := 999;\n\n    field_updater.get_ready_for_update;\n\n    field_updater.update_details(\n        l_short_field =\u003e l_short_field\n      , l_really_really_long_field =\u003e l_really_really_long_field\n    );\n\nend;\n/\n```\n\nAfter:\n\n```plsql\ndeclare\n    l_short_field NUMBER;\n    l_really_really_long_field NUMBER;\nbegin\n\n    l_short_field := 1;\n    l_really_really_long_field := 999;\n\n    field_updater.get_ready_for_update;\n\n    field_updater.update_details(\n        l_short_field              =\u003e l_short_field\n      , l_really_really_long_field =\u003e l_really_really_long_field\n    );\n\nend;\n/\n```\n\nExample 2: The whole package\n\n```plsql\ndeclare\n    l_short_field NUMBER;\n    l_really_really_long_field NUMBER;\nbegin\n\n    l_short_field := 1;\n    l_really_really_long_field := 999;\n\n    field_updater.get_ready_for_update;\n\n    field_updater.update_details(\n        l_short_field =\u003e l_short_field\n      , l_really_really_long_field =\u003e l_really_really_long_field\n    );\n\nend;\n/\n```\n\nAfter:\n\n```\ndeclare\n    l_short_field NUMBER;\n    l_really_really_long_field NUMBER;\nbegin\n\n    l_short_field              := 1;\n    l_really_really_long_field := 999;\n\n    field_updater.get_ready_for_update;\n\n    field_updater.update_details(\n        l_short_field              =\u003e l_short_field\n      , l_really_really_long_field =\u003e l_really_really_long_field\n    );\n\nend;\n/\n```\n\nOne change I did make, was to clear one of the settings `Add Space Postfix`.\n\n![](https://cloud.githubusercontent.com/assets/1747643/11433471/c894e9da-9511-11e5-94e0-35e06826319d.png)\n\nIf that is left enabled, the previous block would have come out as:\n\n```plsql\ndeclare\n    l_short_field NUMBER;\n    l_really_really_long_field NUMBER;\nbegin\n\n    l_short_field              := 1;\n    l_really_really_long_field := 999;\n\n    field_updater.get_ready_for_update;\n\n    field_updater.update_details(\n        l_short_field              = \u003e l_short_field\n      , l_really_really_long_field = \u003e l_really_really_long_field\n    );\n\nend;\n/\n```\n\n### Oracle compilation\n\nThe extension [`build-oracle`](https://github.com/tschf/atom-build-oracle) allows you to compile your Oracle scripts against the database. It does this be expanding on the `build` package, which is a generic extension for building on a variety of languages/platforms.\n\nAfter you install, to start building against your database you need to set up a configuration (json) file, named `.atom-build-oracle.json`. The first time you add the configuration, you will need to reload Atom for the build targets to be recognised. This configuration expects an array of objects with two fields: `targetName` and `connectString`.\n\nFor example, if I want two build targets against the `hr` schema, my configuration file will look like:\n\n```\n[\n    {\n        \"targetName\" : \"HR_DEV\",\n        \"connectString\" : \"hr/hr@ORCLDEV\"\n    },\n    {\n        \"targetName\" : \"HR_PRD\",\n        \"connectString\" : \"hr/hr@ORCLPRD\"\n    }\n]\n```\n\nWith this applied, in the bottom left corner of your screen (in the status bar), you will see the build target of the first one defined in the config. Clicking on that will then bring up a list of targets at the top of the screen that you can click on to compile the active file against that connection.\n\n![image](https://cloud.githubusercontent.com/assets/1747643/24751026/6d917fcc-1b0b-11e7-9342-0a5a114a8753.png)\n\n![image](https://cloud.githubusercontent.com/assets/1747643/24751041/7df321cc-1b0b-11e7-92d6-34da10a7c185.png)\n\nAlternatively, you can hit the (default) key binding `ctrl+alt+b` to compile against the active build target.\n\nThis project depends on SQL*Plus (or SQLcl), so for further set up instructions, it is worth reviewing the [README](https://github.com/tschf/atom-build-oracle/blob/master/README.md) of the project - for SQLcl, it is just a matter of going in the plugin settings and setting it to use sqlcl instead of the default sqlplus.\n\n### Script runner\n\nUnlike `build-oracle`, or more succintly, `build`, which typically depends on a build file, the extension [`script`](https://atom.io/packages/script) allows you to run the file based on the extension and has support for large number of languages. The keyboard shortcut to run a script defaults to `ctrl+shift+b`.\n\nSuppose you have a JavaScript file you want to quickly run to test out, hit the keyboard shortcut and a little panel at the bottom of the page will show the output/results.\n\n![image](https://cloud.githubusercontent.com/assets/1747643/24910474/43459902-1f0b-11e7-8338-1e71a3482515.png)\n\n### Pigments\n\nThe extension [`pigments`](https://atom.io/packages/pigments) will highlight colours in your source code. This can be helpful when using for example hex colour codes, or rgb values, to know what colour is actually being applied.\n\nWhen dealing with CSS pre-processor's such as less, and colour variables that have been declared will come through in the palette. To show the colours, run the command `show palette`.\n\n![image](https://cloud.githubusercontent.com/assets/1747643/24865237/021c0cac-1e4a-11e7-9c23-0f9e80c01b18.png)\n\nIf I have defined a colour as: `@my-var: #123456;` in my `less` file, the palette will show the following:\n\n![image](https://cloud.githubusercontent.com/assets/1747643/24865492/c77bbb50-1e4a-11e7-91ff-35824a047869.png)\n\nPigments also comes with a command to list all colours defind in the project. Run the command `Find colors`.\n\n![image](https://cloud.githubusercontent.com/assets/1747643/24865564/fa69a0fe-1e4a-11e7-8d68-dc091ad46724.png)\n\n\n### Colour picker\n\nThe extensions [`color-picker`](https://atom.io/packages/color-picker) allows you to use a UI to choose a colour you want. There is a default trigger binding of `ctrl+alt+c`. So if you mouse over a colour code in your source file and hit the trigger key, the colour picker will present itself.\n\n![image](https://cloud.githubusercontent.com/assets/1747643/25313111/48312bf2-286b-11e7-8d5e-648a49fe151f.png)\n\nClicking the big button at the top that displays the colour and also the HEX (or other desired format) code, will either insert or replace the colour value in your source file.\n\nOne issue, it won't work with colour names, such as `red`, `green`, `blue`, etc.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foraopensource%2Foracle-and-atom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foraopensource%2Foracle-and-atom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foraopensource%2Foracle-and-atom/lists"}