erlang_mode(3)



erlang.el(3erl)            Erlang Module Definition            erlang.el(3erl)

NAME
       erlang.el - Erlang mode for Emacs

DESCRIPTION
       Possibly  the most important feature of an editor designed for program-
       mers is the ability to indent a line of code  in  accordance  with  the
       structure of the programming language. The Erlang mode does, of course,
       provide this feature. The layout used is based on the common use of the
       language.  The  mode also provides things as syntax highlighting, elec-
       tric commands, module  name  verification,  comment  support  including
       paragraph filling, skeletons, tags support etc.

       In  the  following descriptions the use of the word Point means: "Point
       can be seen as the position of the cursor. More precisely, the point is
       the  position between two characters while the cursor is drawn over the
       character following the point".

INDENT
       The following command are directly available for indentation.

         * TAB (erlang-indent-command) - Indents the current line of code.

         * M-C-\ (indent-region) - Indents all lines in the region.

         * M-l (indent-for-comment) - Insert a comment character to the  right
           of the code on the line (if any).

       Lines containing comment are indented differently depending on the num-
       ber of %-characters used:

         * Lines with one %-character is indented to the right  of  the  code.
           The  column is specified by the variable comment-column, by default
           column 48 is used.

         * Lines with two %-characters will be indented to the same  depth  as
           code would have been in the same situation.

         * Lines with three of more %-characters are indented to the left mar-
           gin.

         * C-c C-q (erlang-indent-function) - Indents the current Erlang func-
           tion.

         * M-x erlang-indent-clause RET
            -Indent the current Erlang clause.

         * M-x erlang-indent-current-buffer RET - Indent the entire buffer.

EDIT - FILL COMMENT
       When  editing  normal  text in text mode you can let Emacs reformat the
       text by the fill-paragraph command. This command will not work for com-
       ments since it will treat the comment characters as words.

       The  Erlang editing mode provides a command that knows about the Erlang
       comment structure and can be used to fill text paragraphs in  comments.
       Ex:

             %% This is   just a very simple test to show
             %% how the Erlang fill
             %% paragraph   command works.

       Clearly,  the text is badly formatted. Instead of formatting this para-
       graph line by line, let's try erlang-fill-paragraph  by  pressing  M-q.
       The result is:

             %% This is just a very simple test to show how the Erlang fill
             %% paragraph command works.

EDIT - COMMENT/UNCOMMENT REGION
       C-c  C-c will put comment characters at the beginning of all lines in a
       marked region. If you want to have two comment  characters  instead  of
       one you can do C-u 2 C-c C-c

       C-c C-u will undo a comment-region command.

EDIT - MOVING THE MARKER
         * C-a M-a  (erlang-beginning-of-function) - Move the point to the be-
           ginning of the current or preceding Erlang function.  With  an  nu-
           meric argument (ex C-u 2 C-a M-a) the function skips backwards over
           this many Erlang functions. Should the  argument  be  negative  the
           point  is  moved  to  the beginning of a function below the current
           function.

         * M-C-a  (erlang-beginning-of-clause) - As above but  move  point  to
           the beginning of the current or preceding Erlang clause.

         * C-a  M-e  (erlang-end-of-function) - Move to the end of the current
           or following Erlang function. With an numeric argument (ex C-u 2 C-
           a  M-e)  the  function  skips backwards over this many Erlang func-
           tions. Should the argument be negative the point is  moved  to  the
           end of a function below the current function.

         * M-C-e   (erlang-end-of-clause) - As above but move point to the end
           of the current or following Erlang clause.

EDIT - MARKING
         * C-c M-h (erlang-mark-function) - Put the region around the  current
           Erlang  function. The point is placed in the beginning and the mark
           at the end of the function.

         * M-C-h  (erlang-mark-clause) Put the region around the  current  Er-
           lang  clause.  The point is placed in the beginning and the mark at
           the end of the function.

EDIT - FUNCTION HEADER COMMANDS
         * C-c C-j (erlang-generate-new-clause) - Create a new clause  in  the
           current  Erlang function. The point is placed between the parenthe-
           ses of the argument list.

         * C-c C-y (erlang-clone-arguments) - Copy the function  arguments  of
           the preceding Erlang clause. This command is useful when defining a
           new clause with almost the same argument as the preceding.

EDIT - ARROWS
         * C-c C-a (erlang-align-arrows) - aligns arrows after clauses  inside
           a region.

                 Example:

                 sum(L) -> sum(L, 0).
                 sum([H|T], Sum) -> sum(T, Sum + H);
                 sum([], Sum) -> Sum.

                 becomes:

                 sum(L)          -> sum(L, 0).
                 sum([H|T], Sum) -> sum(T, Sum + H);
                 sum([], Sum)    -> Sum.

SYNTAX HIGHLIGHTING
       The  syntax  highlighting  can be activated from the Erlang menu. There
       are four different alternatives:

         * Off: Normal black and white display.

         * Level 1:  Function  headers,  reserved  words,  comments,  strings,
           quoted atoms, and character constants will be colored.

         * Level  2: The above, attributes, Erlang bif:s, guards, and words in
           comments enclosed in single quotes will be colored.

         * Level 3: The above, variables, records, and macros will be colored.
           (This level is also known as the Christmas tree level.)

TAGS
       For  the tag commands to work it requires that you have generated a tag
       file. See Erlang mode users guide

         * M-.  (find-tag) - Find a function definition. The default value  is
           the function name under the point.

         * Find  Tag  (erlang-find-tag)  - Like the Elisp-function `find-tag'.
           Capable of retrieving Erlang modules. Tags  can  be  given  on  the
           forms `tag', `module:', `module:tag'.

         * M-+ (erlang-find-next-tag) - Find the next occurrence of tag.

         * M-TAB (erlang-complete-tag) - Perform completion on the tag entered
           in a tag search. Completes to the set of names listed in  the  cur-
           rent tags table.

         * Tags aprops (tags-apropos) - Display list of all tags in tags table
           REGEXP matches.

         * C-x t s (tags-search) - Search through all files listed in tags ta-
           ble for match for REGEXP. Stops when a match is found.

SKELETONS
       A skeleton is a piece of pre-written code that can be inserted into the
       buffer. Erlang mode comes with  a  set  of  predefined  skeletons.  The
       skeletons  can be accessed either from the Erlang menu of from commands
       named tempo-template-erlang-*, as the skeletons is  defined  using  the
       standard Emacs package "tempo". Here follows a brief description of the
       available skeletons:

         * Simple skeletons: If, Case, Receive, Receive After, Receive Loop  -
           Basic code constructs.

         * Header  elements:  Module,  Author - These commands insert lines on
           the form -module(xxx).  and -author('my@home').. They can  be  used
           directly,  but  are also used as part of the full headers described
           below.

         * Full Headers: Small (minimum requirement), Medium (with fields  for
           basic  information  about  the  module),  and  Large Header (medium
           header with some extra layout structure).

         * Small Server - skeleton for a simple server not using OTP.

         * Application - skeletons for the OTP application behavior

         * Supervisor - skeleton for the OTP supervisor behavior

         * Supervisor Bridge - skeleton for the OTP supervisor bridge behavior

         * gen_server - skeleton for the OTP gen_server behavior

         * gen_event - skeleton for the OTP gen_event behavior

         * gen_fsm - skeleton for the OTP gen_fsm behavior

         *
            gen_statem (StateName/3) - skeleton for the OTP gen_statem  behav-
           ior using state name functions

         *
            gen_statem  (handle_event/4) - skeleton for the OTP gen_statem be-
           havior using one state function

         * Library module - skeleton for a module that does  not  implement  a
           process.

         * Corba callback - skeleton for a Corba callback module.

         * Erlang  test  suite - skeleton for a callback module for the erlang
           test server.

SHELL
         * New shell (erlang-shell) - Starts a new Erlang shell.

         * C-c C-z, (erlang-shell-display ) - Displays  an  Erlang  shell,  or
           starts a new one if there is no shell started.

COMPILE
         * C-c  C-k, (erlang-compile) - Compiles the Erlang module in the cur-
           rent buffer. You can also use C-u C-c C-k to debug compile the mod-
           ule with the debug options debug_info and export_all.

         * C-c C-l, (erlang-compile-display) - Display compilation output.

         * C-u C-x` Start parsing the compiler output from the beginning. This
           command will place the point on the line where the first error  was
           found.

         * C-x` (erlang-next-error) - Move the point on to the next error. The
           buffer displaying the compilation errors will be  updated  so  that
           the current error will be visible.

MAN
       On  unix  you  can view the manual pages in emacs. In order to find the
       manual pages, the variable `erlang-root-dir' should  be  bound  to  the
       name  of  the  directory  containing  the Erlang installation. The name
       should not include the final slash. Practically, you should add a  line
       on the following form to your ~/.emacs,

             (setq erlang-root-dir "/the/erlang/root/dir/goes/here")

STARTING IMENU
         * M-x  imenu-add-to-menubar  RET - This command will create the IMenu
           menu containing all the functions in the current buffer.The command
           will  ask  you  for  a suitable name for the menu. Not supported by
           Xemacs.

VERSION
         * M-x erlang-version RET - This command displays the  version  number
           of  the  Erlang editing mode. Remember to always supply the version
           number when asking questions about the Erlang mode.

Ericsson AB                        tools 3.4                   erlang.el(3erl)

Man(1) output converted with man2html
list of all man pages