From mboxrd@z Thu Jan 1 00:00:00 1970 From: Karl Voit Subject: Elisp: help on string operations for fast file visiting Date: Mon, 7 Nov 2016 17:27:01 +0100 Message-ID: <2016-11-07T17-24-53@devnull.Karl-Voit.at> Reply-To: Karl Voit Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:56767) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1c3mmD-0001Wm-8J for emacs-orgmode@gnu.org; Mon, 07 Nov 2016 11:28:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1c3mm9-0006bE-7k for emacs-orgmode@gnu.org; Mon, 07 Nov 2016 11:28:05 -0500 Received: from [195.159.176.226] (port=58642 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1c3mm9-0006aw-1a for emacs-orgmode@gnu.org; Mon, 07 Nov 2016 11:28:01 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1c3mlZ-0005Kf-J2 for emacs-orgmode@gnu.org; Mon, 07 Nov 2016 17:27:25 +0100 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: emacs-orgmode@gnu.org Hi! For Memacs[1], I'd like to come up with a very fast Org-mode method to open files independent of their location on your disk. I accomplished everything necessary so far. However, I've got issues writing an elisp function for extracting a file and sending it to a function that calls the operating system app associated. My elisp knowledge is still too bad :-( What I've got is a string (from the lookup) which contains: (1) nothing (2) one line like "** <2008-06-17 21:43> [[file:/home/user/dir/2008-06-17 description of file.odp][2008-06-17 description of file.odp]]" (3) multiple lines like (2) but with different files and links I'd like to get a "Sorry" message for (1). Easy, if only I know how to count lines in strings (as opposed to buffers). For (2) I'd like to call my-open-in-external-app(string). For (3), I'd like to use the first line just as in (2) as a starter. I do have some ideas on gracious "error-recovering" on this one but that's maybe too complicated to code for now: getting rid of substrings delimited by not-'a-zA-Z0-9' from the end of the link until a match is found; message in case there is no unique match which could be found this way. Could you please help me here? It'd help all users of the file index module of Memacs. The mini fragment I have so far is following but the regex seems to be broken: #+BEGIN_SRC elisp (let ( (result (replace-regexp-in-string "\r?\n$" "" (shell-command-to-string (concat "grep " "2008-06-17" " ~/org/memacs/files.org_archive");; hard coded stuff for testing purposes ) ) ) ) (message (concat "result -> " result)) (re-search-forward " \[\[.+\]\[" nil t 1) (let ( (firstlink ((match-string 1))) ) (message (concat "first link -> " firstlink)) ) ) #+END_SRC [1] https://github.com/novoid/Memacs -- mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML to Org-mode: > get Memacs from https://github.com/novoid/Memacs < https://github.com/novoid/extract_pdf_annotations_to_orgmode + more on github