EmEditor (text editor) Forum Index
   Macro Samples
     EmEditor TextApe :-)
Register To Post

Flat Previous Topic | Next Topic
Poster Thread
Stefan
Posted on: 5/9/2012 7:25 am
Home away from home
Joined: 7/14/2008
From: Germany, EU
Posts: 263
Re: EmEditor TextApe :-)
The same (and more) as pop-up menu:

For example you can just press "Ctrl+Alt+M" + a
to "Remove empty lines (incl. whitespace) - in Selection"





As explained here
http://www.emeditor.com/modules/newbb/viewtopic.php?viewmode=flat&topic_id=1879&forum=19

you can create your own menu in EmEditor, here e.g. an pop-up menu.



To create your own pop-up menu follow this steps:
1. Copy the below code into EmEditor and Save as e.g. myMenu.jsee
2. Execute menu "Macros > Select This" to add this macro to My Macros
3. Assign an keyboard shortcut to launch this pop-up menu
// Tools > Properties for all configurations > [Keyboard]
// Category: My Macros
// Commands: myMenu.jsee
// Press new shortcut key: e.g. Ctrl+Alt+M
// [Assign]
// [OK]

Now do:
- open an test file
- make an selection or press Ctrl+A
- e.g. press "Ctrl+Alt+M a" to "Remove empty lines (incl. whitespace) - in Selection"

Here is the macro code:



//EmEditor TextApe :-)
//v0.01, 14. Mai 2012, Stefan, First tests
//v0.02, 15. Mai 2012, Stefan, First public beta release
//v0.03, 22. Mai 2012, Stefan, Wording: Blanks>Whitespace, some optimizations

//Found at:
//http://www.emeditor.com/modules/newbb/viewtopic.php?topic_id=2033&forum=19&post_id=6625#forumpost6625


//Initial work:	
init();

//Build the menu:
TextApe=CreatePopupMenu();
TextApe.Add("&A Remove empty lines (incl. whitespace)",1);
TextApe.Add("&B Remove empty lines",2);
TextApe.Add("&C Reduce many empty lines to one (incl. ws)",3);
TextApe.Add( "", 0, eeMenuSeparator );
TextApe.Add("&D Reduce many whitespace to one",31);
TextApe.Add("&E Remove every whitespace",32);
TextApe.Add("&F Remove leading whitespace",33);
TextApe.Add("&G Remove trailing whitespace",34);
TextApe.Add("&H Remove lead+trail whitespace",35);
TextApe.Add("&i Remove first sign (any)",36);
TextApe.Add("&J Remove first sign (non-blank)",37);
TextApe.Add("&K Remove any of this signs in front...",38);
TextApe.Add("&L Remove last sign (any)",39);
TextApe.Add( "", 0, eeMenuSeparator );
TextApe.Add("&M Insert in front...",61);
TextApe.Add("&N Insert in front... of first sign",62);
TextApe.Add("&O Insert to the end...",63);
TextApe.Add("&P Enclose selection...",64);
TextApe.Add("&Q Enclose each line...",65);
TextApe.Add( "", 0, eeMenuSeparator );
TextApe.Add("About",1000);

//Get which item was clicked:
var vClickedItem = TextApe.Track();

//Execute the related code block:
switch(vClickedItem)
{
case 1:
	//Remove empty lines (incl. whitespace) - in Selection
	document.selection.Replace("^\\s*\\n","",eeFindNext | eeReplaceSelOnly | eeReplaceAll | eeFindReplaceRegExp);
break;
case 2:
	//Remove really empty lines only - in Selection
	document.selection.Replace("^\\n","",eeFindNext | eeReplaceAll | eeReplaceSelOnly | eeFindReplaceRegExp);
break;
case 3:
	//Reduce many empty lines to one (incl. ws) - in Selection
	document.selection.Replace("^\\s+$","",eeFindNext | eeReplaceAll | eeReplaceSelOnly | eeFindReplaceRegExp);
	document.selection.Replace("\\n{2,}","\\n\\n",eeFindNext | eeReplaceAll | eeReplaceSelOnly | eeFindReplaceRegExp);
break;
case 31:
	//Reduce many whitespace to one - in Selection
	document.selection.Replace("\\s{2,}"," ",eeFindNext | eeFindReplaceEscSeq | eeReplaceSelOnly | eeReplaceAll | eeFindReplaceRegExp);
break;
case 32:
	//Remove every whitespace - in Selection
	document.selection.Replace("\\s+","",eeFindNext | eeReplaceSelOnly | eeReplaceAll | eeFindReplaceRegExp);
	end();
break;
case 33:
	//Remove leading whitespace - in Selection
	document.selection.Replace("^\\s+","",eeFindNext | eeReplaceAll | eeReplaceSelOnly | eeFindReplaceRegExp);
break;
case 34:
	//Remove trailing whitespace - in Selection
	document.selection.Replace("\\s+$","",eeFindNext | eeReplaceAll | eeReplaceSelOnly | eeFindReplaceRegExp);
break;
case 35:
	//Remove leading + trailing whitespace - in Selection
	document.selection.Replace("^\\s*(.+?)\\s*$","$1",eeFindNext | eeReplaceAll | eeReplaceSelOnly | eeFindReplaceRegExp);
break;
case 36:
	//Remove first sign from selected lines
	document.selection.Replace("^.","", eeReplaceSelOnly | eeReplaceAll | eeFindReplaceRegExp);
	end();
break;
case 37:
	//Remove first non-blank sign from selected lines
	document.selection.Replace("^(\\s*).(.+)$","$1$2", eeReplaceSelOnly | eeReplaceAll | eeFindReplaceRegExp);
break;
case 38:
	//Remove any of this signs in front of line - in Selection
	RemoveAnyOfThisSigns();
break;
case 39:
	//Remove last sign from selected lines
	document.selection.Replace(".$","", eeReplaceSelOnly | eeReplaceAll | eeFindReplaceRegExp);
break;
case 61:
	//Insert in front of selected lines
	Leader = prompt("What to insert in front?","// ");
	document.selection.Replace("^",Leader, eeReplaceSelOnly | eeReplaceAll | eeFindReplaceRegExp);
break;
case 62:
//Insert in front of first non-empty - in selected lines
	Leader = prompt("What to insert in front?","// ");
	document.selection.Replace("^(\\s*)(.)","$1"+Leader+"$2", eeReplaceSelOnly | eeReplaceAll | eeFindReplaceRegExp);
break;
case 63:
	//Insert to the end of selected lines
	Trailer = prompt("What to insert to the end?"," //");
	document.selection.Replace("$",Trailer, eeReplaceSelOnly | eeReplaceAll | eeFindReplaceRegExp);
break;
case 64:
	//Enclose selected word
	mySign = prompt( "Enter sign to enclose selection:", "%" );
	selText = document.selection.Text;
	document.selection.Text = mySign + selText + mySign;
break;
case 65:
	//Enclose each selected line
	mySign = prompt( "Enter sign to enclose selection:", "%" );
	document.selection.Replace("^(.*)$",mySign+"$1"+mySign, eeReplaceSelOnly | eeReplaceAll | eeFindReplaceRegExp);
break;
case 1000:
	alert("EmEditor TextApe :-)\nv0.03, 22. Mai 2012\n\nJust some nifty macros.\nEnjoy!\n\nStefan");
break;
default:
break;
}

//Some bigger or maybe common used function:
function init(){
	if(document.selection.IsEmpty){
		alert("This macros works with an selection only.\n \
Please make an selection first, then call this menu again."); 
		quit();}
	redraw = false;
	}
function RemoveAnyOfThisSigns(){
	Signs = prompt("What to delete in front?",">-*,+");
	if (Signs.indexOf("-") > -1){ 
	  Signs = Signs.replace("-",""); Signs = Signs + "-";}
	for (i=1;i<10;i++){
	 document.selection.Replace("^(\\s*)["+Signs+"]+","$1",eeFindNext 
	 | eeReplaceAll | eeReplaceSelOnly | eeFindReplaceRegExp);
	}
}
function end(){document.HighlightFind = false;}
//<EOF>

Flat Previous Topic | Next Topic


Subject Poster Date
   EmEditor TextApe :-) Stefan 5/8/2012 12:07 pm
   » Re: EmEditor TextApe :-) Stefan 5/9/2012 7:25 am
       Re: EmEditor TextApe :-) user 5/14/2012 1:52 am
         Re: EmEditor TextApe :-) Customizing the menu add own item Stefan 7/21/2012 8:02 am
           Re: EmEditor TextApe :-) Customizing the menu add own item user 7/21/2012 9:17 am

Register To Post
 
English čeština Deutsch español français italiano 日本語 한국어 Русский 简体中文 繁體中文