From a2eb4d9303852ed485d79b5c15bca4f21addb9c4 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 12 Aug 2014 18:16:00 -0700 Subject: [PATCH] Keep Packages submenu sorted This ensures packages are in a predictable order regardless of whether they are bundled or installed to ~/.atom/packages Closes #3155 --- src/menu-manager.coffee | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/menu-manager.coffee b/src/menu-manager.coffee index b7ed27ab3..e1c1743d4 100644 --- a/src/menu-manager.coffee +++ b/src/menu-manager.coffee @@ -15,6 +15,7 @@ class MenuManager @pendingUpdateOperation = null @template = [] atom.keymaps.on 'bundled-keymaps-loaded', => @loadPlatformItems() + atom.packages.on 'activated', => @sortPackagesMenu() # Public: Adds the given item definition to the existing template. # @@ -130,3 +131,14 @@ class MenuManager # Get an {Array} of {String} classes for the given element. classesForElement: (element) -> element?.classList.toString().split(' ') ? [] + + sortPackagesMenu: -> + packagesMenu = @template.find ({label}) => @normalizeLabel(label) is 'Packages' + return unless packagesMenu?.submenu? + + packagesMenu.submenu.sort (item1, item2) => + if item1.label and item2.label + @normalizeLabel(item1.label).localeCompare(@normalizeLabel(item2.label)) + else + 0 + @update()