Some packages I'd like to see


#1

Brackets

Since I work a lot with html, json, and I’m now trying out lisp (common lisp), I’d love to see a package that gives unique matching colors to bracket-pairs.

[ ]
( )
{ }
" "
’ ’

For example (I’m using bold and italic instead of colors)

var a = [
[“value”]
];

This would greatly increase readability in more deeply or closely nested statements like below.

{"keys": ["ctrl+alt+d"], "command": "run_macro_file", "args": {"file": "Packages/User/macros/wrap-after.sublime-macro"}}

It would be even better if it could show the name of what branch it is in. You can’t do this with lists of course, since they don’t have key-values (key being the name), but it would make sense for objects

// | = cursor
                   v
{"keys": ["ctrl+alt|+d"], "command": "run_macro_file", "args": {"file": "Packages/User/macros/wrap-after.sublime-macro"}}
// It would show or maybe highlight keys somewhere.

This makes a lot more sense for lisp than for javascript though, another place is where it would make a lot of sense is within css preprocessors with nesting functionality, to show what selector “path” you are currently in.

| = cursor
.note {
    p {       v
        width:| 400px;
    }
    div {
        color: white;
    }
}

It would show .note p somewhere.

emmet for lisp

Second, I was reading the nature of lisp, and it explained how code and data are very much alike. How lisp is like xml, and how xml is like lisp.

Html is xml, lisp is like xml. There’s an extremely useful plugin for writing html, everyone’s favorite, Emmet!.

What if you could write lisp with emmet?

(defun prompt-int (prompt)
  (or (parse-integer (prompt-read prompt) :junk-allowed t)) 0)

Rewriting the above snippet with an emmet like syntax would result in almost the same size, but more confusing and annoying to write, also less familiar than the lisp you know.

Allowing for simple on-the-fly snippet generation like emmet does, would be useful for lisp like languages though.

defun.(*2, I’m not too sure if that’s what the syntax would look like.

(defun ($1) 
  ($2)
  ($3)
$0)

I’d love to hear your opinions on these ideas.