Skip to content

Commit cde9944

Browse files
committed
Implement sorting options for SublimeText-Markdown#665
1 parent 63be270 commit cde9944

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

Preferences.sublime-settings

+10
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,16 @@
4040
// Adds <Tab> after list items instead of a single <space>.
4141
"mde.list_align_text": false,
4242

43+
// MarkdownEditing (References):
44+
// The sorting method used by the Organize References command.
45+
// Should be one of
46+
//
47+
// 'marker_order': List in order of appearance in document
48+
// 'alphabetical': Alphabetical based on reference name, sorting numerals lexagraphically
49+
// 'numeric': Alphabetical based on reference name, sorting numeral chunks numerically
50+
"mde.ref_organize_sort": "marker_order",
51+
"mde.ref_organize_sort_reverse": false,
52+
4353
// MarkdownEditing:
4454
// Automatically switches list bullet when indenting blank list item with <Tab>.
4555
"mde.list_indent_auto_switch_bullet": true,

plugins/references.py

+13-1
Original file line numberDiff line numberDiff line change
@@ -541,9 +541,21 @@ def run(self, edit):
541541
flatrefs.append((name, view.substr(line_reg).strip("\n")))
542542
sel.add(line_reg)
543543

544+
sorting_funcs = {
545+
"marker_order": lambda x: marker_order[x[0].lower()]
546+
if x[0].lower() in marker_order
547+
else 9999,
548+
"alphabetical": lambda x: x[0].lower(),
549+
"numeric": lambda x: [
550+
int(p) if p.isnumeric() else p for p in re.split(r"[ _.-]", x[0].lower())
551+
],
552+
}
553+
settings = view.settings()
554+
544555
flatfns.sort(key=operator.itemgetter(0))
545556
flatrefs.sort(
546-
key=lambda x: marker_order[x[0].lower()] if x[0].lower() in marker_order else 9999
557+
key=sorting_funcs[settings.get("mde.ref_organize_sort", "marker_order")],
558+
reverse=settings.get("mde.ref_organize_sort_reverse", False),
547559
)
548560

549561
view.run_command("left_delete")

0 commit comments

Comments
 (0)