idlwave: Abbreviations
4.8 Abbreviations
=================
Special abbreviations exist to enable rapid entry of commonly used
commands. Emacs abbreviations are expanded by typing text into the
buffer and pressing <SPC> or <RET>. The special abbreviations used to
insert code templates all start with a ‘\’ (the backslash), or,
optionally, any other character set in ‘idlwave-abbrev-start-char’.
IDLWAVE ensures that abbreviations are only expanded where they should
be (i.e., not in a string or comment), and permits the point to be moved
after an abbreviation expansion: very useful for positioning the mark
inside of parentheses, etc.
Special abbreviations are pre-defined for code templates and other
useful items. To visit the full list of abbreviations, use ‘M-x
idlwave-list-abbrevs’.
Template abbreviations:
‘\pr’ ‘PROCEDURE’ template
‘\fu’ ‘FUNCTION’ template
‘\c’ ‘CASE’ statement template
‘\f’ ‘FOR’ loop template
‘\r’ ‘REPEAT’ loop template
‘\w’ ‘WHILE’ loop template
‘\i’ ‘IF’ statement template
‘\elif’ ‘IF-ELSE’ statement template
String abbreviations:
‘\ap’ ‘arg_present()’
‘\b’ ‘begin’
‘\cb’ ‘byte()’
‘\cc’ ‘complex()’
‘\cd’ ‘double()’
‘\cf’ ‘float()’
‘\cl’ ‘long()’
‘\co’ ‘common’
‘\cs’ ‘string()’
‘\cx’ ‘fix()’
‘\e’ ‘else’
‘\ec’ ‘endcase’
‘\ee’ ‘endelse’
‘\ef’ ‘endfor’
‘\ei’ ‘endif else if’
‘\el’ ‘endif else’
‘\en’ ‘endif’
‘\er’ ‘endrep’
‘\es’ ‘endswitch’
‘\ew’ ‘endwhile’
‘\g’ ‘goto,’
‘\h’ ‘help,’
‘\ik’ ‘if keyword_set() then’
‘\iap’ ‘if arg_present() then’
‘\ine’ ‘if n_elements() eq 0 then’
‘\inn’ ‘if n_elements() ne 0 then’
‘\k’ ‘keyword_set()’
‘\n’ ‘n_elements()’
‘\np’ ‘n_params()’
‘\oi’ ‘on_ioerror,’
‘\or’ ‘openr,’
‘\ou’ ‘openu,’
‘\ow’ ‘openw,’
‘\p’ ‘print,’
‘\pt’ ‘plot,’
‘\pv’ ‘ptr_valid()’
‘\re’ ‘read,’
‘\rf’ ‘readf,’
‘\rt’ ‘return’
‘\ru’ ‘readu,’
‘\s’ ‘size()’
‘\sc’ ‘strcompress()’
‘\sl’ ‘strlowcase()’
‘\sm’ ‘strmid()’
‘\sn’ ‘strlen()’
‘\sp’ ‘strpos()’
‘\sr’ ‘strtrim()’
‘\st’ ‘strput()’
‘\su’ ‘strupcase()’
‘\t’ ‘then’
‘\u’ ‘until’
‘\wc’ ‘widget_control,’
‘\wi’ ‘widget_info()’
‘\wu’ ‘writeu,’
You can easily add your own abbreviations or override existing abbrevs
with ‘define-abbrev’ in your mode hook, using the convenience function
‘idlwave-define-abbrev’:
(add-hook 'idlwave-mode-hook
(lambda ()
(idlwave-define-abbrev "wb" "widget_base()"
(idlwave-keyword-abbrev 1))
(idlwave-define-abbrev "ine" "IF N_Elements() EQ 0 THEN"
(idlwave-keyword-abbrev 11))))
Notice how the abbreviation (here _wb_) and its expansion
(_widget_base()_) are given as arguments, and the single argument to
‘idlwave-keyword-abbrev’ (here _1_) specifies how far back to move the
point upon expansion (in this example, to put it between the
parentheses).
The abbreviations are expanded in upper or lower case, depending upon
the variables ‘idlwave-abbrev-change-case’ and, for reserved word
templates, ‘idlwave-reserved-word-upcase’ (Case Changes).
-- User Option: idlwave-abbrev-start-char (‘"\"’)
A single character string used to start abbreviations in abbrev
mode. Beware of common characters which might naturally occur in
sequence with abbreviation strings.
-- User Option: idlwave-abbrev-move (‘t’)
Non-‘nil’ means the abbrev hook can move point, e.g., to end up
between the parentheses of a function call.