Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I get emmet to add an attribute with a value into a div tag?

I am using the emmet.vim plugin.

How do you write emmet shorthand to account for attributes with no values?

This is what I write:

div.contain-to-grid.sticky>nav.topbar[data-topbar]

This is what I want to happen:

<div class="contain-to-grid sticky">
  <nav class="topbar" data-topbar></nav>
</div>

This is what I get:

<div class="contain-to-grid sticky">
  <nav class="topbar" data-topbar=""></nav>
</div>

Instead of creating an attribute without a value:

data-topbar

it is creating an empty value:

data-topbar=""

Is there a work around for this? If not then I can live with it. It would be nice to know if it can be done. Thanks

like image 326
Derek Dakan Avatar asked Oct 01 '15 18:10

Derek Dakan


2 Answers

The behaviour of Emmet-vim was changed to be as expected from documentation:

You don’t have to specify attribute values: td[colspan title] will produce <td colspan="" title=""> with tabstops inside each empty attribute (if your editor supports them).

So no. You can follow this request here: Attributes without values not being expanded.

Possible crude workaround could be to change the line 220 in autoload/emmet/lang/html.vim from

let current.attr[atts] = ''

to

let current.attr[atts] = function('emmet#types#true')
like image 89
ryuichiro Avatar answered Oct 11 '22 08:10

ryuichiro


I just copy the comment by @Alexander Nied to make it more noticeable, which says

While the documentation does not seem to reflect it, this closed issue indicates that support for boolean attributes has been added to Emmet with the syntax of div[my-attribute.], which should expand to This worked for me in Sublime Text

this work for me too, in Intellij idea

like image 25
towith Avatar answered Oct 11 '22 08:10

towith