Google 網路論壇不再支援新的 Usenet 貼文或訂閱項目,但過往內容仍可供查看。

alternative to (require ...)

瀏覽次數:18 次
跳到第一則未讀訊息

Sam Halliday

未讀,
2004年2月24日 上午11:32:512004/2/24
收件者:
hi there,

most of the 3rd party packages i have for emacs (such as color-theme, php-mode,
htmlize) are loaded in my ~/.emacs file by statements such as

(require 'htmlize)

but if this package is not installed on the system, emacs bails on loading the
rest of my ~/.emacs file. this is quite annoying as i like to maintain a single
~/.emacs file and use it wherever i am using emacs.

is there an alternative command i can use, which doesn't result in emacs crying
if it can't find the package? or at least if there is an "if exists" check i
could do and incorporate into a wrapper function, say called (requests ...)

cheers,
Sam
--
Free High School Science Texts
http://savannah.nongnu.org/projects/fhsst
Sam's Homepages
http://fommil.homeunix.org/~samuel
http://www.ma.hw.ac.uk/~samuel

Kevin Rodgers

未讀,
2004年2月24日 中午12:21:482004/2/24
收件者:
Sam Halliday wrote:

> most of the 3rd party packages i have for emacs (such as color-theme, php-mode,
> htmlize) are loaded in my ~/.emacs file by statements such as
>
> (require 'htmlize)
>
> but if this package is not installed on the system, emacs bails on loading the
> rest of my ~/.emacs file. this is quite annoying as i like to maintain a single
> ~/.emacs file and use it wherever i am using emacs.
>
> is there an alternative command i can use, which doesn't result in emacs crying
> if it can't find the package? or at least if there is an "if exists" check i
> could do and incorporate into a wrapper function, say called (requests ...)

(condition-case nil
(require 'foo)
(error nil))


--
Kevin Rodgers

Eli Zaretskii

未讀,
2004年2月24日 中午12:19:152004/2/24
收件者:help-gn...@gnu.org
> From: Sam Halliday <dev...@example.com>
> Newsgroups: gnu.emacs.help
> Date: Tue, 24 Feb 2004 16:32:51 +0000

>
> (require 'htmlize)
>
> but if this package is not installed on the system, emacs bails on loading the
> rest of my ~/.emacs file. this is quite annoying as i like to maintain a single
> ~/.emacs file and use it wherever i am using emacs.
>
> is there an alternative command i can use, which doesn't result in emacs crying
> if it can't find the package? or at least if there is an "if exists" check i
> could do and incorporate into a wrapper function, say called (requests ...)

Use condition-case. Here's an example:

(condition-case err
(require 'saveplace)
(error
(message "Cannot save places %s" (cdr err))))

Reiner Steib

未讀,
2004年2月24日 中午12:36:262004/2/24
收件者:
On Tue, Feb 24 2004, Kevin Rodgers wrote:

> Sam Halliday wrote:
>
>> most of the 3rd party packages i have for emacs (such as
>> color-theme, php-mode, htmlize) are loaded in my ~/.emacs file by
>> statements such as (require 'htmlize)

Often you can `autoload' some functions instead of requiring the whole
package.

> (condition-case nil
> (require 'foo)
> (error nil))

What's wrong with (require 'foo nil t)?

,----[ C-h f require RET ]
| require is a built-in function.
| (require FEATURE &optional FILENAME NOERROR)
|
| [...]
| If the optional third argument NOERROR is non-nil,
| then return nil if the file is not found instead of signaling an error.
`----

Bye, Reiner.
--
,,,
(o o)
---ooO-(_)-Ooo--- PGP key available via WWW http://rsteib.home.pages.de/

David Kastrup

未讀,
2004年2月24日 中午12:40:462004/2/24
收件者:
Sam Halliday <dev...@example.com> writes:

> most of the 3rd party packages i have for emacs (such as
> color-theme, php-mode, htmlize) are loaded in my ~/.emacs file by
> statements such as
>
> (require 'htmlize)
>
> but if this package is not installed on the system, emacs bails on
> loading the rest of my ~/.emacs file. this is quite annoying as i
> like to maintain a single ~/.emacs file and use it wherever i am
> using emacs.
>
> is there an alternative command i can use, which doesn't result in
> emacs crying if it can't find the package? or at least if there is
> an "if exists" check i could do and incorporate into a wrapper
> function, say called (requests ...)

(condition-case nil
(require 'htmlize)
(error (message "Skipping load of htmlize")))

--
David Kastrup, Kriemhildstr. 15, 44793 Bochum

Ole Laursen

未讀,
2004年2月24日 下午1:47:582004/2/24
收件者:
Sam Halliday <dev...@example.com> writes:

[...]

> but if this package is not installed on the system, emacs bails on
> loading the rest of my ~/.emacs file. this is quite annoying as i
> like to maintain a single ~/.emacs file and use it wherever i am
> using emacs.

I do the following in my .emacs:

(if (file-readable-p "~/.local-emacs")
(load "~/.local-emacs"))

Then I put the stuff that is specific for a particular site into
.local-emacs so that I can keep the .emacs files synchronised.

--
Ole Laursen
http://www.cs.auc.dk/~olau/

jasonr

未讀,
2004年2月24日 下午4:12:582004/2/24
收件者:
Sam Halliday <dev...@example.com> writes:

> (require 'htmlize)


>
> is there an alternative command i can use, which doesn't result in
> emacs crying if it can't find the package?

I use:

(if (require 'htmlize nil t)
(progn
;; htmlize specific settings here
))


Or if there are no htmlize specific settings, just

(require 'htmlize nil t)

Sam Halliday

未讀,
2004年2月24日 下午5:41:362004/2/24
收件者:
Jason Rumney wrote:
> (if (require 'htmlize nil t)
> (progn
> ;; htmlize specific settings here
> ))

thanks to everyone who has responded to this thread, you have all been a
great help!

this answer seems to be the most practical; i am away to update my
~/.emacs and see if i can make an equivalent if statement for the
(autoload...) packages :-)

0 則新訊息