A Neovim plugin enabling you to solve LeetCode problems.
feat: sort `Leet tabs`
3 files changed, +16 -17
+0-15lua/leetcode/command/init.lua
| @@ -540,55 +540,40 @@ cmd.commands = { | ||
| 540 | 540 | last_submit = { cmd.last_submit }, |
| 541 | 541 | restore = { cmd.restore }, |
| 542 | 542 | inject = { cmd.inject }, |
| 543 | - | |
| 544 | 543 | session = { |
| 545 | 544 | change = { |
| 546 | 545 | cmd.change_session, |
| 547 | - | |
| 548 | 546 | _args = arguments.session_change, |
| 549 | 547 | }, |
| 550 | - | |
| 551 | 548 | create = { |
| 552 | 549 | cmd.create_session, |
| 553 | - | |
| 554 | 550 | _args = arguments.session_create, |
| 555 | 551 | }, |
| 556 | - | |
| 557 | 552 | update = { cmd.update_sessions }, |
| 558 | 553 | }, |
| 559 | - | |
| 560 | 554 | list = { |
| 561 | 555 | cmd.problems, |
| 562 | - | |
| 563 | 556 | _args = arguments.list, |
| 564 | 557 | }, |
| 565 | - | |
| 566 | 558 | random = { |
| 567 | 559 | cmd.random_question, |
| 568 | - | |
| 569 | 560 | _args = arguments.random, |
| 570 | 561 | }, |
| 571 | - | |
| 572 | 562 | desc = { |
| 573 | 563 | cmd.desc_toggle, |
| 574 | 564 | |
| 575 | 565 | stats = { cmd.desc_toggle_stats }, |
| 576 | - | |
| 577 | 566 | toggle = { cmd.desc_toggle }, |
| 578 | 567 | }, |
| 579 | - | |
| 580 | 568 | cookie = { |
| 581 | 569 | update = { cmd.cookie_prompt }, |
| 582 | 570 | delete = { cmd.sign_out }, |
| 583 | 571 | }, |
| 584 | - | |
| 585 | 572 | cache = { |
| 586 | 573 | update = { cmd.cache_update }, |
| 587 | 574 | }, |
| 588 | - | |
| 589 | 575 | fix = { |
| 590 | 576 | cmd.fix, |
| 591 | - | |
| 592 | 577 | _private = true, |
| 593 | 578 | }, |
| 594 | 579 | } |
+3-0lua/leetcode/config/icons.lua
| @@ -10,6 +10,9 @@ local icons = { | ||
| 10 | 10 | notac = "", |
| 11 | 11 | todo = "", |
| 12 | 12 | }, |
| 13 | + caret = { | |
| 14 | + right = "", | |
| 15 | + }, | |
| 13 | 16 | } |
| 14 | 17 | |
| 15 | 18 | icons.hl = { |
+13-2lua/leetcode/pickers/question-tabs.lua
| @@ -6,6 +6,8 @@ local t = require("leetcode.translator") | ||
| 6 | 6 | local pickers = require("telescope.pickers") |
| 7 | 7 | local finders = require("telescope.finders") |
| 8 | 8 | local conf = require("telescope.config").values |
| 9 | +local config = require("leetcode.config") | |
| 10 | +local icons = config.icons | |
| 9 | 11 | |
| 10 | 12 | local entry_display = require("telescope.pickers.entry_display") |
| 11 | 13 | local actions = require("telescope.actions") |
| @@ -22,7 +24,7 @@ local function display_current(entry) | ||
| 22 | 24 | local tabp = vim.api.nvim_get_current_tabpage() |
| 23 | 25 | if tabp ~= entry.tabpage then return unpack({ "", "" }) end |
| 24 | 26 | |
| 25 | - return { "", "" } | |
| 27 | + return { icons.caret.right, "leetcode_ref" } | |
| 26 | 28 | end |
| 27 | 29 | |
| 28 | 30 | local function display_difficulty(q) |
| @@ -75,7 +77,16 @@ local opts = require("telescope.themes").get_dropdown() | ||
| 75 | 77 | return { |
| 76 | 78 | pick = function() |
| 77 | 79 | local tabs = utils.question_tabs() |
| 78 | - if vim.tbl_isempty(tabs) then return log.warn("No questions opened") end | |
| 80 | + | |
| 81 | + if vim.tbl_isempty(tabs) then -- | |
| 82 | + return log.warn("No questions opened") | |
| 83 | + end | |
| 84 | + | |
| 85 | + table.sort(tabs, function(q1, q2) | |
| 86 | + local fid1, fid2 = | |
| 87 | + tonumber(q1.question.q.frontend_id), tonumber(q2.question.q.frontend_id) | |
| 88 | + return (fid1 and fid2) and fid1 < fid2 or fid1 ~= nil | |
| 89 | + end) | |
| 79 | 90 | |
| 80 | 91 | pickers |
| 81 | 92 | .new(opts, { |