diff --git a/rc/extra/racer.kak b/rc/extra/racer.kak index 20f6c367..06bed711 100644 --- a/rc/extra/racer.kak +++ b/rc/extra/racer.kak @@ -29,13 +29,40 @@ define-command racer-complete -docstring "Complete the current selection with ra gsub(/\|/, "\\|", menu) if (type == "Function") { sub(word, "{default+e}" word "{default+d}", menu) + gsub(/^fn /, " fn ", menu) # The extra spaces are there to vertically align + # the type of element on the menu to make it easy + # to read menu = "{default+d}" menu - word = word "(" } else if (type == "Enum") { menu = substr(menu, 0, length(menu) - 2) sub(word, "{default+e}" word "{default+d}", menu) - menu = "{default+d}" menu - word = word "::" + gsub(/^enum /, " enum ", menu) # The extra spaces are there to vertically align + # the type of element on the menu to make it easy + # to read + } else if (type == "Module") { + if (length(menu) > 30) { # The "menu" bit (as returned by racer), + # contains the path to the source file + # containing the module... + + menu = substr(menu, length(menu) - 29, 30) # ... trimming it, so the completion menu + # doesn''t get distorted if it''s too long + } + menu = " mod {default+e}" word "{default+d} .." menu # The extra spaces are there to vertically align + # the type of element on the menu to make it easy + # to read + } else if (type == "Trait") { + sub(word, "{default+e}" word "{default+d}", menu) + gsub(/^trait /, " trait ", menu) # The extra spaces are there to vertically align + # the type of element on the menu to make it easy + # to read + } else if (type == "Type") { + sub(word, "{default+e}" word "{default+d}", menu) + gsub(/^type /, " type ", menu) # The extra spaces are there to vertically align + # the type of element on the menu to make it easy + # to read + } else if (type == "Struct") { + sub(word, "{default+e}" word "{default+d}", menu) # Struct doesn''t have extra spaces because it''s + # the longest keyword } else { menu = "{default+e}" word "{default+d} " menu }