Sublime Forum

Multi-Selection Alignment

#10

It would be useful for javascript to check not only for ‘=’ but for ‘:’ too. The equal sign could have precedence.

Nice Plugin

0 Likes

#11

I love that plugin!
I really like having my "="s aligned.
As senzo said, “:” alignment would be great for JavaScript and JSON.

0 Likes

#12

A quick modification for “:” alignment

Replace

equal_pt = view.find('=', pt).a

with

import re
if re.search("=", view.substr(view.line(pt))):
  equal_pt = view.find('=', pt).a
elif re.search(":", view.substr(view.line(pt))):
  equal_pt = view.find(':', pt).a
0 Likes

#13

I made it work with this syntax below:

var test = "sadsad", asd = "Asdasd", asdasdasd = "asdasd";

Buy commenting out this part of the code:

# for pt in points: # pt += adjustment # length = max_col - view.rowcol(pt)[1] # max_length = max([max_length, length]) # adjustment += length # view.insert(edit, pt, (' ' if use_spaces else '\t') * length)

0 Likes

#14

[quote=“rdougan”]I made it work with this syntax below:

var test = "sadsad", asd = "Asdasd", asdasdasd = "asdasd";

Buy commenting out this part of the code:

# for pt in points: # pt += adjustment # length = max_col - view.rowcol(pt)[1] # max_length = max([max_length, length]) # adjustment += length # view.insert(edit, pt, (' ' if use_spaces else '\t') * length)[/quote]

You don’t use this plugin the way it was designed, take a look at the documentation from wbond: https://github.com/wbond/sublime_alignment
The code you commented remove the left alignment and only keep the alignment of “=”, what you probably want.
This plugin must probably be splitted in 2 commands, one for the left alignment and one for the “=” (or “:”) alignment.

0 Likes

#15

I should hopefully be able to add some options for alignment characters and disabling left alignment in the next day or so.

Hopefully I will also figure out how to create a .sublime-package file for those who are so inclined.

0 Likes

#16

I’ve got this error under Ubuntu 11.04 x86_64 kernel 2.6.38-10-generic

Traceback (most recent call last): File "./sublime_plugin.py", line 255, in run_ File "./Alignment.py", line 65, in run AttributeError: 'NoneType' object has no attribute 'a'

0 Likes

#17

Over the past few days I added settings to the plugin for more customization. I also fixed some bugs.

The best way to get the newest version, and to automatically stay up to date with the latest version is to use the Package Control package manager I’ve been working on. Once you manually update Alignment through Package Control, it will automatically check for and install updates whenever Sublime Text 2 starts. You can learn more at wbond.net/sublime_packages/package_control.

@rdougan

The newest version allows disabling indentation alignment on a per-filetype basis.

@xavi

The newest version fixed that bug.

0 Likes

#18

@wbond: thanks for this awesome plugin, my code never looked that good!
There is a way of changing space indent to tab?

Thanks!

0 Likes

#19

@iamntz

The left indent should automatically use tabs or spaces based on the current settings. In terms of mid-line indenting, unfortunately I was not able to figure out last night how to measure the actual displayed width of a tab character via the API. I can get the row and column, but the column is just the number of characters from the beginning of the line. I know ST2 can get the real column number since it is displayed in the status bar, I just couldn’t find a method to translate to that. Without being able to tell how wide each tab is being displayed, I wouldn’t be able to do mid-line tab spacing.

0 Likes

#20

To get the ‘visual’ column of a point, you could replace

view.rowcol(pt)

by

import indentation indentation.line_and_normed_pt(view, pt)
Row is always the same for both.

An addition to the API for it would be nice.

Thanks for your work wbond.

0 Likes

#21

Thanks guys! I’ll work on trying to get mid-line tab alignment done tonight.

0 Likes

#22

I’ve updated to the latest and it doesn’t seem to work at all for me (JavaScript):

var tabBar = me.getTabBar(), initialConfig = card.getInitialConfig(), tabConfig = initialConfig.tab || {}, tabTitle = initialConfig.title, tabIconCls = initialConfig.iconCls, index = card.getIndex(), tabs = tabBar.getItems(), cards = me.getInnerItems(), currentTabInstance = (tabs.length >= cards.length) && tabs.getAt(index), tabInstance;

0 Likes

#23

@rdougan

I just copied and pasted that code into my editor and it all seemed to align properly. Are there any errors in the console? Is anything happening at all? What platform are you running ST2 on, and what build of ST2 are you using?

0 Likes

#24

@wbond

For some reason it is now working. It may have been an issue with another plugin I had. There were no errors in the console.

Thanks for adding the align_indent setting! :smile:

0 Likes

#25

[quote=“iamntz”]@wbond: thanks for this awesome plugin, my code never looked that good!
There is a way of changing space indent to tab? [/quote]

I just released version 1.1.0 which includes the setting mid_line_tabs. When enabled, mid-line indentation will be done via tabs if indentation is set to tabs. This could have some side effects when working with editors that have a different tab width, and changes the way in which multi-character operators are indented.

The original post has been updated with the full changelog.

0 Likes

#26

Thanks!
Works amazing!

0 Likes

#27

Thank You Will! Greate job, works good for me too.

New version (1.1.1) of Allignment. Will fixed a bug ‘Fixed a math error when converting mid-line spaces to tabs’

0 Likes

#28

Very nice work.

Could you make it works in realtime like elastic tabstop ?
You can see a live demonstration here : nickgravgaard.com/elastictabstops/

0 Likes

#29

Love the plugin. There’s one little issue I ran across today though: after updating to build 2111 I read the changelog and noticed the new Expand to tag shortcut, which is bound to ctrl+shift+a by default. I tried it out and obviously nothing happened, since it’s overridden by the Alignment plugin. This is of course simple enough to fix, but I would still suggest making ctrl+alt+a the only default keybinding for selection alignment to prevent confusion in new users.

0 Likes