* Adding `#' at each new line with text until the end of the file @ 2010-05-17 16:05 Merciadri Luca 2010-05-17 18:26 ` Pascal J. Bourguignon 0 siblings, 1 reply; 11+ messages in thread From: Merciadri Luca @ 2010-05-17 16:05 UTC (permalink / raw) To: help-gnu-emacs -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi, I have some personally-defined function: == (defun psig () "Insert the signature for a personal posting on a newsgroup, including a saying." (interactive) (goto-char (point-max)) (or (= (char-after (- (point) 1)) ?\n) (newline 1)) (insert "-- \n") (let ((saying "")) (save-window-excursion (find-file "~/Sayings") (goto-char (point-min)) (search-forward "#") (delete-char -1) (setq fill-prefix nil) (mark-paragraph) (setq saying (buffer-substring (region-beginning) (region-end))) (exchange-point-and-mark) (if (eobp) (goto-char (1+ (point-min)))) ;(insert "#") (save-buffer)) (insert saying) )) == The file ~/Sayings contains sayings, and, at the beginning, each line with some saying was beginning with a #. So, my sayings' file looked like: == #saying1 #saying2 #... #sayingn == Nice, but my psig() function takes the `#' to tell me that the given saying has already been used. As it looks for the following `#', it takes the first line with `#' beginning it, that is, the first saying which has not been already used before. The problem is that, as I do not have *a lot* of sayings, I would like Gnus to modify the sayings' file so it looks like at its beginning, that is, with a `#' beginning each saying. I tried == (defun fildi () (find-file "/~Sayings") (goto-char (point-min)) ; go to the first saying, and do the following until the end of the ; file is reached, for each line with some text on it: (insert "#") (save-buffer)) == But I don't know how to translate my two lines of comments into real ELisp code. Any idea about how I could achieve this? Thanks. - -- Merciadri Luca See http://www.student.montefiore.ulg.ac.be/~merciadri/ - -- Act today only, tomorrow is too late. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) Comment: Processed by Mailcrypt 3.5.8 <http://mailcrypt.sourceforge.net/> iEYEARECAAYFAkvxaTQACgkQM0LLzLt8MhzYBQCgoZsPqIFxOkVJjMnpdh41rUMw 0AMAoKILCLVRtsastH6moo0tjpbqU7Gg =XnME -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Adding `#' at each new line with text until the end of the file 2010-05-17 16:05 Adding `#' at each new line with text until the end of the file Merciadri Luca @ 2010-05-17 18:26 ` Pascal J. Bourguignon 2010-05-17 20:11 ` Merciadri Luca 0 siblings, 1 reply; 11+ messages in thread From: Pascal J. Bourguignon @ 2010-05-17 18:26 UTC (permalink / raw) To: help-gnu-emacs Merciadri Luca <Luca.Merciadri@student.ulg.ac.be> writes: > The problem is that, as I do not have *a lot* of sayings, I would like > Gnus to modify the sayings' file so it looks like at its beginning, > that is, with a `#' beginning each saying. > > I tried > > == > (defun fildi () > (find-file "/~Sayings") > (goto-char (point-min)) > ; go to the first saying, and do the following until the end of the > ; file is reached, for each line with some text on it: > (insert "#") > (save-buffer)) > == > > But I don't know how to translate my two lines of comments into real > ELisp code. Any idea about how I could achieve this? A line that has some text on it is a line that has at least one character right? So: (while (< (point) (point-max)) (when (looking-at ".") (insert "#")) (forward-line)) -- __Pascal Bourguignon__ http://www.informatimago.com/ ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Adding `#' at each new line with text until the end of the file 2010-05-17 18:26 ` Pascal J. Bourguignon @ 2010-05-17 20:11 ` Merciadri Luca [not found] ` <87zkzyjkcb.fsf@kuiper.lan.informatimago.com> 0 siblings, 1 reply; 11+ messages in thread From: Merciadri Luca @ 2010-05-17 20:11 UTC (permalink / raw) To: help-gnu-emacs -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 pjb@informatimago.com (Pascal J. Bourguignon) writes: > > So: > (while (< (point) (point-max)) > (when (looking-at ".") > (insert "#")) > (forward-line)) > After extensive testing, == (defun fildi () (find-file "~/Sayings") (goto-char (point-min)) (while (< (point) (point-max)) (when (looking-at ".") (insert "#")) (forward-line)) ) == does not work. When I evaluate it using C-x C-e (in a buffer), it only says `fildi', which does not look very interesting. What am I doing wrong? It finds the file; it goes to the beginning of it; while it has not reached the end of the file, it looks for a line containing a dot (as every saying ends by a dot); while this works, it inserts a "#" and, as the cursor is at the beginning of the line, it inserts a "#" at the beginning of the line. It also goes to the next line. And? - -- Merciadri Luca See http://www.student.montefiore.ulg.ac.be/~merciadri/ - -- When making your choices in life, do not forget to live. (Samuel Johnson) -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) Comment: Processed by Mailcrypt 3.5.8 <http://mailcrypt.sourceforge.net/> iEYEARECAAYFAkvxovUACgkQM0LLzLt8Mhy/UwCfZVeNrnTF0Ygl0XwS54iTVvEa qRwAn1oBeyo6ORYEJ1D/YZ2zVu6uCvyZ =0fJA -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 11+ messages in thread
[parent not found: <87zkzyjkcb.fsf@kuiper.lan.informatimago.com>]
* Re: Adding `#' at each new line with text until the end of the file [not found] ` <87zkzyjkcb.fsf@kuiper.lan.informatimago.com> @ 2010-05-18 10:09 ` Merciadri Luca 2010-05-18 12:06 ` Pascal J. Bourguignon 0 siblings, 1 reply; 11+ messages in thread From: Merciadri Luca @ 2010-05-18 10:09 UTC (permalink / raw) To: help-gnu-emacs -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 pjb@informatimago.com (Pascal J. Bourguignon) writes: > Merciadri Luca <Luca.Merciadri@student.ulg.ac.be> writes: > >> pjb@informatimago.com (Pascal J. Bourguignon) writes: >> >>> >>> So: >>> (while (< (point) (point-max)) >>> (when (looking-at ".") >>> (insert "#")) >>> (forward-line)) >>> >> >> After extensive testing, >> >> == >> (defun fildi () >> (find-file "~/Sayings") >> (goto-char (point-min)) >> (while (< (point) (point-max)) >> (when (looking-at ".") >> (insert "#")) >> (forward-line)) >> ) >> == >> >> does not work. When I evaluate it using C-x C-e (in a buffer), it only >> says `fildi', which does not look very interesting. What am I doing >> wrong? It finds the file; it goes to the beginning of it; while it has >> not reached the end of the file, it looks for a line containing a dot >> (as every saying ends by a dot); > > No. Did you read the documentation of looking-at? No. I should have done it. > Because that's > what you should do for every new function you see! Nice reflex. > What does the > documentation of looking-at says about the arguments of the function? > > (looking-at ".") tests whether the cursor is at position where there > is any character, but a newline. That is, it tests whether the line > contains something, since we should be at the beginning of the line, > because this is what point-min should be at (actually, unless you > narrow the region from the middle of a line), and this is ensured by > forward-line. Okay, thanks. > >> while this works, it inserts a "#" >> and, as the cursor is at the beginning of the line, it inserts a "#" >> at the beginning of the line. It also goes to the next line. And? > > Wasn't it what you asked for? Otherwise I didn't understand what you > wanted. Sure, but, as I explained in my previous message, it does not even modify the Sayings file. Why? - -- Merciadri Luca See http://www.student.montefiore.ulg.ac.be/~merciadri/ - -- All flowers are not in one garden. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) Comment: Processed by Mailcrypt 3.5.8 <http://mailcrypt.sourceforge.net/> iEYEARECAAYFAkvyZ1EACgkQM0LLzLt8MhxBqQCfTSIZs8NH6I+BWy9zXViSHlDc 65IAnie+few8wvSEwVuQMNtnmNao6tdq =uGJQ -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Adding `#' at each new line with text until the end of the file 2010-05-18 10:09 ` Merciadri Luca @ 2010-05-18 12:06 ` Pascal J. Bourguignon 2010-05-18 16:47 ` Merciadri Luca 0 siblings, 1 reply; 11+ messages in thread From: Pascal J. Bourguignon @ 2010-05-18 12:06 UTC (permalink / raw) To: help-gnu-emacs Merciadri Luca <Luca.Merciadri@student.ulg.ac.be> writes: > pjb@informatimago.com (Pascal J. Bourguignon) writes: > >> Merciadri Luca <Luca.Merciadri@student.ulg.ac.be> writes: >> >>> pjb@informatimago.com (Pascal J. Bourguignon) writes: >>> >>>> >>>> So: >>>> (while (< (point) (point-max)) >>>> (when (looking-at ".") >>>> (insert "#")) >>>> (forward-line)) >>>> >>> >>> After extensive testing, >>> >>> == >>> (defun fildi () >>> (find-file "~/Sayings") >>> (goto-char (point-min)) >>> (while (< (point) (point-max)) >>> (when (looking-at ".") >>> (insert "#")) >>> (forward-line)) >>> ) >>> == >>> >>> does not work. When I evaluate it using C-x C-e (in a buffer), it only >>> says `fildi', which does not look very interesting. What am I doing >>> wrong? It finds the file; it goes to the beginning of it; while it has >>> not reached the end of the file, it looks for a line containing a dot >>> (as every saying ends by a dot); >> >> No. Did you read the documentation of looking-at? > No. I should have done it. >> Because that's >> what you should do for every new function you see! > Nice reflex. > >> What does the >> documentation of looking-at says about the arguments of the function? >> >> (looking-at ".") tests whether the cursor is at position where there >> is any character, but a newline. That is, it tests whether the line >> contains something, since we should be at the beginning of the line, >> because this is what point-min should be at (actually, unless you >> narrow the region from the middle of a line), and this is ensured by >> forward-line. > Okay, thanks. >> >>> while this works, it inserts a "#" >>> and, as the cursor is at the beginning of the line, it inserts a "#" >>> at the beginning of the line. It also goes to the next line. And? >> >> Wasn't it what you asked for? Otherwise I didn't understand what you >> wanted. > Sure, but, as I explained in my previous message, it does not even > modify the Sayings file. Why? Because you didn't instruct the program to modify the file. Read the documentation of insert, for example. Does it mention files? What does insert modify? \f Here is a macro that could be useful: (require 'cl) (defmacro* with-file (file-and-options &body body) "Processes BODY with a buffer on the given file. DO: find-file or find-file-literally, process body, and optionally save the buffer and kill it. save is not done if body exits exceptionnaly. kill is always done as specified. FILE-AND-OPTION: either an atom evaluated to a path, or (path &key (save t) (kill t) (literal nil)) " (if (atom file-and-options) `(with-file (,file-and-options) ,@body) ;; destructuring-bind is broken, we cannot give anything else than nil ;; as default values: (destructuring-bind (path &key (save nil savep) (kill nil killp) (literal nil literalp)) file-and-options (unless savep (setf save t)) (unless killp (setf kill t)) `(unwind-protect (progn (,(if literal 'find-file-literally 'find-file) ,path) (prog1 (save-excursion ,@body) ,(when save `(save-buffer 1)))) ,(when kill `(kill-buffer (current-buffer))))))) -- __Pascal Bourguignon__ http://www.informatimago.com ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Adding `#' at each new line with text until the end of the file 2010-05-18 12:06 ` Pascal J. Bourguignon @ 2010-05-18 16:47 ` Merciadri Luca 2010-05-18 20:27 ` Pascal J. Bourguignon 0 siblings, 1 reply; 11+ messages in thread From: Merciadri Luca @ 2010-05-18 16:47 UTC (permalink / raw) To: help-gnu-emacs -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 pjb@informatimago.com (Pascal J. Bourguignon) writes: >> Sure, but, as I explained in my previous message, it does not even >> modify the Sayings file. Why? > > Because you didn't instruct the program to modify the file. > Read the documentation of insert, for example. Does it mention files? > What does insert modify? Insert modifies the current buffer, according to the manual. Or find-file loads its arg into a buffer. So, if find-file loads its arg into the *current* buffer, insert should modify the current buffer, that is, `Sayings'. > Here is a macro that could be useful: > > (require 'cl) > (defmacro* with-file (file-and-options &body body) > "Processes BODY with a buffer on the given file. > DO: find-file or find-file-literally, process body, and > optionally save the buffer and kill it. > save is not done if body exits exceptionnaly. > kill is always done as specified. > FILE-AND-OPTION: either an atom evaluated to a path, > or (path &key (save t) (kill t) (literal nil)) > " > (if (atom file-and-options) > `(with-file (,file-and-options) ,@body) > ;; destructuring-bind is broken, we cannot give anything else than nil > ;; as default values: > (destructuring-bind (path &key (save nil savep) (kill nil killp) > (literal nil literalp)) > file-and-options > (unless savep (setf save t)) > (unless killp (setf kill t)) > `(unwind-protect > (progn > (,(if literal 'find-file-literally 'find-file) ,path) > (prog1 (save-excursion ,@body) > ,(when save `(save-buffer 1)))) > ,(when kill > `(kill-buffer (current-buffer))))))) Thanks. I'll keep it. - -- Merciadri Luca See http://www.student.montefiore.ulg.ac.be/~merciadri/ - -- The whole dignity of man lies in the power of thought. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) Comment: Processed by Mailcrypt 3.5.8 <http://mailcrypt.sourceforge.net/> iEYEARECAAYFAkvyxLcACgkQM0LLzLt8MhyKawCfXMN2zho0p+/bBEc1gQAG3YmD MO4AoK6a8STV9snV2hmw0the3TF9GnIy =CMWS -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Adding `#' at each new line with text until the end of the file 2010-05-18 16:47 ` Merciadri Luca @ 2010-05-18 20:27 ` Pascal J. Bourguignon 2010-05-19 16:08 ` Merciadri Luca 0 siblings, 1 reply; 11+ messages in thread From: Pascal J. Bourguignon @ 2010-05-18 20:27 UTC (permalink / raw) To: help-gnu-emacs Merciadri Luca <Luca.Merciadri@student.ulg.ac.be> writes: > pjb@informatimago.com (Pascal J. Bourguignon) writes: > >>> Sure, but, as I explained in my previous message, it does not even >>> modify the Sayings file. Why? >> >> Because you didn't instruct the program to modify the file. >> Read the documentation of insert, for example. Does it mention files? >> What does insert modify? > Insert modifies the current buffer, according to the manual. Or > find-file loads its arg into a buffer. So, if find-file loads its arg > into the *current* buffer, insert should modify the current buffer, > that is, `Sayings'. (list (progn (find-file "/tmp/Sayings") (buffer-name (current-buffer))) (progn (find-file "/mnt/Sayings") (buffer-name (current-buffer)))) --> ("Sayings" "Sayings<2>") Here you have two files, named "/tmp/Sayings" and "/mnt/Sayings", and when opening them at the same time, we get "Sayings" and "Sayings<2>" as buffer names. Clearly, the buffer names are not entirely independant from the file names, but it should be obvious from the example, that there's two name spaces and two different kind of entities. A buffer named "X" is not a file name "X". So to repeat what you wrote above: - find-file (or find-file-noselect) loads the contents of a _file_ into a _buffer_. - insert modifies the contents of a _buffer_. When you do only these to action what happens to the _file_? >> Here is a macro that could be useful: Here with find-file-noselect as it has been advised (not tested): (require 'cl) (defmacro* with-file (file-and-options &body body) "Processes BODY with a buffer on the given file. DO: find-file or find-file-literally, process body, and optionally save the buffer and kill it. save is not done if body exits exceptionnaly. kill is always done as specified. FILE-AND-OPTION: either an atom evaluated to a path, or (path &key (save t) (kill t) (literal nil)) " (if (atom file-and-options) `(with-file (,file-and-options) ,@body) ;; destructuring-bind is broken, we cannot give anything else than nil ;; as default values: (destructuring-bind (path &key (save nil savep) (kill nil killp) (literal nil literalp)) file-and-options (unless savep (setf save t)) (unless killp (setf kill t)) `(unwind-protect (progn (find-file-noselect ,path t ,literal) (prog1 (save-excursion ,@body) ,(when save `(save-buffer 1)))) ,(when kill `(kill-buffer (current-buffer))))))) > Thanks. I'll keep it. -- __Pascal Bourguignon__ http://www.informatimago.com/ ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Adding `#' at each new line with text until the end of the file 2010-05-18 20:27 ` Pascal J. Bourguignon @ 2010-05-19 16:08 ` Merciadri Luca 2010-05-20 13:18 ` Pascal J. Bourguignon 2010-05-20 19:05 ` Andreas Politz 0 siblings, 2 replies; 11+ messages in thread From: Merciadri Luca @ 2010-05-19 16:08 UTC (permalink / raw) To: help-gnu-emacs -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 pjb@informatimago.com (Pascal J. Bourguignon) writes: > Merciadri Luca <Luca.Merciadri@student.ulg.ac.be> writes: > >> pjb@informatimago.com (Pascal J. Bourguignon) writes: >> >>>> Sure, but, as I explained in my previous message, it does not even >>>> modify the Sayings file. Why? >>> >>> Because you didn't instruct the program to modify the file. >>> Read the documentation of insert, for example. Does it mention files? >>> What does insert modify? >> Insert modifies the current buffer, according to the manual. Or >> find-file loads its arg into a buffer. So, if find-file loads its arg >> into the *current* buffer, insert should modify the current buffer, >> that is, `Sayings'. > > (list > (progn (find-file "/tmp/Sayings") > (buffer-name (current-buffer))) > (progn (find-file "/mnt/Sayings") > (buffer-name (current-buffer)))) > --> ("Sayings" "Sayings<2>") > > Here you have two files, named "/tmp/Sayings" and "/mnt/Sayings", and > when opening them at the same time, we get "Sayings" and "Sayings<2>" > as buffer names. > > Clearly, the buffer names are not entirely independant from the file > names, but it should be obvious from the example, that there's two > name spaces and two different kind of entities. A buffer named "X" is > not a file name "X". > > So to repeat what you wrote above: > > - find-file (or find-file-noselect) loads the contents of a _file_ > into a _buffer_. > > - insert modifies the contents of a _buffer_. > > When you do only these to action what happens to the _file_? Nothing, actually. That's the problem. >>> Here is a macro that could be useful: > > Here with find-file-noselect as it has been advised (not tested): > > (require 'cl) > (defmacro* with-file (file-and-options &body body) > "Processes BODY with a buffer on the given file. > DO: find-file or find-file-literally, process body, and > optionally save the buffer and kill it. > save is not done if body exits exceptionnaly. > kill is always done as specified. > FILE-AND-OPTION: either an atom evaluated to a path, > or (path &key (save t) (kill t) (literal nil)) > " > (if (atom file-and-options) > `(with-file (,file-and-options) ,@body) > ;; destructuring-bind is broken, we cannot give anything else than nil > ;; as default values: > (destructuring-bind (path &key (save nil savep) (kill nil killp) > (literal nil literalp)) > file-and-options > (unless savep (setf save t)) > (unless killp (setf kill t)) > `(unwind-protect > (progn > (find-file-noselect ,path t ,literal) > (prog1 (save-excursion ,@body) > ,(when save `(save-buffer 1)))) > ,(when kill > `(kill-buffer (current-buffer))))))) > >> Thanks. I'll keep it. Thanks. - -- Merciadri Luca See http://www.student.montefiore.ulg.ac.be/~merciadri/ - -- Nobody leaves us, we only leave others. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) Comment: Processed by Mailcrypt 3.5.8 <http://mailcrypt.sourceforge.net/> iEYEARECAAYFAkv0DPwACgkQM0LLzLt8Mhyt3gCgpC8sYQPznCu0gI19a9TszeXK +bQAn2rfXklxI3EmG6Pjs6LBAAVnmmTU =2zNs -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Adding `#' at each new line with text until the end of the file 2010-05-19 16:08 ` Merciadri Luca @ 2010-05-20 13:18 ` Pascal J. Bourguignon 2010-05-20 18:09 ` Merciadri Luca 2010-05-20 19:05 ` Andreas Politz 1 sibling, 1 reply; 11+ messages in thread From: Pascal J. Bourguignon @ 2010-05-20 13:18 UTC (permalink / raw) To: help-gnu-emacs Merciadri Luca <Luca.Merciadri@student.ulg.ac.be> writes: > pjb@informatimago.com (Pascal J. Bourguignon) writes: > >> Merciadri Luca <Luca.Merciadri@student.ulg.ac.be> writes: >> >>> pjb@informatimago.com (Pascal J. Bourguignon) writes: >>> >>>>> Sure, but, as I explained in my previous message, it does not even >>>>> modify the Sayings file. Why? >>>> >>>> Because you didn't instruct the program to modify the file. >>>> Read the documentation of insert, for example. Does it mention files? >>>> What does insert modify? >>> Insert modifies the current buffer, according to the manual. Or >>> find-file loads its arg into a buffer. So, if find-file loads its arg >>> into the *current* buffer, insert should modify the current buffer, >>> that is, `Sayings'. >> >> (list >> (progn (find-file "/tmp/Sayings") >> (buffer-name (current-buffer))) >> (progn (find-file "/mnt/Sayings") >> (buffer-name (current-buffer)))) >> --> ("Sayings" "Sayings<2>") >> >> Here you have two files, named "/tmp/Sayings" and "/mnt/Sayings", and >> when opening them at the same time, we get "Sayings" and "Sayings<2>" >> as buffer names. >> >> Clearly, the buffer names are not entirely independant from the file >> names, but it should be obvious from the example, that there's two >> name spaces and two different kind of entities. A buffer named "X" is >> not a file name "X". >> >> So to repeat what you wrote above: >> >> - find-file (or find-file-noselect) loads the contents of a _file_ >> into a _buffer_. >> >> - insert modifies the contents of a _buffer_. >> >> When you do only these to action what happens to the _file_? > Nothing, actually. That's the problem. Yes. That's because you haven't said something. What should you say to have the file modified in any way? \f Something like: - save the buffer to the file, keeping a backup of the old file. or, in emacs lisp: (save-buffer 1) Remember: Computers only do what you tell them to do! ;-) -- __Pascal Bourguignon__ http://www.informatimago.com ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Adding `#' at each new line with text until the end of the file 2010-05-20 13:18 ` Pascal J. Bourguignon @ 2010-05-20 18:09 ` Merciadri Luca 0 siblings, 0 replies; 11+ messages in thread From: Merciadri Luca @ 2010-05-20 18:09 UTC (permalink / raw) To: help-gnu-emacs -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 pjb@informatimago.com (Pascal J. Bourguignon) writes: > Merciadri Luca <Luca.Merciadri@student.ulg.ac.be> writes: > >> pjb@informatimago.com (Pascal J. Bourguignon) writes: >> >>> Merciadri Luca <Luca.Merciadri@student.ulg.ac.be> writes: >>> >>>> pjb@informatimago.com (Pascal J. Bourguignon) writes: >>>> >>>>>> Sure, but, as I explained in my previous message, it does not even >>>>>> modify the Sayings file. Why? >>>>> >>>>> Because you didn't instruct the program to modify the file. >>>>> Read the documentation of insert, for example. Does it mention files? >>>>> What does insert modify? >>>> Insert modifies the current buffer, according to the manual. Or >>>> find-file loads its arg into a buffer. So, if find-file loads its arg >>>> into the *current* buffer, insert should modify the current buffer, >>>> that is, `Sayings'. >>> >>> (list >>> (progn (find-file "/tmp/Sayings") >>> (buffer-name (current-buffer))) >>> (progn (find-file "/mnt/Sayings") >>> (buffer-name (current-buffer)))) >>> --> ("Sayings" "Sayings<2>") >>> >>> Here you have two files, named "/tmp/Sayings" and "/mnt/Sayings", and >>> when opening them at the same time, we get "Sayings" and "Sayings<2>" >>> as buffer names. >>> >>> Clearly, the buffer names are not entirely independant from the file >>> names, but it should be obvious from the example, that there's two >>> name spaces and two different kind of entities. A buffer named "X" is >>> not a file name "X". >>> >>> So to repeat what you wrote above: >>> >>> - find-file (or find-file-noselect) loads the contents of a _file_ >>> into a _buffer_. >>> >>> - insert modifies the contents of a _buffer_. >>> >>> When you do only these to action what happens to the _file_? >> Nothing, actually. That's the problem. > > Yes. That's because you haven't said something. What should you say > to have the file modified in any way? > > \f > Something like: > > - save the buffer to the file, keeping a backup of the old file. > > or, in emacs lisp: > > (save-buffer 1) > > Remember: Computers only do what you tell them to do! ;-) Yes. Thanks for your implication in this. I am now trying with == (defun fildi () (find-file "~/Sayings") ;(goto-char (point-min)) (while (< (point) (point-max)) (when (looking-at ".") (insert "#")) (forward-line)) (save-buffer 1) ) == which `should' do the trick, as the file is found, opened in the buffer, the buffer is modified as I want it to be, and the buffer is then saved. Why is it still erroneous? Thanks. - -- Merciadri Luca See http://www.student.montefiore.ulg.ac.be/~merciadri/ - -- A real friend is someone who walks in when the rest of the world walks out. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) Comment: Processed by Mailcrypt 3.5.8 <http://mailcrypt.sourceforge.net/> iEYEARECAAYFAkv1etkACgkQM0LLzLt8MhzstwCdG6pMCOXZSljbXxz6Snp5/c/N wK4Anj2S5SO1H5wExmyvS3lCUHpLfbeZ =Ck8d -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Adding `#' at each new line with text until the end of the file 2010-05-19 16:08 ` Merciadri Luca 2010-05-20 13:18 ` Pascal J. Bourguignon @ 2010-05-20 19:05 ` Andreas Politz 1 sibling, 0 replies; 11+ messages in thread From: Andreas Politz @ 2010-05-20 19:05 UTC (permalink / raw) To: help-gnu-emacs Merciadri Luca <Luca.Merciadri@student.ulg.ac.be> writes: >> Here with find-file-noselect as it has been advised (not tested): >> >> (require 'cl) >> (defmacro* with-file (file-and-options &body body) >> "Processes BODY with a buffer on the given file. >> DO: find-file or find-file-literally, process body, and >> optionally save the buffer and kill it. >> save is not done if body exits exceptionnaly. >> kill is always done as specified. >> FILE-AND-OPTION: either an atom evaluated to a path, >> or (path &key (save t) (kill t) (literal nil)) >> " >> (if (atom file-and-options) >> `(with-file (,file-and-options) ,@body) >> ;; destructuring-bind is broken, we cannot give anything else than nil >> ;; as default values: >> (destructuring-bind (path &key (save nil savep) (kill nil killp) >> (literal nil literalp)) >> file-and-options >> (unless savep (setf save t)) >> (unless killp (setf kill t)) >> `(unwind-protect >> (progn >> (find-file-noselect ,path t ,literal) >> (prog1 (save-excursion ,@body) >> ,(when save `(save-buffer 1)))) >> ,(when kill >> `(kill-buffer (current-buffer))))))) >> This macro may kill buffers at random, because `find-file-noselect' does not make the files buffer current. But even with `find-file', this may go wrong, in case the function does not succeed or body changes the current buffer. -ap ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2010-05-20 19:05 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-05-17 16:05 Adding `#' at each new line with text until the end of the file Merciadri Luca 2010-05-17 18:26 ` Pascal J. Bourguignon 2010-05-17 20:11 ` Merciadri Luca [not found] ` <87zkzyjkcb.fsf@kuiper.lan.informatimago.com> 2010-05-18 10:09 ` Merciadri Luca 2010-05-18 12:06 ` Pascal J. Bourguignon 2010-05-18 16:47 ` Merciadri Luca 2010-05-18 20:27 ` Pascal J. Bourguignon 2010-05-19 16:08 ` Merciadri Luca 2010-05-20 13:18 ` Pascal J. Bourguignon 2010-05-20 18:09 ` Merciadri Luca 2010-05-20 19:05 ` Andreas Politz
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).