📄 erlang_appwiz.el
字号:
n (erlang-skel-separator 2) "%% Func: terminate/3" n "%% Purpose: Shutdown the fsm" n "%% Returns: any" n (erlang-skel-separator 2) "terminate(Reason, StateName, StatData) ->" n> "ok." n n (erlang-skel-separator) "%%% Internal functions" n (erlang-skel-separator) ) "*The template of a gen_fsm.Please see the function `tempo-define-template'.");;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Original erlang-add-quotes-if-needed is broken, we install a ;; new version.;;(add-hook 'erlang-load-hook 'my-erlang-load-mods)(defun fixed-erlang-add-quotes-if-needed (str) "Return STR, possibly with quotes." (let ((saved-case-fold-search case-fold-search) (result nil)) (setq case-fold-search nil) (setq result (if (string-match (concat "\\`" erlang-atom-regexp "\\'") str) str (concat "'" str "'"))) (setq case-fold-search saved-case-fold-search) result))(defun my-erlang-load-mods () (fset 'erlang-add-quotes-if-needed (symbol-function 'fixed-erlang-add-quotes-if-needed)) (appwiz-skel-init));;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Additional skeletons which are not shown in the Erlang menu.;;(defvar appwiz-skel '(; ("generic-server-no-api" erlang-skel-generic-server-no-api); ("generic-server-api" erlang-skel-generic-server-api); ("gen-event-no-api" erlang-skel-gen-event-no-api); ("gen-event-api" erlang-skel-gen-event-api); ("gen-fsm-no-api" erlang-skel-gen-fsm-no-api); ("gen-fsm-api" erlang-skel-gen-fsm-api) ("makefile-middle" erlang-skel-makefile-middle) ("makefile-src" erlang-skel-makefile-src)))(defun appwiz-skel-init () "Generate the skeleton functions." (interactive) (condition-case nil (require 'tempo) (error t)) (if (featurep 'tempo) (let ((skel appwiz-skel)) (while skel (funcall (symbol-function 'tempo-define-template) (concat "erlang-" (nth 0 (car skel))) ;; The tempo template used contains an `include' ;; function call only, hence changes to the ;; variables describing the templates take effect ;; immdiately. (list (list 'erlang-skel-include (nth 1 (car skel)))) (nth 0 (car skel))) (setq skel (cdr skel))))));;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;(defvar erlang-skel-generic-server-no-api;; '((erlang-skel-include erlang-skel-large-header);; "-behaviour(gen_server)." n;; n;; "%% gen_server callbacks" n;; "-export([init/1, handle_call/3, handle_cast/2, ";; "handle_info/2, terminate/2])." n n;; "-record(state, {})." n ;; n;; (erlang-skel-separator);; "%%% Callback functions from gen_server" n;; (erlang-skel-separator);; n;; (erlang-skel-separator 2);; "%% Func: init/1" n;; "%% Returns: {ok, State} |" n;; "%% {ok, State, Timeout} |" n;; "%% ignore |" n;; "%% {stop, Reason}" n;; (erlang-skel-separator 2);; "init([]) ->" n>;; "{ok, #state{}}." n;; n;; (erlang-skel-separator 2);; "%% Func: handle_call/3" n;; "%% Returns: {reply, Reply, State} |" n;; "%% {reply, Reply, State, Timeout} |" n;; "%% {noreply, State} |" n;; "%% {noreply, State, Timeout} |" n;; "%% {stop, Reason, Reply, State} | (terminate/2 is called)" n;; "%% {stop, Reason, State} (terminate/2 is called)" n;; (erlang-skel-separator 2);; "handle_call(Request, From, State) ->" n>;; "Reply = ok," n>;; "{reply, Reply, State}." n;; n;; (erlang-skel-separator 2);; "%% Func: handle_cast/2" n;; "%% Returns: {noreply, State} |" n;; "%% {noreply, State, Timeout} |" n;; "%% {stop, Reason, State} (terminate/2 is called)" n;; (erlang-skel-separator 2) ;; "handle_cast(Msg, State) ->" n>;; "{noreply, State}." n;; n;; (erlang-skel-separator 2);; "%% Func: handle_info/2" n;; "%% Returns: {noreply, State} |" n;; "%% {noreply, State, Timeout} |" n;; "%% {stop, Reason, State} (terminate/2 is called)" n;; (erlang-skel-separator 2);; "handle_info(Info, State) ->" n>;; "{noreply, State}." n;; n;; (erlang-skel-separator 2);; "%% Func: terminate/2" n;; "%% Purpose: Shutdown the server" n;; "%% Returns: any (ignored by gen_server)" n;; (erlang-skel-separator 2);; "terminate(Reason, State) ->" n>;; "ok." n;; n;; (erlang-skel-separator);; "%%% Internal functions" n;; (erlang-skel-separator);; );; "*The template of a generic server.;;Please see the function `tempo-define-template'.");;;;(defvar erlang-skel-generic-server-api;; '((erlang-skel-include erlang-skel-large-header);; "%% External exports" n;; "-export([start_link/0])." n;; n;; (erlang-skel-separator);; "%%% API" n;; (erlang-skel-separator);; "start_link() ->" n>;; "gen_server:start_link({local, " ;; (erlang-add-quotes-if-needed;; (concat (erlang-get-module-from-file-name) "_server")) "}, ";; (erlang-add-quotes-if-needed;; (concat (erlang-get-module-from-file-name) "_server")) ", [], [])." n ;; n;; ));;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(defvar erlang-skel-gen-event-no-api;; '((erlang-skel-include erlang-skel-large-header);; "-behaviour(gen_event)." n;; n;; "%% gen_event callbacks" n;; "-export([init/1, handle_event/2, handle_call/2, ";; "handle_info/2, terminate/2])." n n;; "-record(state, {})." n ;; n;; (erlang-skel-separator);; "%%% Callback functions from gen_event" n;; (erlang-skel-separator);; n;; (erlang-skel-separator 2);; "%% Func: init/1" n;; "%% Returns: {ok, State} |" n;; "%% Other" n;; (erlang-skel-separator 2);; "init([]) ->" n>;; "{ok, #state{}}." n;; n;; (erlang-skel-separator 2);; "%% Func: handle_event/2" n;; "%% Returns: {ok, State} |" n;; "%% {swap_handler, Args1, State1, Mod2, Args2} |" n;; "%% remove_handler " n;; (erlang-skel-separator 2);; "handle_event(Event, State) ->" n>;; "{ok, State}." n;; n;; (erlang-skel-separator 2);; "%% Func: handle_call/2" n;; "%% Returns: {ok, Reply, State} |" n;; "%% {swap_handler, Reply, Args1, State1, Mod2, Args2} |" n;; "%% {remove_handler, Reply} " n;; (erlang-skel-separator 2);; "handle_call(Request, State) ->" n>;; "Reply = ok," n>;; "{ok, Reply, State}." n;; n;; (erlang-skel-separator 2);; "%% Func: handle_info/2" n;; "%% Returns: {ok, State} |" n;; "%% {swap_handler, Args1, State1, Mod2, Args2} |" n;; "%% remove_handler " n;; (erlang-skel-separator 2);; "handle_info(Info, State) ->" n>;; "{ok, State}." n;; n;; (erlang-skel-separator 2);; "%% Func: terminate/2" n;; "%% Purpose: Shutdown the server" n;; "%% Returns: any" n;; (erlang-skel-separator 2);; "terminate(Reason, State) ->" n>;; "ok." n;; n;; (erlang-skel-separator);; "%%% Internal functions" n;; (erlang-skel-separator);; );; "*The template of a gen_event.;;Please see the function `tempo-define-template'.");;;;(defvar erlang-skel-gen-event-api;; '((erlang-skel-include erlang-skel-large-header);; "%% External exports" n;; "-export([start_link/0, add_handler/0])." n;; n;; (erlang-skel-separator);; "%%% API" n;; (erlang-skel-separator);; "start_link() ->" n>;; "gen_event:start_link({local, " ;; (erlang-add-quotes-if-needed;; (concat (erlang-get-module-from-file-name) "_event")) "}). " n;; n;; "add_handler() ->" n>;; "gen_event:add_handler(";; (erlang-add-quotes-if-needed;; (concat (erlang-get-module-from-file-name) "_event")) ", ";; (erlang-add-quotes-if-needed;; (concat (erlang-get-module-from-file-name) "_event")) ", [])." n ;; n));;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(defvar erlang-skel-gen-fsm;; '((erlang-skel-include erlang-skel-large-header);; "-behaviour(gen_fsm)." n;; n;; "%% gen_fsm callbacks" n;; "-export([init/1, state_name/2, state_name/3, handle_event/3," n>;; "handle_sync_event/4, handle_info/3, terminate/3])." n n;; "-record(state, {})." n ;; n;; (erlang-skel-separator);; "%%% Callback functions from gen_fsm" n;; (erlang-skel-separator);; n;; (erlang-skel-separator 2);; "%% Func: init/1" n;; "%% Returns: {ok, StateName, StateData} |" n;; "%% {ok, StateName, StateData, Timeout} |" n;; "%% ignore |" n;; "%% {stop, StopReason} " n;; (erlang-skel-separator 2);; "init([]) ->" n>;; "{ok, state_name, #state{}}." n;; n;; (erlang-skel-separator 2);; "%% Func: StateName/2" n;; "%% Returns: {next_state, NextStateName, NextStateData} |" n;; "%% {next_state, NextStateName, NextStateData, Timeout} |" n;; "%% {stop, Reason, NewStateData} " n;; (erlang-skel-separator 2);; "state_name(Event, StateData) ->" n>;; "{nextstate, state_name, StateData}." n;; n;; (erlang-skel-separator 2);; "%% Func: StateName/3" n;; "%% Returns: {next_state, NextStateName, NextStateData} |" n;; "%% {next_state, NextStateName, NextStateData, Timeout} |" n;; "%% {reply, Reply, NextStateName, NextStateData} |" n;; "%% {reply, Reply, NextStateName, NextStateData, Timeout} |" n;; "%% {stop, Reason, NewStateData} |" n;; "%% {stop, Reason, Reply, NewStateData} " n;; (erlang-skel-separator 2);; "state_name(Event, From, StateData) ->" n>;; "Reply = ok," n>;; "{reply, Reply, state_name, StateData}." n;; n;; (erlang-skel-separator 2);; "%% Func: handle_event/3" n;; "%% Returns: {next_state, NextStateName, NextStateData} |" n;; "%% {next_state, NextStateName, NextStateData, Timeout} |" n;; "%% {stop, Reason, NewStateData} " n;; (erlang-skel-separator 2);; "handle_event(Event, StateName, StateData) ->" n>;; "{nextstate, StateName, StateData}." n;; n;; (erlang-skel-separator 2);; "%% Func: handle_sync_event/4" n;; "%% Returns: {next_state, NextStateName, NextStateData} |" n;; "%% {next_state, NextStateName, NextStateData, Timeout} |" n;; "%% {reply, Reply, NextStateName, NextStateData} |" n;; "%% {reply, Reply, NextStateName, NextStateData, Timeout} |" n;; "%% {stop, Reason, NewStateData} |" n;; "%% {stop, Reason, Reply, NewStateData} " n;; (erlang-skel-separator 2);; "handle_sync_event(Event, From, StateName, StateData) ->" n>;; "Reply = ok," n>;; "{reply, Reply, StateName, StateData}." n;; n;; (erlang-skel-separator 2);; "%% Func: handle_info/3" n;; "%% Returns: {next_state, NextStateName, NextStateData} |" n;; "%% {next_state, NextStateName, NextStateData, Timeout} |" n;; "%% {stop, Reason, NewStateData} " n;; (erlang-skel-separator 2);; "handle_info(Info, StateName, StateData) ->" n>;; "{nextstate, StateName, StateData}." n;; n;; (erlang-skel-separator 2);; "%% Func: terminate/3" n;; "%% Purpose: Shutdown the fsm" n;; "%% Returns: any" n;; (erlang-skel-separator 2);; "terminate(Reason, StateName, StatData) ->" n>;; "ok." n;; n;; (erlang-skel-separator);; "%%% Internal functions" n;; (erlang-skel-separator);; );; "*The template of a gen_fsm.;;Please see the function `tempo-define-template'.");;;;(defvar erlang-skel-gen-fsm-no-api;; '((erlang-skel-include erlang-skel-large-header);; "%% External exports" n;; "-export([start_link/0])." n;; n;; (erlang-skel-separator);; "%%% API" n;; (erlang-skel-separator);; "start_link() ->" n>;; "gen_fsm:start_link({local, " ;; (erlang-add-quotes-if-needed;; (concat (erlang-get-module-from-file-name) "_fsm")) "}, ";; (erlang-add-quotes-if-needed;; (concat (erlang-get-module-from-file-name) "_fsm")) ", [], [])." n ;; n;; ));;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; requires that the variables appwiz-erlang-modulename and;; appwiz-erlang-ext are defined.;;(defvar erlang-skel-makefile-src '((erlang-skel-include erlang-skel-nomodule-header) "MAKE = make" n n "ERL = erlc" n n "EBIN = ../ebin" n n (erlang-skel-makefile-separator) n (upcase appwiz-erlang-modulename) "_HEADER_FILES = " appwiz-erlang-modulename "_sup.hrl" n n (upcase appwiz-erlang-modulename) "_SOURCE_FILES = \\" n " " appwiz-erlang-modulename ".erl" " " appwiz-erlang-modulename "_sup.erl \\" n " " appwiz-erlang-modulename "_app.erl" " " appwiz-erlang-modulename appwiz-erlang-ext ".erl" n n (upcase appwiz-erlang-modulename) "_OBJECT_FILES = $(" (upcase appwiz-erlang-modulename) "_SOURCE_FILES:.erl=.jam)" n n n (erlang-skel-makefile-separator) "#" n "# Transformations " n "#" n n ".erl.jam:" n " $(ERL) $<" n n (erlang-skel-makefile-separator) n n n "def : " appwiz-erlang-modulename n n appwiz-erlang-modulename ": $(" (upcase appwiz-erlang-modulename) "_OBJECT_FILES)" n " cp $(" (upcase appwiz-erlang-modulename) "_OBJECT_FILES) " "$(EBIN)" n n "clean :" n " /bin/rm -f $(" (upcase appwiz-erlang-modulename) "_OBJECT_FILES)" n n "$(" (upcase appwiz-erlang-modulename) "_OBJECT_FILES): $(" (upcase appwiz-erlang-modulename) "_HEADER_FILES)" n n ".SUFFIXES : .erl .jam" n n ))(defvar erlang-skel-makefile-middle '((erlang-skel-include erlang-skel-nomodule-header) "MAKE = make" n n (erlang-skel-makefile-separator) n "def:" n " (cd src ; $(MAKE))" n n "clean:" n " (cd src ; $(MAKE) clean)" n n )) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(defun erlang-skel-makefile-separator () "Return a comment separator." (concat (make-string 70 ?\#) "\n"))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -