Nico Blum37 downloadsAdds "Export to Textile" to the file context menu, copying the note as Textile markup.
Adds Export to Textile to the file context menu (file explorer and the note's "More options" menu). It converts the note's Markdown to Textile markup and copies the result to the clipboard, ready to paste into a Textile-capable issue or wiki field.
| Markdown | Textile |
|---|---|
# Heading … ###### Heading |
h1. … h6. |
**bold**, __bold__ |
*bold* |
*italic*, _italic_ |
_italic_ |
***both***, ___both___ |
_*both*_ |
~~strike~~ |
-strike- |
`code` |
@code@ |
Fenced code blocks (``` or ~~~) |
<pre>…</pre>, or <pre><code class="lang">…</code></pre> with a language |
[text](url) |
"text":url |
 |
!url(alt)! (!url! without alt text) |
, ![[file.png|300]] |
!{width:300px}url(alt)! (300x200 also sets the height) |
[[Note]], [[Note|Alias]] |
plain text (Note, Alias) |
-, *, + list items |
*, **, … by nesting depth |
1. list items |
#, ##, … by nesting depth |
| Ordered inside unordered and vice versa | *#, #*, … |
> quote |
bq. quote |
| Tables | |_. header | and | cell | rows |
| YAML frontmatter | removed |
Nesting depth follows the indentation relative to the parent item, so tabs and two, three, or four spaces per level all work.
This is a best-effort, line-based converter (not a full Markdown AST), so unusual Markdown may not translate perfectly. In particular:
) and table column alignment (:---:) are not converted.| Setting | Default | Effect |
|---|---|---|
| Language | Automatic | Uses German for German Obsidian locales and English otherwise; both can be selected explicitly. |
| Export images as Redmine thumbnails | Off | Writes local images as {{thumbnail(file.png)}} (with size= when a width is given) instead of Textile !file.png!. Redmine only resolves attached files, so images with a URL stay regular Textile images. |
The About me section at the top of the settings links to the developer website, the GitHub repository for stars, and the issue page for feedback.
Textile Export requires Obsidian 1.8.7 or later and works on desktop and mobile.
Download main.js and manifest.json from the latest release,
place them in .obsidian/plugins/textile-export/ inside your vault, then reload Obsidian and enable
Textile Export.
For local development, place this repository at .obsidian/plugins/textile-export/, install dependencies, and build
the bundle:
npm install
npm run build
If Textile Export is useful to you, a GitHub star is much appreciated.
npm install
npm run dev
npm run validate:manifest
npm run typecheck
npm run lint
npm test
npm run build
Source modules live in src/, translations in locales/, deterministic unit tests in tests/, and release
automation in .github/workflows/. Converter tests also run on fixture pairs in tests/fixtures/: each <name>.md
is converted and compared with <name>.textile. To add a case, drop in both files. The generated main.js,
installed dependencies, IDE metadata, and local data.json settings are ignored by Git.
See FEATURES.md for the authoritative feature scope and CONTRIBUTING.md for the development checklist.
Add notes below ## [Unreleased] in CHANGELOG.md, commit and synchronize all pending work, then run
npm run release -- <x.y.z>. The task synchronizes release metadata, runs all checks, commits, tags, and atomically
pushes the branch and tag. The tag workflow builds and publishes main.js and manifest.json with artifact
attestations. Publishing starts only after linting, tests, and production builds pass on Linux, macOS, and Windows.