Page 1 of 1
VHDL File Beautification
Posted: Thu May 19, 2011 3:35 pm
by Mike_F
Would like to beautify sections of code by aligning certain characters into columns.
For example I would like to beautify EX1 UGLY to look like EX2 NICE:
Code: Select all
--EX1 UGLY
signal pattern_match_thres_array_of_arrays_tb: tSTIMARRAY;
signal lfsr_tb : unsigned(30 downto 0);
constant cTRAINING_ARRAY : unsigned(17 downto 0):=o"
--EX 2 NICE
signal pattern_match_thres_array_of_arrays_tb : tSTIMARRAY;
signal lfsr_tb : unsigned(30 downto 0)
constant cTRAINING_ARRAY : unsigned(17 downto 0)
I spend too much time moving the : around by hand (adding spaces) after editing.
Stated otherwise I would like to add spaces prior to the : so that the :
is always in the same column.
Looking for an efficient REGX or macro trick.
If there were something that performed the behavior:
"Add spaces until character y is in column x on lines that contain z"
I would be happy!
Thanks
Mike
Posted: Thu May 19, 2011 6:12 pm
by ben_josephs
I also have a need to do precisely this.
Unfortunately, there's no way to do it in TextPad without outside help; you need a script. But TextPad doesn't support scripts, and you can only do it with the aid of some unpleasant jiggery-pokery.
What I use is a TextPad command and a Perl script, stuck together inelegantly with the clipboard and some keyboard stuffing. If you're interested in this have a look at an old version that I posted here 6 years ago:
http://forums.textpad.com/viewtopic.php?t=4890&start=25.
Posted: Fri May 20, 2011 10:48 am
by Mike Olds
I do this with tabs. At least a few keystrokes less.
Posted: Fri May 20, 2011 2:24 pm
by woho
I hardly dare to suggest a RegExp Search/Replace after ben_josephs - Rex of RegExp - has answered with a script solution
but anyway:
1) tiny extra condition:
the ':' must be far enough right in all your lines so that you can select a column with banks in all the rows left of ':' between
big help for that:
- block select (<Alt> Leftclick) white area left of ':' in row 2 + 3 in your example
- copy (Ctrl-C) it and
- paste (Ctrl-V) it repeatedely to shift the text to the right
- which results in
Code: Select all
signal pattern_match_thres_array_of_arrays_tb: tSTIMARRAY;
signal lfsr_tb : unsigned(30 downto 0);
constant cTRAINING_ARRAY : unsigned(17 downto 0):=o"
2) block select all lines you want to correct
from left: leftmost ':' of all lines (or further left as long as it is still in whitespace)
to right: rightmost ':' of all lines must be included (or further right)
3) search and replace with following setting
[X] Regular Expression
[X] replace only selected Text
[X] use POSIX Syntax in Textpad/Preferences
search
( *):
replace with
<someblanks>:
<someblanks>: here you write as many blanks as you want
voila:
Code: Select all
signal pattern_match_thres_array_of_arrays_tb : tSTIMARRAY;
signal lfsr_tb : unsigned(30 downto 0);
constant cTRAINING_ARRAY : unsigned(17 downto 0):=o"
of course it would be comfortable to record a macro for 3) which you can assign to a keyboard shortcut then
Wolfgang
Posted: Fri May 20, 2011 2:34 pm
by woho
1) there is a 'between' too many in line 4 of my post above
2) are you aware of Preferences/Editor: [ ] constrain cursor to text
- helps a lot in avoiding the blank key when unchecked
- does not work with word wrap == ON
- not sure what is the default
Posted: Fri May 20, 2011 3:11 pm
by ben_josephs
I do something similar for small corrections, but it gets tedious.
Here's an alternative for steps 2 and 3:
2) block select a single column covering the leftmost ':' (or further left as long as it is still in whitespace) and extending over all lines you want to correct
3) search and replace:
Search | Replace... (
<F8>):
Find what: [a single space]
Replace with: [nothing]
Replace All -- do this repeatedly until it beeps