convention for unused variables

Torbjorn Tornkvist <>
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