From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Haojun Bao Newsgroups: gmane.emacs.devel Subject: where-are-we: find out the context when reading (any) source code Date: Wed, 18 Aug 2010 23:31:32 +0800 Message-ID: <87aaok0wff.fsf@bhj.homelinux.org> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: dough.gmane.org 1282145536 2603 80.91.229.12 (18 Aug 2010 15:32:16 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Wed, 18 Aug 2010 15:32:16 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Aug 18 17:32:15 2010 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Olkcd-0001ji-Ch for ged-emacs-devel@m.gmane.org; Wed, 18 Aug 2010 17:32:11 +0200 Original-Received: from localhost ([127.0.0.1]:53550 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Olkcc-0007U1-JV for ged-emacs-devel@m.gmane.org; Wed, 18 Aug 2010 11:32:10 -0400 Original-Received: from [140.186.70.92] (port=51789 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Olkc9-0007JH-7E for emacs-devel@gnu.org; Wed, 18 Aug 2010 11:31:42 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1Olkc7-0004f0-Nv for emacs-devel@gnu.org; Wed, 18 Aug 2010 11:31:41 -0400 Original-Received: from mail-pw0-f41.google.com ([209.85.160.41]:38065) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Olkc7-0004eo-CJ for emacs-devel@gnu.org; Wed, 18 Aug 2010 11:31:39 -0400 Original-Received: by pwi3 with SMTP id 3so572954pwi.0 for ; Wed, 18 Aug 2010 08:31:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:received:from:to:subject:date :message-id:user-agent:mime-version:content-type; bh=BMofCN5w0Fk6FVglN71eMrB3uWRZtlgC7bghGq4NF7E=; b=WLcwhk63AcVEb6OHxm6VghfNMDWgsmMn0w0086yoz3fX5d36ZZx+z2ZDTT6U/U+xic 5AGoFE69mb26uhiELTV4Fw3Gfk2ahpDE0lHnbAoyCKXZtZpNzZ3ar1LlKfNUIyU8q8bQ PFJu7GotMxm3JQ2HE7mmHt0EQD56vtzrtuMqI= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:subject:date:message-id:user-agent:mime-version :content-type; b=fkrbldoK+YE0Kvx8SdqDHHLuXfqlzroQ53rxhA1prWHhUdNmHldlGQJ1CXqy3gvw6V z2Tpi8FewfbXM6PQCm3e+OFRpknvZSM0SXskLP16DoU5VLSHPI02w8HmpCkw+Ib3CzMN t+D2D8peWucZ/BpPABxYkjWG0Yf5D2Un4IMac= Original-Received: by 10.114.137.8 with SMTP id k8mr9731476wad.202.1282145498053; Wed, 18 Aug 2010 08:31:38 -0700 (PDT) Original-Received: from bhj.home-linux.org ([123.121.192.150]) by mx.google.com with ESMTPS id n32sm692502wag.23.2010.08.18.08.31.35 (version=TLSv1/SSLv3 cipher=RC4-MD5); Wed, 18 Aug 2010 08:31:36 -0700 (PDT) Original-Received: from bhj.homelinux.org.borqs.com (localhost [127.0.0.1]) by bhj.home-linux.org (Postfix) with ESMTP id 63C3DA1286 for ; Wed, 18 Aug 2010 23:31:32 +0800 (CST) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1.50 (gnu/linux) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:128835 Archived-At: --=-=-= Hi, all I have wrote a little lisp and a perl script to tell where I am when I'm reading source code. The lisp code is short: (defun where-are-we () (interactive) (save-excursion (end-of-line) (shell-command-on-region 1 (point) (concat "where-are-we " (or (buffer-file-name) (buffer-name)) (format " %s" tab-width))))) The perl script (also named where-are-we) is attached. When invoked on the last line of the above lisp code, the output is like following: /home/bhj/windows-config/.emacs:1005: (format " %s" tab-width))))) (defun where-are-we () ... (save-excursion ... (shell-command-on-region ... (concat "where-are-we " ... => (format " %s" tab-width))))) Another example from reading Android source code: /home/bhj/src/android/frameworks/base/libs/ui/EventHub.cpp:474: outFlags[codeIndex] = 1; /* * Inspect the known devices to determine whether physical keys exist for the given * framework-domain key codes. */ bool EventHub::hasKeys(size_t numCodes, int32_t* keyCodes, uint8_t* outFlags) { for (size_t codeIndex = 0; codeIndex < numCodes; codeIndex++) { ... for (int n = 0; (n < mFDCount) && (outFlags[codeIndex] == 0); n++) { if (mDevices[n]) { ... if (!err) { ... for (size_t sc = 0; sc < scanCodes.size(); sc++) { if (test_bit(scanCodes[sc], mDevices[n]->keyBitmask)) { => outFlags[codeIndex] = 1; Supposedly this can be useful when reading source code and taking note, even better if used with remember.el. That way, you can easily write a scenario analysis about which function called which function and so on... Hope you can find it useful. --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=where-are-we Content-Transfer-Encoding: base64 IyEvdXNyL2Jpbi9lbnYgcGVybAoKIyByZXBvcnQgd2hlcmUgd2UgYXJlLCBpbiB3aGljaCBmaWxl LCBvbiB3aGljaCBsaW5lLCBpbiB3aGF0IGNvbnRleHQ/IChpbiB3aGljaCBjbGFzcywgZnVuY3Rp b24vbWV0aG9kLCBldGMpCgojIHByZWZlcmFibHkgaXQgaXMgdXNlZCB3aXRoaW4gRW1hY3MsIHNv Li4uCiMgd2UgdGFrZSAyIGFyZywgMXN0IGlzIHRoZSBmaWxlL2J1ZmZlciBuYW1lLCAybmQgaXMg dGhlIHRhYi13aWR0aCBidWZmZXItbG9jYWwgdmFyaWFibGUuIAojIHRoZSAybmQgYXJnIGhlbHAg dXMgZGVjaWRlIHRoZSBpbmRlbnRhdGlvbiwgYW5kIHRoZSBjb250ZXh0LgojIHRoZW4gd2UgcmVh ZCBzdGFuZGFyZCBpbnB1dCwgaXQgc2hvdWxkIGJlIHJlZ2lvbigwLCBlbmQtb2YtbGluZShwb2lu dCkpIGZlZCBmcm9tIEVtYWNzIGJ1ZmZlci4KCiMgb3V0cHV0IHNob3VsZCBiZSBsaWtlOiAKCiAg ICAjIC9ob21lL2Joai9zcmMvYW5kcm9pZC1udi1mcm95by9mcmFtZXdvcmtzL2Jhc2UvbGlicy91 aS9FdmVudEh1Yi5jcHA6MzI4OiAgICAgd2hpbGUoMSkgewogICAgIyAgICAKICAgICMgICAgIGJv b2wgRXZlbnRIdWI6OmdldEV2ZW50KGludDMyX3QqIG91dERldmljZUlkLCBpbnQzMl90KiBvdXRU eXBlLAogICAgIyAgICAgICAgIGludDMyX3QqIG91dFNjYW5jb2RlLCBpbnQzMl90KiBvdXRLZXlj b2RlLCB1aW50MzJfdCAqb3V0RmxhZ3MsCiAgICAjICAgICAgICAgaW50MzJfdCogb3V0VmFsdWUs IG5zZWNzX3QqIG91dFdoZW4pCiAgICAjICAgICB7CiAgICAjICAgICAgICAgLi4uCiAgICAjCiAg ICAjID0+ICAgICAgd2hpbGUoMSkgewoKIyBob3cgd2UgYWNoaWV2ZSB0aGlzPyAKCnVzZSBFbmNv ZGU7CnVzZSB1dGY4Owp1c2Ugc3RyaWN0OwoKbXkgJGxpbmVfbnVtID0gMDsKbXkgQGxpbmVzID0g KCk7CihteSAkZmlsZV9uYW1lLCBteSAkdGFiX3dpZHRoKSA9IEBBUkdWOwoKb3BlbihteSAkZmls ZSwgIi18IiwgImV4cGFuZCAtdCAkdGFiX3dpZHRoIik7Cgp3aGlsZSAoPCRmaWxlPikgewogICRs aW5lX251bSsrOwogIGNob21wOwogICRfID0gZGVjb2RlX3V0ZjgoJF8pOwogIHB1c2ggQGxpbmVz LCAoJF8pOwp9CgpAbGluZXMgPSByZXZlcnNlIEBsaW5lczsKCiRsaW5lc1swXSA9fiBtL15ccyov OwpteSAkc3BhY2VzID0gbGVuZ3RoKCQmKTsKCm15IEBwcmludF9saW5lcyA9ICgpOwoKbXkgJGxh c3RfbGluZSA9IHNoaWZ0IEBsaW5lczsKcHVzaCBAcHJpbnRfbGluZXMsICgiICAgID0+ICAiIC4g JGxhc3RfbGluZSk7CgpteSAkbGltaXQgPSA1OwpteSAkb3V0bW9zdCA9IDA7CgoKbXkgJHByZXZf cHJpbnRfbGluZV9udW0gPSAkbGluZV9udW07Cm15ICRsYXN0X2xpbmVfbnVtID0gJGxpbmVfbnVt OwoKZm9yIChAbGluZXMpIHsKICAkbGluZV9udW0tLTsKICBpZiAoJF8gPX4gbS9eXHMqJC8pIHsg IyBza2lwIGVtcHR5IGxpbmVzCiAgICBpZiAoJGxpbWl0IDwgNSkgewogICAgICBsYXN0OwogICAg fSBlbHNlIHsKICAgICAgbmV4dDsKICAgIH0KICB9CgogICRfID1+IG0vXlxzKi87CiAgaWYgKCRz cGFjZXMgPiBsZW5ndGgoJCYpIG9yICRsaW1pdCA8IDUpIHsKICAgIGlmICgkcHJldl9wcmludF9s aW5lX251bSAhPSAkbGluZV9udW0rMSkgewogICAgICBwdXNoIEBwcmludF9saW5lcywgKCIgICAg ICAgICIgLiAoIiAiIHggJHNwYWNlcykgLiAiLi4uIik7CiAgICB9CiAgICAkcHJldl9wcmludF9s aW5lX251bSA9ICRsaW5lX251bTsKICAgIHB1c2ggQHByaW50X2xpbmVzLCAoIiAgICAgICAgIiAu ICRfKTsKICAgICRzcGFjZXMgPSBsZW5ndGgoJCYpOwogIH0KICBpZiAobGVuZ3RoKCQmKSA9PSAw KSB7CiAgICAkbGltaXQtLTsKICB9CiAgaWYgKCRsaW1pdCA9PSAwKSB7CiAgICBsYXN0OwogIH0K fQoKJCw9IlxuIjsKcHJpbnQgIiAgICAkZmlsZV9uYW1lOiRsYXN0X2xpbmVfbnVtOiAkbGFzdF9s aW5lXG4iOwpwcmludCByZXZlcnNlIEBwcmludF9saW5lczsK --=-=-=--