-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: allow to copy profile #2
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -12,60 +12,64 @@ Copy a selection in reading view while keeping the markdown formatting | |
> The goal is to replace the native copy function of Obsidian. You can set the command on <kbd>CTRL</kbd> + <kbd>C</kbd> (<kbd>⌘</kbd>+<kbd>C</kbd> 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. | ||
|
||
> **Warning** | ||
> It is possible that the command doesn't work on mobile, as the use of command palette unselects the text. | ||
|
||
## ⚙️ Settings | ||
|
||
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 edited | ||
- `editing` : Only the selected text in editing view will be edited | ||
- `all` : The selected text will be edited in both views | ||
|
||
You can also choose to add a command for each copy-mode. It will create a command for : | ||
|
||
- Reading view (with checkCallback) | ||
- Editing view | ||
- Non markdown view (canvas, database-plugin...) | ||
|
||
Finally, you can to choose to override the default copy (from menu and the <kbd>CTRL</kbd>/<kbd>⌘</kbd> + <kbd>C</kbd>). 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 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). | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. La note sur la désactivation de la copie par défaut sur le canvas est utile. Assurez-vous que cette information est bien visible dans l'interface utilisateur pour éviter toute confusion chez les utilisateurs. |
||
|
||
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). | ||
|
||
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 some times. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. La création de "profil" pour ajouter une commande est une fonctionnalité intéressante. Assurez-vous que l'interface de gestion des profils est intuitive et fournit un feedback clair sur les actions réalisées (création, modification, suppression de profils). |
||
|
||
### Common settings | ||
|
||
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. | ||
> The button in the first tab "copy" will allow you to copy the settings for one view to the other. | ||
|
||
- You can change the aspect of the links: | ||
- `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)`) | ||
- Same, you can change the footnote settings: | ||
- `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! | ||
- Unconventional markdown: | ||
- `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)`) | ||
- Same, you can change the footnote settings: | ||
- `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! | ||
- Unconventional markdown: | ||
- Highlight: Remove `==` around the highlighted text | ||
- Fix callout: | ||
- `Obsidian format` : Keep the same format | ||
- `Obsidian format` : Keep the same format | ||
- `Type 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. | ||
- Other: | ||
- Strict line breaks: Add two spaces at the end of each line | ||
- Regex replacement: You can add more replacement to the copy with the button that will open a modal. Note that the replacement will be done **after all other changes**. | ||
- Regex replacement: You can add more replacement to the copy with the button that will open a modal. Note that the replacement will be done **after all other changes**. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. L'option de remplacement regex est puissante mais peut être complexe pour certains utilisateurs. Considérez d'ajouter des exemples ou un guide d'utilisation dans la documentation. |
||
|
||
### Not common settings | ||
|
||
#### Reading view | ||
|
||
- You can copy to HTML but it will disable all the other options. | ||
|
@@ -74,12 +78,11 @@ It is done on purpose to prevent surprise when you use the plugin on editing vie | |
#### Editing view | ||
|
||
- Convert wikilinks to Markdown links: Convert `[[link]]` to `[link](link)`. Needed to convert the links (as in reading view). | ||
- Convert tabulation to space and choose the size | ||
|
||
- Convert tabulation to space and choose the size | ||
|
||
## 📝 Limitations | ||
|
||
- For a strange reason, the first line of a blockquote / list / callout is not selected totally properly as HTML. If you want to format only a part of this, you need to select the line before (or after). You can use "invisible" characters, `$~~$` for example. | ||
- For a strange reason, the first line of a blockquote / list / callout is not selected totally properly as HTML. If you want to format only a part of this, you need to select the line before (or after). You can use "invisible" characters, `$~~$` for example. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Les limitations mentionnées sont importantes à connaître pour les utilisateurs. Assurez-vous que ces limitations sont clairement expliquées et que des solutions de contournement sont proposées si possible. |
||
- Not support Mathjax copying (as you can't select them in reading view). | ||
- In reading view, already "HTML writing" are not copied as HTML (like `<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>`. | ||
- Selecting text with image will copy the name of the image. If you want to copy the image, you need to select the image itself (not the text). | ||
|
@@ -89,10 +92,10 @@ It is done on purpose to prevent surprise when you use the plugin on editing vie | |
- [ ] From Obsidian's community plugins | ||
- [x] Using BRAT with `https://github.com/Lisandra-dev/obsidian-enhanced-copy` | ||
- [x] From the release page: | ||
- Download the latest release | ||
- Unzip `obsidian-enhanced-copy.zip` in `.obsidian/plugins/` path | ||
- In Obsidian settings, reload the plugin | ||
- Enable the plugin | ||
- Download the latest release | ||
- Unzip `obsidian-enhanced-copy.zip` in `.obsidian/plugins/` path | ||
- In Obsidian settings, reload the plugin | ||
- Enable the plugin | ||
|
||
## 🤖 Developing | ||
|
||
|
@@ -117,11 +120,9 @@ pnpm run dev | |
pnpm run build | ||
``` | ||
|
||
|
||
> **Note** | ||
> You can use the `.env` file with adding the key `VAULT_DEV` to 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. | ||
|
||
|
||
### 📤 Export | ||
|
||
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: | ||
|
@@ -137,6 +138,7 @@ VAULT_DEV=path/to/dev/vault | |
- [x] French | ||
|
||
To add a translation: | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. L'ajout de traductions est une excellente initiative pour rendre le plugin accessible à un public plus large. Assurez-vous que le processus de contribution est bien documenté pour encourager la communauté à participer. |
||
- Fork the repository | ||
- Add the translation in the `src/i18n/locales` folder with the name of the language (ex: `fr.json`) | ||
- Copy the content of the [`en.json`](./src/i18n/locales/en.json) file in the new file | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -165,9 +165,9 @@ export class EnhancedCopySettingTab extends PluginSettingTab { | |
//remove all previous profile | ||
this.TABS = this.TABS.filter((tab) => tab.id !== profile.name); | ||
this.TABS.push({ | ||
name: profile.name ?? "truc", | ||
name: profile.name ?? "profile", | ||
id: profile.name ?? "profile", | ||
icon: "code" | ||
icon: "layers-2" | ||
}); | ||
} | ||
this.TABS = [...new Set(this.TABS)]; | ||
|
@@ -301,33 +301,35 @@ export class EnhancedCopySettingTab extends PluginSettingTab { | |
this.display(); | ||
}); | ||
}); | ||
if (this.settings.applyingTo === ApplyingToView.all) { | ||
new Setting(this.settingsPage) | ||
.setName(i18next.t("hotkey.title")) | ||
.setDesc(i18next.t("hotkey.desc")) | ||
.addToggle((toggle) => { | ||
toggle | ||
.setValue(this.settings.separateHotkey) | ||
.onChange(async (value) => { | ||
this.settings.separateHotkey = value; | ||
await this.plugin.saveSettings(); | ||
this.renderSettingsPage("global"); | ||
}); | ||
}); | ||
|
||
new Setting(this.settingsPage) | ||
.setName(i18next.t("hotkey.title")) | ||
.setDesc(i18next.t("hotkey.desc")) | ||
.addToggle((toggle) => { | ||
toggle | ||
.setValue(this.settings.separateHotkey) | ||
.onChange(async (value) => { | ||
this.settings.separateHotkey = value; | ||
await this.plugin.saveSettings(); | ||
this.renderSettingsPage("global"); | ||
}); | ||
}); | ||
Comment on lines
+304
to
+316
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. La gestion des raccourcis clavier séparés est une fonctionnalité utile. Assurez-vous que l'interface utilisateur permet une configuration facile et intuitive de ces raccourcis. |
||
|
||
new Setting(this.settingsPage) | ||
.addButton((button) => { | ||
button | ||
.setButtonText(i18next.t("global.copy")) | ||
.onClick(async () => { | ||
new EnhancedCopyViewModal(this.app, this.settings, (result) => { | ||
this.settings = result; | ||
this.plugin.saveSettings(); | ||
this.display(); | ||
}).open(); | ||
}); | ||
}); | ||
} | ||
new Setting(this.settingsPage) | ||
.addButton((button) => { | ||
button | ||
.setButtonText(i18next.t("global.copy")) | ||
.onClick(async () => { | ||
new EnhancedCopyViewModal(this.app, this.settings, (result) => { | ||
this.settings = result; | ||
this.plugin.saveSettings(); | ||
this.display(); | ||
}).open(); | ||
}) | ||
.buttonEl.classList.add("full-width"); | ||
}) | ||
.infoEl.classList.add("hide-info"); | ||
|
||
|
||
|
||
new Setting(this.settingsPage) | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
La sélection entre les modes de vue (
reading
,editing
,all
) est une bonne fonctionnalité, mais assurez-vous que l'interface utilisateur rend clair à l'utilisateur quel mode est actuellement actif pour éviter toute confusion.