Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions Preferences.sublime-settings
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,13 @@
// MarkdownEditing (Folding):
// Selector for urls to automatically fold
"mde.auto_fold_link.selector": "( meta.image.inline.metadata.markdown | meta.image.reference.metadata.markdown | meta.link.inline.metadata.markdown | meta.link.reference.metadata.markdown ) - punctuation.definition.metadata",
// MarkdownEditing (Folding):
// Automatically fold sections when loading new document
// false: disable auto-folding on load
// true: fold headings by level 1
// 0: fold all sections, but keep headings visible (outline/toc mode, like ctrl+k, ctrl+9)
// 1..6: fold headings by level (like ctrl+k, ctrl+1..6)
"mde.auto_fold_sections.level": false,

// MarkdownEditing (Wiki):
// wiki file extensions
Expand Down
19 changes: 19 additions & 0 deletions docs/usage.md
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,25 @@ The folding selector can be tweaked in order to add or remove certain kinds of u
"mde.auto_fold_link.selector": "( meta.image | meta.link ) & ( markup.underline | constant.other) - meta.link.reference.footnote - meta.link.reference.def - meta.link.inet",
```

## Automatic Section Folding

MarkdownEditing can automatically fold sections when loading a document.

To globally enable it, add the following setting to _Perferences.sublime-settings_

```jsonc
"mde.auto_fold_sections.level": 0, // TOC mode
```

Valid values are:

| Value | Description
| :---: | ---
| false | disable auto-folding on load
| true | fold headings by level 1
| 0 | fold all sections, but keep headings visible (outline/toc mode, like <kbd>ctrl+k, ctrl+9</kbd>)
| 1..6 | fold headings by level (like <kbd>ctrl+k, ctrl+1..6</kbd>)

## Navigation

MarkdownEditing provides various ways to navigate between sections.
Expand Down
2 changes: 1 addition & 1 deletion make.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ goto :usage

:: create the release
call git push --tags --force
gh release create --target master -t "%package% %2" "%2" %assets%
gh release create --target master -t "%package% %2" "%build%-%2" %assets%
del /f /q *.sublime-package
git fetch
goto :eof
Expand Down
2 changes: 1 addition & 1 deletion plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@
MdeSelectColorSchemeCommand,
)
from .plugins.folding import (
MdeAutoFoldListener,
MdeFoldAllSectionsCommand,
MdeFoldLinksCommand,
MdeFoldLinksListener,
MdeFoldSectionCommand,
MdeShowFoldAllSectionsCommand,
MdeUnfoldAllSectionsCommand,
Expand Down
22 changes: 14 additions & 8 deletions plugins/folding.py
Original file line number Diff line number Diff line change
Expand Up @@ -395,38 +395,44 @@ def run(self, edit, fold=None):
unfold_urls(self.view)


class MdeFoldLinksListener(MdeViewEventListener):
class MdeAutoFoldListener(MdeViewEventListener):
"""
This class describes an automatic link folding event listener.
"""

def auto_fold(self):
settings = self.view.settings()
if settings.get("mde.auto_fold_link.enabled", True):
def auto_fold_links(self):
if self.view.settings().get("mde.auto_fold_link.enabled", True):
fold_urls(self.view)
else:
unfold_urls(self.view)

def auto_fold_sections(self):
level = self.view.settings().get("mde.auto_fold_sections.level", False)
if level is not False and 0 <= int(level) <= 6:
self.view.run_command("mde_fold_all_sections", {"target_level": level})

def on_init(self):
"""
Fold all links after application startup.
"""
self.auto_fold()
self.auto_fold_sections()
self.auto_fold_links()

def on_load(self):
"""
Fold all links once file is loaded.
"""
self.auto_fold()
self.auto_fold_sections()
self.auto_fold_links()

def on_activated(self):
"""
Update link folding when activating view.
"""
self.auto_fold()
self.auto_fold_links()

def on_selection_modified(self):
"""
Update link folding when moving caret around.
"""
self.auto_fold()
self.auto_fold_links()
8 changes: 8 additions & 0 deletions syntaxes/Fold.tmPreferences
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,14 @@
<key>excludeTrailingNewlines</key>
<true/>
</dict>
<dict>
<key>begin</key>
<string>punctuation.section.div.begin.markdown</string>
<key>end</key>
<string>punctuation.section.div.end.markdown</string>
<key>excludeTrailingNewlines</key>
<false/>
</dict>
</array>
</dict>
</dict>
Expand Down
Loading