[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Adding `#' at each new line with text until the end of the file
From: |
Pascal J. Bourguignon |
Subject: |
Re: Adding `#' at each new line with text until the end of the file |
Date: |
Wed, 08 Dec 2010 15:08:52 -0000 |
User-agent: |
Gnus/5.101 (Gnus v5.10.10) Emacs/23.1 (gnu/linux) |
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/
- Adding `#' at each new line with text until the end of the file, Merciadri Luca, 2010/12/08
- Re: Adding `#' at each new line with text until the end of the file, Pascal J. Bourguignon, 2010/12/08
- Re: Adding `#' at each new line with text until the end of the file, Merciadri Luca, 2010/12/08
- Message not available
- Re: Adding `#' at each new line with text until the end of the file, Merciadri Luca, 2010/12/08
- Re: Adding `#' at each new line with text until the end of the file, Pascal J. Bourguignon, 2010/12/08
- Re: Adding `#' at each new line with text until the end of the file, Merciadri Luca, 2010/12/08
- Re: Adding `#' at each new line with text until the end of the file,
Pascal J. Bourguignon <=
- Re: Adding `#' at each new line with text until the end of the file, Merciadri Luca, 2010/12/08
- Re: Adding `#' at each new line with text until the end of the file, Pascal J. Bourguignon, 2010/12/08
- Re: Adding `#' at each new line with text until the end of the file, Merciadri Luca, 2010/12/08
- Re: Adding `#' at each new line with text until the end of the file, Andreas Politz, 2010/12/08