mara-li9k downloadsCopy your selection and add it some edit to paste in other markdown software. Allows to keep markdown in reading view, removing wikilinks in editing, copy from locked canvas, and more!
Copy a selection in reading view while keeping the markdown formatting
Copy selected text[!NOTE] The goal is to replace the native copy function of Obsidian. You can set the command on CTRL + C (⌘+C on MacOS) Some selection doesn't work as in the native copy in Obsidian, but I didn't find a way to process the native copy function in the plugin.
You can adjust the way the content is copied in the settings.
First, you need to set the view mode to use. You can choose between:
reading: Only the selected text in reading view will be editedediting : Only the selected text in editing view will be editedall : The selected text will be edited in both viewsYou can also choose to add a command for each copy-mode. It will create a command for :
Finally, you can to choose to override the default copy (from menu and the CTRL/⌘ + C). Pretty useful for mobile!
[!Note] The default copy is disabled on canvas, so I advice you to use the command separator to set an hotkey/button for "other" view & use the default copy on markdown view (reading and LP/source mode).
The reading view and editing view have ~ the same settings, but you need to set them separately. It will allow having different copy settings for each view.
You can enable the overriding of native copy for each view, so it could be disabled for reading view and enabled for editing view (and vice versa).
[!warning] If so, any change to the settings (including CSS file for RTF) will need Obsidian to be reloaded.
You can create "profile", that will add a command (after reloadig Obsidian), so you can create a profile for copying on Discord and use it sometimes.
These settings are the same for both views. As they are separate for each view, if you want some edit in the two views, you need to set them twice. It is done on purpose to prevent surprise when you use the plugin on editing view but don't want some changes.
Info The button in the first tab "copy" will allow you to copy the settings for one view to the other.
Keep : Don't change the link (so they will be in [link](url) format)Remove all : Remove all the links, and keep only the alias (so [link](url) will be link)Remove only for internal links : Remove only the internal links (so [link](url) will be link but [link](https://example.com) will be [link](https://example.com))Keep : Don't change the footnote (so they will be in the strange format of Obsidian turndown: footnote[[1]](#fn-1-xxx))Remove all : Remove all the footnotes, and keep only the alias (so footnote[[1]](#fn-1-xxx) will be footnote)Format as [^1]: Convert footnote[[1]](#fn-1-xxx) to footnote[^1]
These settings will also fix the "markdown contents," aka the footnote at the end of the documents.Info
With the format option, if you copy multiple footnote, they will be[^1]:[^2]:etc..., not a numbered list!
== around the highlighted textObsidian format : Keep the same formatType to strong : Convert all in blockquote and transform the type to bold: > [!info] will become > **Info** (à la GitHub Callout)Simple blockquote : Remove type, keep title and convert to blockquote.[[link]] to [link](link). Needed to convert the links (as in reading view).You can export the text into HTML format instead of Markdown, and also choose to export as "Rich text".
The rich text needs a proper CSS to works, so you can set the path to a CSS file in the settings. You can use the default one provided in the plugin, or create your own. Any file within obsidian (including .obsidian) can be used.
It is important that the CSS file includes all the styles for basic Markdown elements (like h1, h2, strong, em, code). You mustn't use any variable from Obsidian.
The default CSS is defined here.
[!tip] In reading view, the HTML is generated from the Markdown (using the Obsidian API).
$~~$ for example.<b>…</b>). They are copied as Markdown, or only the text is copied (if not basic html). You can prevent this using the data-type="html" attribute on the element. For example, b data-type="html" will be copied as <b>…</b>.https://github.com/Mara-Li/obsidian-enhanced-copyobsidian-enhanced-copy.zip in .obsidian/plugins/ pathTo make changes to this plugin, first ensure you have the dependencies installed. First, don't forget that you need Node. The package manager used in the project is pnpm so you need to install it globally.
npm i pnpm -g
pnpm install
To start building the plugin with what mode enabled run the following command:
pnpm run dev
Note
If you haven't already installed the hot-reload-plugin you'll be prompted to. You need to enable that plugin in your obsidian vault before hot-reloading will start. You might need to refresh your plugin list for it to show up. To start a release build run the following command:
pnpm run build
Note
You can use the.envfile with adding the keyVAULT_DEVto specify the path to your Obsidian (development) vault. This will allow you to test your plugin without specify each times the path to the vault.
You can use the npm run export command to export your plugin to your Obsidian Main Vault. To do that, you need the .env file with the following content:
VAULT=path/to/main/vault
VAULT_DEV=path/to/dev/vault
To add a translation:
src/i18n/locales folder with the name of the language (ex: fr.json)en.json file in the new file