Skip to content

Commit 401fda7

Browse files
committed
Implement sorting options for #665
1 parent faad9c8 commit 401fda7

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

Preferences.sublime-settings

Lines changed: 10 additions & 0 deletions
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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -539,9 +539,21 @@ def run(self, edit):
539539
flatrefs.append((name, view.substr(line_reg).strip("\n")))
540540
sel.add(line_reg)
541541

542+
sorting_funcs = {
543+
"marker_order": lambda x: marker_order[x[0].lower()]
544+
if x[0].lower() in marker_order
545+
else 9999,
546+
"alphabetical": lambda x: x[0].lower(),
547+
"numeric": lambda x: [
548+
int(p) if p.isnumeric() else p for p in re.split(r"[ _.-]", x[0].lower())
549+
],
550+
}
551+
settings = view.settings()
552+
542553
flatfns.sort(key=operator.itemgetter(0))
543554
flatrefs.sort(
544-
key=lambda x: marker_order[x[0].lower()] if x[0].lower() in marker_order else 9999
555+
key=sorting_funcs[settings.get("mde.ref_organize_sort", "marker_order")],
556+
reverse=settings.get("mde.ref_organize_sort_reverse", False),
545557
)
546558

547559
view.run_command("left_delete")

0 commit comments

Comments
 (0)