From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Oleksandr Gavenko Newsgroups: gmane.emacs.help Subject: (require ...) and file dependencies. Date: Sun, 28 Dec 2014 01:42:59 +0200 Organization: Oleksandr Gavenko , http://gavenkoa.users.sf.net Message-ID: <87iogwd5h8.fsf@gavenkoa.example.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1419723817 5834 80.91.229.3 (27 Dec 2014 23:43:37 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 27 Dec 2014 23:43:37 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Sun Dec 28 00:43:30 2014 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Y5118-0008W3-04 for geh-help-gnu-emacs@m.gmane.org; Sun, 28 Dec 2014 00:43:30 +0100 Original-Received: from localhost ([::1]:57156 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y5116-0002ce-VW for geh-help-gnu-emacs@m.gmane.org; Sat, 27 Dec 2014 18:43:28 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:40087) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y510w-0002cO-I5 for help-gnu-emacs@gnu.org; Sat, 27 Dec 2014 18:43:19 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Y510s-0001tt-0M for help-gnu-emacs@gnu.org; Sat, 27 Dec 2014 18:43:18 -0500 Original-Received: from plane.gmane.org ([80.91.229.3]:49689) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y510r-0001tn-Pa for help-gnu-emacs@gnu.org; Sat, 27 Dec 2014 18:43:13 -0500 Original-Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1Y510q-0008Mj-1V for help-gnu-emacs@gnu.org; Sun, 28 Dec 2014 00:43:12 +0100 Original-Received: from 46.211.79.104 ([46.211.79.104]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 28 Dec 2014 00:43:12 +0100 Original-Received: from gavenkoa by 46.211.79.104 with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 28 Dec 2014 00:43:12 +0100 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 62 Original-X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: 46.211.79.104 User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4 (gnu/linux) Cancel-Lock: sha1:SbgjFuemYmpsPyOIYsJBEGKCRtY= X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 80.91.229.3 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:101735 Archived-At: During compilation I got: Warning: reference to free variable Warning: assignment to free variable They may fixed by: (eval-when-compile (defvar ...)) But what to do with: Warning: the function `...' is not known to be defined. I have: xxx-mode.el xxx-update.el and both files mix uses of variables and functions. "xxx-mode.el" have (require 'xxx-update) and designed to be loaded by user. So "xxx-update.el" can't use (require 'xxx-mode) or you get: Error: Recursive `require' for feature `xxx-mode' Is that right to use (this is used in CEDET): (eval-when-compile (require 'xxx-mode)) Seems that proper way to fix issue is by rearranging dependency hierarchy by breaking dependency cycles, isn't? I think that I need to move shared definitions from xxx-mode.el into xxx-core.el: xxx-mode.el: (require 'xxx-core) (require 'xxx-update) xxx-update.el: (require 'xxx-core) I check elisp sources for influence: cc-vars.el cc-defs.el cc-mode.el cedet-devel-load.el so elisp sources usually organise dependency in acyclic graph and provides special loaders. -- Best regards!