Skip to content

Commit

Permalink
Added support for specifying copied text for code blocks
Browse files Browse the repository at this point in the history
  • Loading branch information
squidfunk committed Oct 5, 2023
1 parent 48ff39a commit a9da0b6
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 7 deletions.
31 changes: 31 additions & 0 deletions docs/reference/code-blocks.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,37 @@ theme:
```
````

??? tip "Overriding the clipboard text"

If you want to define a slightly different text to be copied to the
clipboard, you can use the `data-copy` attribute on the code block. Note
that this attribute does not support multiple lines, which is not a
limitation of Material for MkDocs, but of the Markdown parser. Example:

```` markdown title="Code block"
``` { .sh data-copy="curl https://www.example.com" }
$ curl https://www.example.com
# <!doctype html>
# <html>
# ...
```
````

<div class="result" markdown>

``` { .sh data-copy="curl https://www.example.com" }
$ curl https://www.example.com
# <!doctype html>
# <html>
# ...
```

</div>

We recommend to use this very sparingly, because sometimes it can be
confusing to copy something different to the clipboard than what is
actually displayed.

### Code selection button

<!-- md:sponsors -->
Expand Down

Large diffs are not rendered by default.

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion material/templates/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@
</script>
{% endblock %}
{% block scripts %}
<script src="{{ 'assets/javascripts/bundle.2a9e8380.min.js' | url }}"></script>
<script src="{{ 'assets/javascripts/bundle.94c44541.min.js' | url }}"></script>
{% for script in config.extra_javascript %}
{{ script | script_tag }}
{% endfor %}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,10 @@ interface SetupOptions {
*/
function extract(el: HTMLElement): string {
el.setAttribute("data-md-copying", "")
const text = el.getAttribute("data-clipboard-text") ?? el.innerText
const copy = el.closest("[data-copy]")
const text = copy
? copy.getAttribute("data-copy")!
: el.innerText
el.removeAttribute("data-md-copying")
return text
}
Expand Down

0 comments on commit a9da0b6

Please sign in to comment.