convention for unused variables
Torbjorn Tornkvist
tobbe@REDACTED
Fri Oct 15 10:12:03 CEST 2004
Great!
It would be even nicer to be prompted, e.g: "change (y/n)"
through the whole file.
Cheers, Tobbe
Vlad Dumitrescu wrote:
> Hi,
>
> I have a dirty solution for that.
>
> Sorry, I have no patch file, but on the other hand it's just a couple of
> additions. See the end of the mail.
>
> * In order to run Distel with R10, the erlang node needs to be started with a
> +R9 flag - you can either hack erlang-start.el, or use a manually started node.
>
> * Compile distel.erl to distel/ebin and also el-service.el (if needed). I think
> emacs should be restarted.
>
> * Use M-x erl-check-undefined-vars to initialize the warnings list
> * Use M-x erl-next-undef to go to the position of the undefined variable
>
> * The warnings list is *global*, so if you go to another buffer, it needs to be
> regenerated with erl-check-undefined-vars !!
>
> There's no advanced error checking, so use at your own risk. Maybe later I could
> get some support from Luke to make it right in order to add it to the mainstream
> Distel.
>
> Hope it helps.
> regards,
> Vlad
>
>
>
>
> Add at end of el-service.el:
> ;; -----------------------
>
> (defun erl-check-undefined-vars ()
> "Compiles the file and returns warnings for undefined variables."
> (interactive)
> (let* ((node (erl-read-nodename))
> (file (buffer-file-name))
> )
> (erl-rpc #'erl-check-undefined-vars-1 '()
> node 'distel 'check_undefined_vars (list file)
> )
> )
> )
>
> (defun erl-check-undefined-vars-1 (warns)
> (setq *erl-undef-vars* warns)
> (cond (warns
> ;;(local-set-key "\C-c\C-dn" erl-next-undef)
> 'ok
> )
> (t
> 'ok
> )
> )
> )
>
> (defun erl-next-undef()
> (interactive)
> (let ((warn (pop *erl-undef-vars*))
> )
> ;(insert (format "%s" warn))
> (cond (warn
> (goto-line (car warn))
> (let ((case-fold-search nil)) (search-forward (format "%s" (cadr warn))))
> (message (format "Undefined var: %s" (cadr warn)))
> )
> (t
> ;;(local-unset-key "\C-c\C-dn")
> (message "No more warnings in file. Run erl-check-undefined-vars again.")
> )
> )
> )
> )
> ;;-------------
>
>
>
>
>
>
>
> Add at end of distel.erl:
> %% -------------------------------------------------------
>
> check_undefined_vars(File) ->
> [{_F, Warns}|_] = case compile:file(File, [binary, return_warnings]) of
> {ok, _Mod, _B, W} -> W;
> {error, _E, W} -> W;
> _ -> []
> end,
> Unused = [fmt_unused(X) || X <- Warns, is_unused(X)],
> %%erlang:display(File),
> Unused.
>
> is_unused({L, M, {unused_var, V}}) ->
> true.
>
> fmt_unused({L, M, {unused_var, V}}) ->
> [L, V].
> %% ------------------------------------------
More information about the erlang-questions
mailing list