K-Meleon

Use this page to experiment with the wiki. (Just don't delete this text; otherwise people won't know the purpose of the page.)


This is test code and may discarded if you need to use the sandbox.

                                                     JamesD

K-Meleon Macro Language


Contents


See also:


Comments

A line starting with # is a comment and is ignored.

# this is a comment


Variables and Macros

Variables are not declared explicitly, but must have a name starting with a dollar sign. A variable can either be global, accessible from any macro, or local to a specific macro. Before a variable can be used in an expression, it must be assigned a value. Integer and string values are available.

    $x = 0; 
    $y = "A text string";


Macro declarations consist of a macro name followed by a compound of statements enclosed in curly braces to execute for that macro. An optional assignment of a string value to 'menu' can be used to set the text shown when the macro is used in menus.

example {
menu = "Menu text";
$x = 0;
}


Expressions

The following operators are available:

Operator Meaning Sample Statement Integer Result
= assignement $x = 7; $x = 7
. string concatenation $x = 7 . 3; $x = 73
+ integer addition $x = 7 + 3; $x = 10
- integer subtraction $x = 7 - 3; $x = 4
* integer multiplication $x = 7 * 3; $x = 21
/ integer division $x = 7 / 3; $x = 2
% integer remainder $x = 7 % 3; $x = 1
== equality $x = 7 == 3; $x = 0
!= unequality $x = 7 != 3; $x = 1
<, <=, >, >= string comparison $x = 10 < 2 $x = 1
<, <=, >, >= integer comparison $x = +10 > +2 $x = 1
? : conditional expression $x = $y==1 ? 2:3; $x = 2 if y equals 1, $x = 3 otherwise

Parentheses can be used to alter the evaluation order. By default, addition and subtraction have higher precedence than multiplication, division and remainder operations.

When needed, a variable is automatically converted from a string to an integer, or vice versa.

    $x = 1 + "2";                       $x = 3  
    $y = "The value of x is " . x;      $y = "The value of x is 3"


Special Strings

Strings should be enclosed in double quotes although not required unless the string contains operators. A backslash is used to escape special characters:

\\ backslash (\)
\n newline character
\t tabulator
\" quotation mark (")

The string values "true" and "false" are recognized as boolean values and can be used in place of a conditional expression.

    $z = "false";
    $z ? $x = 1 : $x = 0;               $x = 0
    $z = "true";
    $z ? $x = 1 : $x = 0;               $x = 1


Special Global Variables

There is a number of predefined global variables to let K-Meleon macros access some global state information.

$ARG Argument given from caller plugin (not from caller macro). Since 0.9
$CHARSET Character encoding used for the current page. Since 1.0.
$FrameURL URL for the current frame. Since 0.8.2
$ImageURL URL for the current image. Since 0.8
$LinkURL URL for the current link. Since 0.8
$SelectedText Selected text in the current page. Since 1.0.
$TextZoom Text zoom factor for the current page. Since 1.0.
$TITLE Title for the current page. Since 0.9
$URL URL for the current page. Since 0.7
$URLBAR Contents of the URL bar. Since 1.0.


Events

    OnActivateWindow
    OnCloseGroup
    OnCloseWindow
    OnInit
    OnLoad
    OnOpenWindow
    OnQuit
    OnSetup
    OnStartup
    OnWMAppExit


Statements

Statements should be finished by a semicolon. Statements may not span several lines!

    # THIS IS INVALID
    $error = 1 +
        1;

Several statements can be lined up on the same line with a semicolon in between.

    $x = 0; $y = "A text string";


Conditional statements

The conditional expression operator (? :) can be used to execute a single statement depending on a certain condition.

A complete "If ... Then ... Else ..." statement would look like this:

    CONDITION ? STATEMENT_CONDITION_TRUE : STATEMENT_CONDITION_FALSE;

A simple "If ... Then ..." statement would look like this:

    CONDITION ? STATEMENT_CONDITION_TRUE : 0;

In the example above, nothing (0 = zero) is executed when the condition is false.

To execute multiple statements depending on a certain condition, these have to be encapsulated in helper macros:

    CONDITION ? &ConditionTrue : &ConditionFalse;

    ConditionTrue {
        ...
    }
    ConditionFalse {
        ...
    }


Documents


Document Manipulation

forcecharset
injectCSS
injectJS


Opening Documents

open
opennew
openbg
opentab
openbgtab

String Handling


General

index
length
substr


Substitution

_()
gensub()
gsub()
sub()


URLs

basename()
dirname()
hostname()
urlencode()

Iteration

while()


Interface to


The User


Simple Dialogs / Modal Windows

    alert( MESSAGE [, TITLE [, ICON]] );       since version 0.8

Shows a messagebox.
ICON = EXCLAIM | INFO | STOP | QUESTION

    $RESULT = confirm( MESSAGE [, TITLE [, BUTTONS [, ICON]]] );      since version 0.9

Shows a messagebox and asks for confirmation.
BUTTONS = RETRYCANCEL | YESNO | YESNOCANCEL | ABORTRETRYIGNORE
ICON = EXCLAIM | INFO | STOP | QUESTION
RESULT = OK | YES | NO |ABORT | RETRY | IGNORE | 0

    $VALUE = prompt( MESSAGE [, TITLE [, DEFAULT_STRING]] );     since version 0.7

Shows a modal 'prompt' dialog and returns a string value.


Setting Accelerator Key Definitions

setaccel()


Menus

setmenu()
menuchecked
menugrayed
rebuildmenu()


The Operating System

promptforfile()
promptforfolder()


The Browser

getfolder()
id()


Browser Preference System

delperf()
getpref()
setpref()
togglepref()


The Clipboard

getclipboard()
setclipboard()


The Statusbar

statusbar()

Alphabetical Index

  
 * $ARG                         
 * $CHARSET                        
 * $FrameURL                                
 * $ImageURL                        
 * $LinkURL                        
 * $SelectedText        
 * $TextZoom        
 * $TITLE                        
 * $URL                        
 * $URLBAR
 * _()                        
 * alert()
 * basename()                0.7        URLs
 * confirm()                        
 * dirname()                        0.7        URLs
 * exec()                        0.6        the operating system
                                1.0        (expands environment variables)
 * forcecharset()                0.9        Document Manipulation
 * gensub()                        0.7        Substitution
 * getclipboard()                0.7        The Clipboard
 * getfolder()                1.1        The Browser
 * getpref()                        0.7        The Preferences System
 * gsub()                        0.7        Substitution
 * hostname()                0.7        URLs
 * id()                        0.7        The Browser
 * index()                        0.7        String Handling - General
 * injectCSS()                1.0        Document Manipulation
 * injectJS()                1.0        Document Manipulation
 * length()                        0.7        String Handling - General
 * macros()                        0.7        Basics
                         1.1        (syntax extended to support execution of)
                                        (multiple macros)
 * menu                        0.4        depreciated
 * menuchecked                1.1        Menu Integration
 * menugrayed                1.1        Menu Integration
 * open()                        0.4        Opening Documents
 * openbg()                        0.4        Opening Documents
 * openbgtab()                1.5        Opening Documents
 * opennew()                        0.4        Opening Documents
 * opentab()                        1.5        Opening Documents
 * plugin()                        0.7        K-Meleon Plugins
 * pluginmsg()                0.7        K-Meleon Plugins
 * pluginmsgex()                0.7        K-Meleon Plugins
 * prompt()                
 * promptforfile()                1.0        Operating System Dialogs
 * promptforfolder()                1.0        Operating System Dialogs
 * readfile()                1.0        the operating system
 * readreg()                        1.0        the operating system
 * rebuildmenu()                1.1        Menu Integration
 * setaccel()          1.1        Accelerator Definition
 * setcheck()                0.9        depreciated
 * setclipboard()                0.7        The Clipboard
 * setmenu()                        1.1        Menu Integration
 * setpref()                        0.6        The Preferences System
 * statusbar()                0.7        The statusbar
 * sub()                        0.7        Substitution
 * substr()                        0.7        String Handling - General
 * togglepref()                0.6        The Preferences System
 * urlencode()                1.0        URLs
 * while()                        1.0        Basics
                                1.5        (syntax was extended to support execution of)         
                                                                (multiple statements)
K-Meleon

(c) 2000-2010 kmeleonbrowser.org. All rights reserved.
design by splif.