https://github.com/BBazard/obsidian-orgmode-cm6
Orgmode plugin for Obsidian
https://github.com/BBazard/obsidian-orgmode-cm6
obsidian org-mode orgmode
Last synced: 3 months ago
JSON representation
Orgmode plugin for Obsidian
- Host: GitHub
- URL: https://github.com/BBazard/obsidian-orgmode-cm6
- Owner: BBazard
- License: mit
- Created: 2023-12-09T09:59:42.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-11-08T22:22:48.000Z (7 months ago)
- Last Synced: 2024-11-08T23:22:54.985Z (7 months ago)
- Topics: obsidian, org-mode, orgmode
- Language: TypeScript
- Homepage:
- Size: 543 KB
- Stars: 53
- Watchers: 1
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-github-repos - BBazard/obsidian-orgmode-cm6 - Orgmode plugin for Obsidian (TypeScript)
README
# Obsidian Orgmode CM6
[Orgmode](https://orgmode.org) for [Obsidian](https://obsidian.md).

## Usage
By default org files are not shown in the sidebar.
To display them you need to go into the obsidian settings, section `Files and links` and check `Detect all file extensions`.
To create an org file in your vault, you currently have to create it outside obsidian, as obsidian doesn't allow to create a non-markdown file.
If you don't already have an org file, try to create a file called `todo.org` with the following content:
```org
* TODO [#A] A task with *high* priorityThe description of the task
* A collapsed section
You cannot see the description when collapsed
* DONE something done already :sometag:
SCHEDULED: <2023-12-08 Fri 11:13>
:PROPERTIES:
:CREATED: [2023-12-03 Sun 10:48]
:END:a [[https://github.com/BBazard/obsidian-orgmode-cm6][link]]
#+begin_src javascript
const block = "highlighted"
#+end_src
```## Supported features
### Orgmode Editor
- Live Preview
- Syntax highlighting (with overridable css classes)
- Customizable Todo Keywords in settings
- Folding (click in the gutter on the first line of the element to fold it)
- Wiki links (`[[unicorn]]` will open the file unicorn.org anywhere in the vault or fallback to unicorn.md)
- Inline images (`[[myimage.png]]` will display the image if it exists in the vault)
- ID links (`[[id:12345]]` will redirect to the heading with the matching :ID: in a property drawer located in any org file in the vault)
- Vim support (if activated in Obsidian)
- Source blocks highlighting (supported: c, c++, css, html, java, javascript, json, php, python, rust, sass, xml)### Orgmode Parser (syntax highlighting)
Following [Org Syntax](https://orgmode.org/worg/org-syntax.html)
- [x] Heading (nested, no support for COMMENT heading)
- [x] Section (including zeroth section)
- [x] Text markup (bold, italic, underline, etc...)
- [x] Link (regular link, angle link, plain link)
- [x] Combination of markup and link
- [x] Comment line
- [x] Keyword line
- [x] Planning line
- [x] Property Drawer
- [x] Lesser Block (unformatted except source blocks)
- [ ] Dynamic Block
- [ ] Drawer
- [ ] List and Checkbox
- [ ] Horizontal rule
- [ ] Timestamp
- [ ] Clock
- [ ] Diary Sexp
- [ ] Footnote
- [ ] Table
- [ ] Latex
- [ ] : Fixed-width line (you can use a Block instead)## Implementation details
- The orgmode files are handled with a [codemirror 6](https://codemirror.net) instance which is separate from the one used by the markdown files. That means the plugin has to re-implement all features working for markdown files.
- The parser reads an orgmode file and builds a tree of syntax nodes by using a [lezer](https://lezer.codemirror.net) grammar with custom tokenizers. This approach allows to match tokens more precisely than the regex-based approach of Emacs. For example, planning lines are only matched after a heading and not in the middle of a section.
- Overlapping tokens are not considered valid. Take for example: `*one _two three* four_`. Emacs, using regexes would have `*one _two three*` as bold and `_two three* four_` as underline. The lezer parser is instead considering `*one _two three*` as bold and ` four_` as normal text, it makes it possible to have the text markup range as its own syntax node.
- There is no limits to the level of headings (so no Inlinetask) or the number of lines of a text markup.
## Show orgmode tasks in markdown files
This feature is unstable and will likely change in breaking ways in the future.
Currently only TODO and DONE are handled.
https://github.com/BBazard/obsidian-orgmode-cm6/assets/10139245/b071b2c8-b56e-4050-8fcf-02a922fdd1c0
To filter, [orgzly search expression](https://www.orgzly.com/docs#search) are supported (implemented: s, d, c, i, it).
```orgmode-tasks
filepath: Orgmode/Orgmode file.org
query: it.todo or it.done
```## Development
```
git clone https://github.com/bbazard/obsidian-orgmode-cm6
cd obsidian-orgmode-cm6
npm install
npm run build
npm test
cp main.js styles.css manifest.json "$OBSIDIAN_VAULT"/.obsidian/plugins/obsidian-orgmode-cm6/
```