This page describes the latest Emacs-Lisp libraries by DrewAdams, and how to use them. It includes a brief list of recent changes to the list of files. For information on changes to individual files, see the change logs in the files.
(All of these libraries were also obtainable from MELPA. But MELPA no longer pulls libraries from EmacsWiki.)
EmacsWiki libraries are also mirrored on some GIT repositories, by others. But to be sure to get the latest versions of my libraries, download them from the wiki.
You can be pretty sure that my libraries on the wiki are untampered with, because their pages are locked except to EmacsWiki administrators.
(This page might not be completely up to date. I may have added some libraries since I last updated the page.)
Cette page est aussi disponible en franglais ;-) : PackagesElispDeDrew, mais cette page ci est plus a jour.
This page has the following sections:
My libraries on EmacsWiki are presented here in several lists, depending on which GnuEmacs releases they support.
Most of the libraries that work with Emacs 20 also work with Emacs versions older than Emacs 20 (but don’t ask me which!). Library sort+.el is needed only for Emacs older than version 20. It redefines function ‘sort-reorder-buffer’
so that it preserves text properties.
A list of deprecated libraries is also provided. These are generally older versions of libraries, with old names.
At the bottom of the page (see AllLibraries), there is a complete list of all of my libraries on the wiki, without descriptions. This is mainly for EmacsWiki search-indexing purposes (it uses format Lisp:icicles.el
instead of [[icicles.el]]
).
I use several Emacs versions, including (yes) Emacs 20. If a particular feature in one of my libraries doesn’t seem to work right for the Emacs version you use, please let me know.
Also, check the source code for conditional tests like these:
(< emacs-major-version 24) (>= emacs-major-version 21)
You can try to juggle the branches of such tests yourself – that is, try different branches to see what works in your Emacs version. Let me know what works and what doesn’t. – Thanks.
The newest of my libraries are these (in alphabetical order):
‘bookmark’
– see Bookmark+‘cus-edit’
to make Customize play better with the rest of Emacs – see CustomizingAndSaving‘descr-text’
‘diff-mode’
– see DiffEnhancements‘ediff’
: toggle case sensitivity (not needed for GNU Emacs 22 or later)‘emacsbug’
– see EmacsBugs‘facemenu’
– see FaceMenuPlus‘ffap’
(see FindFileAtPoint)‘finder’
‘find-func’
‘font-lock’
(see HighLight and FaceMenuPlus)‘grep’
; see also GrepPlus‘help-fns’
; see also HelpPlus‘help-mode’
; see also HelpPlus and HelpModePlus‘hl-line’
– see HighlightCurrentLine‘completing-read’
: minibuffer input completion and cycling – see Icicles‘loadhist’
) – see LibraryDependencies‘ls-lisp’
‘mouse-3’
– see Mouse3‘rec-edit-mode’
.savehist.el
’ that works with Emacs 20, in addition to the later versions – see SaveHist.‘toolbar’
; see also ToolBar‘y-or-n-p’
or ‘yes-or-no-p’
on a case-by-case basisI make minor changes to some libraries often, so check for the latest versions.
Tip: The best way to know what files have recently been uploaded to the ElispArea is to consult the recent uploads list: Recent uploads.
‘descr-text’
‘apropos’
‘autoload’
‘bookmark’
– see Bookmark+‘browse-kill-ring’
buff-menu.el
, from here: http://ftp.gnu.org/gnu/emacs/)‘cus-edit’
to make Customize play better with the rest of Emacs – see CustomizingAndSaving‘defface’
)delsel.el
’ so it works better with `completion.el
’‘descr-text’
(Emacs 22+ only)‘dired’
, ‘dired-aux’
, and ‘dired-x’
; see also DiredPlus‘dired-sort-menu’
, written by FrancisJWright‘ediff’
: toggle case sensitivity (not needed for GNU Emacs 22 or later)‘facemenu’
– see FaceMenuPlus‘faces’
‘ffap’
‘files’
‘finder’
‘frame’
‘completing-read’
: minibuffer input completion and cycling – see Icicles‘icomplete’
; see also IcompleteMode‘imenu’
; see also ImenuMode‘info’
– see also InfoPlus‘isearch’
; see also IncrementalSearch‘loadhist’
)‘ls-lisp’
‘macros’
‘menu-bar’
; see MenuBarPlus and HelpMenuBarPlus‘mouse’
– see MousePlus‘novice’
‘pp’
– see PP+‘replace’
; see also OccurBuffer‘ring’
; see also RingPlussavehist.el
’ that works with Emacs 20, in addition to the later versions.‘setnu’
setup.el
.)‘simple’
‘thingatpt’
; see also ThingAtPoint‘w-browser’
‘w32browser’
with standard Windows Open File box‘window’
‘compile’
; see also GrepPlus‘find-func’
‘font-lock’
(see HighLight and FaceMenuPlus)‘grep’
; see also GrepPlus‘help’
; see also HelpPlus and HelpMenuBarPlus‘help-fns’
; see also HelpPlus‘help-mode’
; see also HelpPlus and HelpModePlus‘hl-line’
– see HighlightCurrentLine‘rec-edit-mode’
.* yes-no.el – let your users specify use of ‘y-or-n-p’
or ‘yes-or-no-p’
on a case-by-case basis‘compile’
; see also GrepPlus‘diff’
– see DiffEnhancements‘diff-mode’
– see DiffEnhancements‘tool-bar’
; see also ToolBar‘compile’
for versions prior to Emacs 22; see also GrepPlus‘compile’
for versions prior to Emacs 22; see also GrepPlus‘diff’
for versions prior to Emacs 22 – see DiffEnhancements‘find-dired’
‘find-dired’
‘help-macro’
‘help’
; see also HelpPlus and HelpMenuBarPlus‘htmlize’
); see also SaveAsHtml‘options’
‘outline’
‘timer’
‘vc’
‘vc-hooks’
‘vc’
These libraries have been deprecated. In many cases, they have simply been renamed (for various reasons, including adherence to GNU naming standards).
In many cases, I wrote an extension of a standard GNU library (or sometimes an external library) that was called, say, foo.el
. I named the extension library foo+.el
. The `+
’ generally means that the library should be loaded after the standard library.
In a couple of cases, I wrote a library to be loaded before a standard library; these libraries are named with a ‘-’
, as in foo-.el
.
See Also: LibraryNames for information on the library naming conventions used.
You can of course use pieces of my code. But to get the best idea of it, try it all together:
In particular:
load-path
by changing the defvar
assignment of variable ‘drews-lisp-dir’
in emacs-init.el.CONTRIB
libraries to the ‘load-path’
. This refers to libraries I didn’t write, but I find useful (and I reference in my code). If you have some of these libraries, then adapt the code so they are in your ‘load-path’
(if not so already).(defvar 1on1-separate-minibuffer-frame-flag nil)
’.Note: Library emacs-init.el is not 100% up-to-date, but it should get you started. Let me know of any problems you have with it.
See TryItAll, then uncomment or comment-out blocks of code in emacs-init.el. Really, that’s the best way to go.
For finer tuning, change other user variables, besides those in emacs-init.el. You’ll find them in the various library files (see DrewsLibraries).
In the file header of each of my libraries, you will see a statement like this one from oneonone.el:
;; Features that
might
be required by this library:
;; `avoid', `cl', `files+', `frame-cmds', `frame-fns', `hexrgb', ;; `misc-fns', `oneonone', `strings', `thingatpt', `thingatpt+', ;; `zoom-frm'.
This does not mean that the library in question strictly requires that you also load all of those libraries. The operative word here is “might”. This is a statement of maximum possible use, not a statement of strict requirement. It says that there are at most 11 other libraries that this library (oneonone.el
) can take advantage of. It flattens the maximal ‘require’
tree for you, to let you know what other features you might want to add to this library – features that it was specifically designed to exploit.
This file-header statement is derived automatically by unraveling ‘require’
s from a fully-loaded Emacs, when I save the file. It is based on my own use of all of the optional, or “soft”, ‘require’
s in the library in question and, recursively, on the files that they in turn soft-‘require’
. The code that generates that file-header statement is in lib-requires.el and header2.el.
To determine the libraries that are strictly required by a given library, you must follow its ‘require’
tree yourself, ignoring any soft ‘require’
s, that is, ‘require’
s that have a non-‘nil’
third argument: (require 'foo nil
t
).
One way to do that is to load the library and see what missing-feature errors you get, load those libraries, and iterate until you get no more load errors. In this case, the only library strictly required by the library in question, oneonone.el
, is hexrgb.el
. So, loading just oneonone.el
will give you a missing-feature error for hexrgb.el
, and loading hexrgb.el
and then oneonone.el
raises no errors.
That said, I encourage you to try the fully-loaded versions of my libraries. I think you’ll find that the time you spend downloading the additional libraries that are not strictly required was time well spent.
This space is for ongoing discussion.
See also: OldDiscussionDrewsLibraries for older discussions.
Hi Drew. Thanks for welcoming me to the wiki (six years ago!) and for your Emacs libraries.
In the latest version of info+.el (#5710), I think there is a misplaced curly double quote in the curly single quote portion of ‘info-quotation-regexp’
.
--- info+.el 2016-10-31 +++ info+-don.el 2016-10-31 @@ -1131,8 +1131,8 @@ (concat "\"\\(?:[^\"]\\|\\\\\\(?:.\\|[\n]\\)\\)*\"\\|" ; "..." "`\\(?:[^']\\|\\\\\\(.\\|[\n]\\)\\)*'\\|" ; `...' - "‘\\(?:[^’]\\|\\\\\\(.\\|[\n]\\)\\)*’”\\|" ; ‘...’ - "\“\\(?:[^”]\\|\\\\\\(.\\|[\n]\\)\\)*" ; “...” + "‘\\(?:[^’]\\|\\\\\\(.\\|[\n]\\)\\)*’\\|" ; ‘...’ + "\“\\(?:[^”]\\|\\\\\\(.\\|[\n]\\)\\)*”" ; “...” ) "Regexp to match `...', ‘...’, “...”, \"...\", or just '. If ... contains \" or ' then that character must be backslashed.")
So I thought, “I know, I’ll submit a patch for the regular expression.” But then I had two problems, because evidently the wiki software does a regexp to prevent spam and it catches things that look like phone numbers. In your “All Library changes” link in the “my contributions” section you had a link that included “from=[epoch-time];” where the time was for Tue, 31 May 2005 00:00:00 GMT. I had to edit that before I could save this edit; I replaced it with something that seems like it still shows everything, but it labels the results page as “updates from 1970.” Maybe you can figure out a way to fix it.
Thanks – DonMarch
Good catch; thanks, Don. The typo is fixed now. And I was able to save the page, even with the date that was interpreted as a phone number.
Thx - DrewAdams
ICYMI. I’d like to buy you a Duvel. See conversation on my user page. And now I know what that is. 😊 Seen at a local brewpub: https://goo.gl/photos/puN9gMGdpcD2k1YL8 — tbc
Thanks, Tim. If I ever get out Colorado way I’ll take you up on that kind offer. Regards - DrewAdams
Hey Drew, I just wanted to let you know that your emacs libraries are so much awesome. I totally dig Icicles, and can hardly wait to install DoReMi. Even the ones I don’t use (FisheyeWithThumbs isn’t much use for a guy who prefers a single frame) are still awesome in their design. Thank you! – JonathanArkell
Thank you Jonathan. Enjoy! Bug reports and suggestions welcome. Thx – DrewAdams
Hi Drew! There is ‘reporter-submit-bug-report’
, a autoload function to send a bug report with dumping variables. I wonder why you do not use it. – rubikitch
Hi Rubikitch. I have used it. I don’t recall why I don’t use it more now. Why do you ask? – DrewAdams
I think ‘reporter-submit-bug-report’
is useful especially variable dump. I want to know the drawback of it because you do not use it. I’ll try to use it. Thanks. – rubikitch
It doesn’t mean anything special that I don’t use it. ;-) I agree that it can be useful to dump a select set of relevant variables (as opposed to a humongous list, for instance) into a bug-report mail skeleton. I’ve just never bothered. The only info I gather automatically is (emacs-version)
– e.g. command ‘bmkp-send-bug-report’
.
Typically, I’m interested in other things the user can describe about the problem, and I’ll just ask about any vars I think might be pertinent if they aren’t spontaneously reported. But that’s not a reason not to use ‘reporter’
. Regards – DrewAdams
Hi there. There are many free SCM web services out there like GitHub and BitBucket… why not use a repository for easy access to your great libraries? – RyanKaskel
You can find all of Drews libraries at http://github.com/emacsmirror as well as all others hosted here on the wiki (almost). – JonasBernoulli
Excellent. Thanks – DrewAdams
That’s a red herring. Having one’s libraries included in some mirror makes it no more convenient to track the development and contribute. But I already stated my opinion on the matter (IMO clearly enough) in IciclesDiscussion and Drew deleted it now, so… whatever. – stepnem
Thanks for leaving a welcome message on my wiki page. I use your brilliant Icicles mode every day. Incredible work - that must have taken a HUGE amount of effort. I’ve put real time into reading your documentation and still haven’t explored every last corner yet.
Every advanced completion system ever made will look to Icicles for inspiration/guidance. Congratulations on making something really exceptional.
And thanks so much for putting all the hard work into releasing it!! Writing documentation and packaging a large piece of software like that takes a whole lot of effort. I really, really appreciate it and so do a lot of other people I’m sure. Thank you 😊 – jlr
Glad you find Icicles and the doc useful. Enjoy. – DrewAdams
In hl-line+
, the function hl-line-flash
ignores the arg
argument and just looks at current-prefix-arg
directly. Would it make more sense to define the function like this?
(defun hl-line-flash (&optional arg) "Highlight the current line for `hl-line-flash-show-period' seconds. Or if ARG is non-nil, then highlight for that many seconds." (interactive "P") (hl-line-highlight-now) (let ((line-period hl-line-flash-show-period)) (when arg (setq line-period (prefix-numeric-value arg))) (run-at-time line-period nil #'hl-line-unhighlight-now)))
(I’ve never communicated via the Wiki like this before. Sorry if I didn’t do it right.) – PhilipWeaver
Yes, of course it would. Dunno why I left it like that. Thx - DrewAdams
Hey Drew, thanks for all the great code. Just wondering, is cus-edit+.el compatible with the recent “Custom Themes” feature? TIA --DaveAbrahams
Hi Dave. Dunno. I haven’t changed it in years, so it is probably out of date in some respects. If you have the time to take a look and let me know, I’ll put it on my to-do list. Thx – DrewAdams
query-replace-w-options does not offer the thing at point as default (occur does)?? I would love to have query-replace-w-options pick up the thing at point. At the end of my .emacs:
(add-to-list 'load-path "~/.emacs.d/replace_plus/") (eval-after-load "replace" '(progn (require 'replace+)))
Running 23.3 under Windows--Thanks Mike F
I don’t understand. For ‘M-n’
, it should be picking up the ‘symbol-name-nearest-point’
if you use library ThingAtPoint+, or the ‘word-at-point’
otherwise. What is your value of ‘search/replace-default-fn’
?
Remember that the default in this sense is what you get via ‘M-n’
. Query-replace has a different default behavior if you just hit ‘RET’
with no typed input. This is a feature. ‘M-n’
lets you get the thing at point, and an empty ‘RET’
lets you repeat the last query-replace.
You will need to describe just what you’re doing (recipe), so I can understand the problem. Thx – DrewAdams
I did not know about ‘M-n’
to access the thing at point. Works great! I really like the functionality where occur opens using the thing at point with one key.
To clarify, ‘M-n’
does not access the thing at point, in general. ‘M-n’
inserts the (first) default value into the minibuffer. In the case at hand, that default value comes from the thing at point.
Hi Drew,
One downside I notice with many of the enhancements such as compile- and grep+ is that they stomp on the face settings from the zenburn theme I use. I could try to load all your stuff first, but I really don’t like to load things eagerly. What’s your recommendation? – DaveAbrahams
Should be OK now. Let me know if you find other such problems. Thx – DrewAdams
Hi Drew
I would like to suggest the following improvements to icomplete+: (1) Optionally don’t show matched menu entries (as opposed to key bindings), (2) Don’t show the string “Matched;”, the meaning of the keys that follow is kind of obvious once one has used the library for longer than a few minutes, (3) Like not all suffixes are shown when that would make the minibuffer higher than one line do the same for key bindings. Thanks. – JonasBernoulli
Good ideas. Please try the latest icomplete+.el. See option ‘icompletep-include-menu-items-flag’
. Let me know. Thx – DrewAdams
Thanks a lot.
1. Unfortunately key abbreviation is too aggressive. It kicks in even when there is more than enough room. Also the calculation does not seem to be based on the available space and nothing else; other conditions have an effect too. For example when the user provided text in the minibuffer is “describe-key-” then the bindings are not abbreviated but when completed to “describe-key-briefly” then it is (at 92char line-length) - even though there is more space available now (because no possible match is shown which takes more space).
2. Speaking of “describe-key”, another suggestion: when completed this far and enough space is available show the key binding even though it is not a unique match.
3. Oh and one more ;) Sort the bindings so that the shortest (non-prefix) is first. Thanks again! – JonasBernoulli
You’re welcome.
#1: I think I’ve fixed the problem you mentioned.
#2: No can do.
#3 was already the case: keys are sorted by length (but disregarding any prefix/non-prefix, which I think makes sense). HTH – DrewAdams
hi, DrewAdams. I find a problem in dired+.el long time. The two `dired-do-delete` and `dired-do-flagged-delete` function replace in `dired.el` show a different behaviour On Windows .
1. First, I setup (setq delete-by-moving-to-trash t) to using-systems-trash-when-deleting-files.
2. when I do not use the dired+.el, in the dired mode , when I press `D` on some files/directories, emacs can delete files into the Recycle Bin directory correctly.
3. Then I require dired.el, in the dired mode, when I press `D` on some files/directories, emacs will delete files/directorys directly from disk, and do not delete files into the Recycle Bin directory.
4. I comment the two function `dired-do-delete` and `dired-do-flagged-delete` in `dired+`.el. Then reboot emacs, when i delete files/directories in dired mode, emacs will delete files into windeows’s Recycle Bin directory correctly.
please fixed it. Thank you. – pocoyo
Thanks for the report. Should be fixed now. Note: this is a new feature, for Emacs 24, which has not yet been released. Since it is not released, I do not necessarily support it yet. – DrewAdams
Salut Drew, do you think it would be possible to restructure browse-kill-ring into a minor mode ? Especially with your extension, browse-kill-ring+, it would be nice to get be able to set a major mode for browsing a list : I set ‘browse-kill-ring-alternative-ring’
to ‘read-expression-history’
and it would be neat to get proper emacs-lisp-mode fontification. – pgh
Salut Pgh,
Possibly it would be possible ;-), but (a) I don’t really have the time now and (b) I don’t want to rewrite the original browse-kill-ring.el
. I’ve submitted the browse-kill-ring+.el enhancements to the original author, but he has never answered or included any of them (so I could get rid of my enhancement library).
Maybe you can convince him to take this on. Or maybe you can send me a patch to implement the minor mode. Or maybe I’ll get around to taking a look at doing it someday. Feel free to provide more details about how you see it working – email is easier than dialoging via the wiki. Thanks for the suggestion, in any case.
I agree that a minor mode could make sense, and your desire to have the mode be ‘emacs-lisp-mode’
for ‘read-expression-history’
in order to get its font-locking is a good reason. For now, maybe you can make use of ‘browse-kill-ring-hook’
to at least change the font-locking etc.
FWIW, I rarely use browse-kill-ring[+].el
myself. Instead, I use Icicles, where ‘C-- C-y’
lets you insert kills using completion. It is a multi-command, meaning that you can yank as many kills as you like, including yanking the same kill multiple times, during a single ‘C-- C-y’
invocation. And you can sort the candidate yanks on the fly in various ways. And filter them on the fly, with multiple filter patterns (progressive completion). Etc. – DrewAdams
Could you please fix this warning: icomplete+.el:1034:1:Warning: the function ‘icicle-completing-p’
is not known to be defined. – JonasBernoulli
Nope, sorry. The code is correct. The use of that function is guarded by a test for (a) the library it is defined in and (b) the mode where it would be active.
There are many such warnings in code that is designed to work, optionally, with some other libraries or with more than one Emacs version. In recent Emacs versions you can use ‘declare-function’
to declare that a given function is defined in a given library, but that is not possible in older Emacs versions, where ‘declare-function’
is not available. (icomplete+.el, for example, supports Emacs versions back to at least Emacs 20. – DrewAdams
I am using 24.1 which is fairly recent and nope it is not correctly garded. This would do:
- (and (boundp 'icicle-mode) icicle-mode (icicle-completing-p)) + (and (boundp 'icicle-mode) (fboundp 'icicle-completing-p) icicle-mode (icicle-completing-p))
Testing whether icicle-mode is boundp has nothing to with whether icicle-completing-p is fboundp as far as the byte-compiler is concerned. – JonasBernoulli
Sorry, I disagree completely with the idea of writing such guards solely to inhibit byte-compiler warnings. That is not their purpose. And that is not the right way to inhibit such byte-compiler warnings. (The right way is to use ‘declare-function’
, as I mentioned.)
The purpose of the guards in this code is to ensure that the program logic is correct. And as such they should also be as simple and transparent to someone reading the code as is possible without sacrificing other programming concerns that might be relevant in the given context (correctness, performance, etc.).
Reducing byte-compiler noise is not such a concern. Or rather, that concern is secondary and should not be mixed in with the program logic. That is why we have separate means of handling it: (1) vacuous ‘defvar’
s for variables and (2) ‘declare-function’
for functions.
If the guard ‘icicle-mode’
is true then (fboundp 'icicle-completing-p)
is true also – the latter serves no purpose for the program logic, and is only distracting, if not misleading, for a human reader of the code.
[Well, it is not necessarily the case that non-‘nil’
‘icicle-mode’
implies that ‘icicle-completing-p’
is defined. Nothing prevents someone from defining a variable ‘icicle-mode’
without loading Icicles. There is no guarantee, with any such guards.]
Not to mention the fact that adding the ‘fboundp’
guard you propose will not prevent such a byte-compiler warning in older Emacs versions.
That the byte-compiler cannot recognize the relation between ‘icicle-mode’
being true and ‘icicle-completing-p’
being defined is a byte-compiler limitation, not a code problem. Enabling the byte compiler to detect more possibly problematic situations is in general a good thing. But if sufficient smarts do not accompany and temper/control the printing of such warnings then the result can be extra noise, which is not always helpful. – DrewAdams
Hello Drew! I noticed that LaCarte does not work properly with org-mode in Emacs 24. It seems to have to do with a new keymap format see e.g. http://debbugs.gnu.org/cgi/bugreport.cgi?bug=12744. It would be great if you update it. I do not have the lisp knowledge to do so. Thanks for your great libraries! – LennartFricke
Hi Lennart. Yes, I noticed that bug report and worked on a fix for LaCarte this morning. Please try the latest and let me know what you find. Thx – DrewAdams
Hi Drew! I did not know, if you are watching the bug reports. It is working. Thanks – LennartFricke
Why do you still use Emacs 20? Emacs releases are very stable, I think running the latest release is the best choice. – XueFuqiao
Hi Fuqiao. For the reason I gave: I try to make my code compatible across Emacs versions. Why that? Because there are users of older Emacs versions. In some cases users have no easy way to install Emacs themselves, and the version available at their organization (e.g. company) is old.
So I use Emacs 20 often when developing and testing my code. If something works in 20 then it likely works in later versions. For features that are not present in 20, that’s one way to discover that and conditionalize the code. But I have to use multiple versions to get the conditionalization right, of course.
In addition to that, Emacs 20, though more limited, is actually a good version, on MS Windows at least. Far better than Emacs 21, IMHO (I have never been able to stand using 21 – no font anti-aliasing, for one thing). Each Emacs release has brought important new features and other improvements, obviously.
FWIW, I find Emacs 24 quite unstable, whether 24.1, 24.2, 24.3 (soon to be), or development versions (24.4). It crashes a lot, at least in my context. That is not true of Emacs 23.
The great leap forward of Emacs 23 was the introduction of Unicode support. That outweighs all other changes I’ve seen in 22 or 24, by far. Of course, I am not a user of bidi editing, so I cannot really appreciate the value of that (Emacs 24).
The integration of TomTromey’s package.el
in Emacs 24 is a definite plus. And the addition of OrgMode, Semantic and CEDET to Emacs are also important.
But I am not much of an Emacs user – I no longer develop code for a living, for instance, so I don’t personally take advantage of those important additions. I am not a typical or a model Emacs user. When I say that I use Emacs 20, that does not mean that I think others should not use more recent versions – far from it. – DrewAdams
Thanks for your replying. – XueFuqiao
Hi Drew
There will be an emacs conference in London. The date is not decided but it should happen in March. Would you be interested in giving a presentation?
Take care, IvanKanis
Hi Ivan,
Yes, I know about the conf and am subscribed to the conf mailing list [1]. I think it’s great to have such a conf. I’m sure it will be rewarding for the communication & contact, and enrich Emacs and its community with new ideas and projects.
Sorry, but I won’t be able to attend, myself — too far and no money. But I will watch recorded sessions and read any posted papers or slides. The more that can be recorded for non-attendees, the better.
Have a great conf — have fun, above all. Thanks to you and others for putting it together.
Regards, DrewAdams
Hi Drew, I’ve added some features to hexrgb.el and wanted to pass them onto you, so they carry forward. here’s a short list of them:
Which I hope are self explanatory.
Also these, color sampling functions:
Which use the defcustom - hexrgb-color-group-format ( defaults as “%s, “ )
You can find a post at http://emacsfodder.github.com/blog/hexrgb-some-convenient-functions/ with a link to the source.
All the best, JasonMilkins
Hi Jason. Thanks for your interest. I really appreciate your efforts and offer.
Actually, I have had code that does what your `hexrgb-hex-set-(hue|saturation|brightness)
’ functions do for quite a while, but I have kept it in other libraries (Icicles, OneOnOneEmacs, DoReMi). I’ve been thinking for some time about moving that code to hexrgb.el, and I’ve finally done that now – see `hexrgb-increment-(hue|saturation|value)
’.
Wrt your commands that return a list with a range of ten hex color codes, I think that that kind of thing is better put in a separate library, perhaps something more directly aimed at CSS coders. I try to keep hexrgb.el to just basic color manipulation functions and a few core commands. Please consider posting those commands separately.
Regards – DrewAdams
Hi Drew, thanks for the reply
I’ll have a look at the latest hexrgb.el and see what I can do, ideally I’d like to create `hexrgb+.el
’ (or similar.) to add a lot of format related functions, which is what I’d intended to do in the first place (a year ago I think.) - At that time nb-digits needed to be hacked in, so I ended up making this copy of hexrgb.el.
I’ll post again when I get something useful going.
Regards, JasonMilkins
Hi Jason. Sounds good. And don’t hesitate if you do prefer to contribute something to hexrgb.el
. I’ll let you know what I think is best, like I did this time. IOW, I’m still open to suggestions etc. Thx – DrewAdams
Good stuff, I’ll have a go at it nearer next weekend and keep you updated, I can see a few convenience/format related use cases, that don’t require much in the way of difficult code, just good naming and grouping,
I think you were right first time, hexrgb shouldn’t have too much of this interactive insert stuff going on, and where possible these things should be grouped into useful sets of features/functions and made to require ‘hexrgb.
The only function candidates I think should be included (which I’ll need to port from SASS or LESS or whatever.) are things like mixing, lighten by percent, etc.
Anyway, thanks for the interest,
All the best, Jason
I like `col-highlight`. Really nice. A tweak that the highlight stops at the paragraph boundaries would be nice. A paragraph boundary being an empty line, for e.g. (or a configurable regexp?).
(you can contact me via towi attttt geocities, followed by dot com)
cheers, towi.
Please, could you have a look at http://stackoverflow.com/questions/20800710/turning-off-indent-tabs-mode-in-emacs-causes-malfunction-in-move-to-column-when/20820335#20820335 ? Do you know the right interpretation of the features of `move-to-column` or do you know someone who knows and is willing to answer/check my answer? Thanks in advance, TobiasZawada
Hi Tobias. I’ve replied to you at that StackOverflow question. Seems like an Emacs bug, to me. – DrewAdams
Libraries referenced here:
Lisp:buff-menu+.el, Lisp:compile-.el, Lisp:compile+.el, Lisp:cus-edit+.el, Lisp:dired+.el, Lisp:emacs-init.el, Lisp:grep+.el, Lisp:highlight.el, Lisp:icomplete+.el, Lisp:imenu+.el, Lisp:info+.el, Lisp:menu-bar+.el, Lisp:mkhtml.el, Lisp:replace+.el, Lisp:ring+.el
When i start emacs with -Q, load replace plus, and try to use ‘query-replace’
i’ve got the following error
call-interactively: Wrong number of arguments: (lambda (from-string to-string &optional delimited start end) #("Advice doc string" 0 17 (ad-advice-info query-replace)) (interactive (let* ((emacs24\.4+ (or (> emacs-major-version 24) (and (= emacs-major-version 24) (or (> emacs-minor-version 3) (replacep-string-match-p "24.3.50" emacs-version))))) (common (query-replace-read-args (concat "Query replace" (and current-prefix-arg (if (and emacs24\.4+ ...) " backward" " word")) (and transient-mark-mode mark-active (> (region-end) (region-beginning)) (not search/replace-region-as-default-flag) " in region")) nil)) (from (nth 0 common)) (to (nth 1 common)) (delimited (nth 2 common)) (start (and transient-mark-mode mark-active (> (region-end) (region-beginning)) (region-beginning))) (end (and transient-mark-mode mark-active (> (region-end) (region-beginning)) (region-end)))) (if emacs24\.4+ (list from to delimited start end) (list from to delimited start end (nth 3 common))))) (let (ad-return-value) (interactive (let* ((emacs24\.4+ (or (> emacs-major-version 24) (and (= emacs-major-version 24) (or (> emacs-minor-version 3) (replacep-string-match-p "24.3.50" emacs-version))))) (common (query-replace-read-args (concat "Query replace" (and current-prefix-arg (if ... " backward" " word")) (and transient-mark-mode mark-active (> ... ...) (not search/replace-region-as-default-flag) " in region")) nil)) (from (nth 0 common)) (to (nth 1 common)) (delimited (nth 2 common)) (start (and transient-mark-mode mark-active (> (region-end) (region-beginning)) (region-beginning))) (end (and transient-mark-mode mark-active (> (region-end) (region-beginning)) (region-end)))) (if emacs24\.4+ (list from to delimited start end) (list from to delimited start end (nth 3 common))))) (setq ad-return-value (with-no-warnings (ad-Orig-query-replace from-string to-string delimited start end))) ad-return-value)), 6
I use GNU Emacs 24.3.1 (x86_64-pc-linux-gnu, GTK+ Version 3.4.2) of 2013-04-13 on trouble, modified by Debian
Regards, PasJa
Oops. I had switched the return values for ‘interactive’
in the ‘defadvice’
. Should be OK now. Please try the latest version. Thx – DrewAdams
Thanks, it works fine
Regards, PasJa
Just upgraded from hl-line to crosshairs-mode. I also have whitespace-mode enabled to subtly show spaces and tabs. Crosshairs seems to be highlighting the visual spaces spuriously in white. Here’s a screenshot: https://imgur.com/ngTFccx
Is there something I can do to keep the visual spaces a subtle gray? – Yo
Sorry, I don’t yet understand. I don’t notice any spurious white “visual spaces” in your screenshot – what I think I see is black crosshairs against a dark gray background.
Please point out somehow just what the bugged effect is. And please try to give me a step-by-step recipe to repro the problem, preferably starting from ‘emacs -Q’
. Let me know all of your crosshairs etc. settings – whatever is pertinent to the problem. Thx – DrewAdams
I have the following settings for whitespace-mode:
(require 'whitespace)
(setq whitespace-style '(face tabs spaces trailing space-before-tab::tab space-before-tab::space space-after-tab::tab space-after-tab::space tab-mark space-mark))
(add-hook 'prog-mode-hook
(lambda ()
(whitespace-mode 1)))
If you look at the screenshot you will see white dots – this is the effect of turning crosshairs-mode on. If you look more closely, you will see gray dots on a gray background – this is the effect without crosshairs-mode on and what it should look like.
For some reason crosshairs-mode is changing the face of the visible white spaces (dots) to white.
Here’s a second screenshot, this time of the scratch buffer with the cursor at the end of a line: https://imgur.com/tqPByvs
Here you can see that the visible tabs and spaces at the beginning of the lines are the correct gray, but there are white dots from the end of line up to the vertical bar of the crosshair.
OK, I see what you mean. The problem comes apparently from library vline.el, which is used by crosshairs.el. You should try contacting the maintainer of that library.
A pseudo-fix, just to show what the problem is, is to add this line of code to the definition of function ‘vline-show’
(in vline.el
):
(setq str (propertize str 'face 'whitespace-space))
Add that just after these lines:
((eolp) (move-overlay ovr (point) (point))
So you get this:
((eolp) (move-overlay ovr (point) (point)) (setq str (propertize str 'face 'whitespace-space))
That will fix the white-dot problem. However, obviously vline.el
should not have to know about ‘whitespace-mode’
, and this is not a fix for the problem.
I think this is a bug in ‘whitespace-mode’
, not vline.el
. Please consider reporting it to Emacs Dev: ‘M-x report-emacs-bug’
. Whitespace mode should play well with other libraries, such as vline.el
, which use overlays with whitespace.
If that is not possible, then a possibly (ugly) fix/workaround is to modify the ‘vline-show’
code to do something like what I showed, but propertize string ‘str’
with face ‘whitespace-space’
only when ‘whitespace-mode’
is on etc. In any case, please contact the vline.el
maintainer about the problem – he might have a good suggestion.
HTH – DrewAdams
Thanks for taking the time to look into this. Very helpful. – Questioner
You are welcome. But please do report the problem, however minor, to the vline.el
maintainer and to Emacs Dev. This seems like an Emacs bug (in whitespace.el
) to me. – DrewAdams
Getting the error
let*: Symbol's value as variable is void: filter-buffer-substring-function
on package narrow-indirect.el. The following diff solves the issue: if subr+.el is not found we don’t need those bindings at all. Additionally, I took the liberty of factoring this in a new function ‘ni-clean-buffer-substring’
, and renamed the public functions to include the word ‘indirect’
(previously only ‘ni-narrow-to-page-indirect-other-window’
included it). The diff is below: … Thank you for your generosity, Adrián.
Thanks for the suggestion, Adrián. I’ve implemented something similar and fixed a couple of bugs (the whitespace-collapsing code was completely wrong). Should be OK now. Thx – DrewAdams
Hi Drew!
I could not byte-compile replace+.el. Here is the error:
Compiling file /home/pasja/.emacs.d/el-get/replace+/replace+.el at Wed Aug 24 09:50:28 2011
replace+.el:410:1:Error: Wrong number of arguments: #[(name variable doc message help &rest body) "\306\307 \310\311 \312\313O\227 \313\314O\315R\316\317
\203
Thanks for your quick replies!
regards, PasJa
Should be OK now. Let me know. Thx – DrewAdams
It compiles correctly! Thanks – PasJa
Drew,
Here is a comment and rough code snippet that I think are in the spirit of your emacs browse-kill-ring extensions:
It seems to me that inserting a string using ‘browse-kill-ring should be equivalent to a simple ‘yank . But it in fact leaves point and mark in quite a different state: - ‘yank sets a mark before the insertion and leaves point after it, so the region contains the newly inserted text. - But ‘browse-kill-ring does neither so it is very difficult to keep track of the effect of the operation.
Here’s what I have added to my .emacs to fix this for just the one entry to this module that I think I’m going to use. This code can certainly be made more general, and probably more elegant, but I still hope you find it interesting.
Thanks much for browse-kill-ring+.el , -LenW
(defun XX-browse-kill-ring-insert-and-quit () "Like standard `browse-kill-ring-insert-and-quit', but sets mark first and leaves point at end of insert - as does yank" (interactive) (let ( (kill-ring-buffer (current-buffer)) old-buffer-size ) (set-buffer (window-buffer browse-kill-ring-original-window)) (push-mark) (setq old-buffer-size (buffer-size)) (set-buffer kill-ring-buffer) (browse-kill-ring-insert t) (set-buffer (window-buffer browse-kill-ring-original-window)) (forward-char (- (buffer-size) old-buffer-size)) (set-buffer kill-ring-buffer) )) (setq browse-kill-ring-hook (lambda () (define-key browse-kill-ring-mode-map (kbd "RET") 'XX-browse-kill-ring-insert-and-quit) ))
(sorry if I didn’t do this edit correctly - first time wikier) – LenW
Thanks for your feedback, Len. I fixed this differently – please try the latest.
FYI – I don’t actually use browse-kill-ring+.el (or browse-kill-ring.el). I use Icicles instead for this kind of thing. In Icicles, ‘C-y’
yanks and ‘C-- C-y’
lets you complete against the ‘kill-ring’
. IOW, ‘*Completions*’
works like a (better version of) the ‘browse-kill-ring’
buffer for choosing a kill.
Thanks to your instigation, I cleaned up quite a bit of stuff in browse-kill-ring+.el (generally browse-kill-ring.el problems). Fixed some bugs, etc.
FYI, it turns out that the fix for the bug you noticed is just to ‘set-window-point’
after inserting. Took me quite a while to figure this out, though, for some reason. – DrewAdams
Hi Drew. I notice a bug in my emacs: Gnu Emacs 23.2.92.1. The ‘switch-to-buffer in autofit-frame.el (used by dired-details+) is blocked when I switch from some buffers (for example, from Customize, if I quit I get a ‘buffer is nil’ message. I did this:
(setq buffer (if buffer (get-buffer-create buffer) (other-buffer))) ; If string arg, convert to buffer.
Thanks for your packages and everything you do for free software. -Martial
Thanks for your report and fix, Martial. Looks like they allowed a ‘nil’
BUFFER
arg starting with Emacs 22! Better late than never. Thx – DrewAdams
dired+.el (w32):
If I use the ls switch -R the empty lines between the directories are marked with diredp-flag-mark (i.e. Blueviolet).
Should be fixed now. Actually, I looked at that as a feature, but I agree that it’s probably better without it. Thx. – DrewAdams
I gave up trying out thumb-frm.el because i got lost in the all the dependencies: doremi, ring+, hexrgb, etc. Maybe you could at some links to needed elisp files – VagnJohansen
‘require’
s or in my comments regarding which imported entities are used.emacs -q
), to look at the ‘require’
s in the code (starting with Lisp:thumb-frm.el) and load the needed libraries. FYI, I loaded the following libraries – those in parentheses (`( )’) are optional (soft ‘require’
s); those in braces (`{ }’) are standard GNU libraries:‘load-path’
. It would take some time for you to download them and put them in your ‘load-path’
, admittedly. Finding which libraries you need should not be difficult, however – that is my point above..emacs
’ if you don’t want the additional bindings. Thanks to you, Vagn, I looked into programmatically deriving info on library dependencies, and came up with some code to do the trick. The result is library Lisp:lib-requires.el, which extends the functionality in standard library ‘loadhist’
– see LibraryDependencies.
One of the commands in `lib-requires.el
’ is ‘insert-lib-requires-as-comment’
, which inserts a comment listing all of the libraries ultimately required by the current file (that is, recursively).
Since then, I’ve used ‘insert-lib-requires-as-comment’
to add such a comment to each of my libraries. For `thumb-frm.el
’ this is it:
;; Library `thumb-frm' requires these libraries: ;; ;; `avoid', `doremi', `doremi-frm', `faces', `faces+', `frame-cmds', ;; `frame-fns', `hexrgb', `icomplete', `icomplete+', `mwheel', `ring', ;; `ring+', `strings', `thingatpt', `thingatpt+'.
I’ve corrected my previous entry, above, which was missing soft-require `thingatpt+.el
’ – more proof that programs are better than I at fastidious details.
Although it’s a real help to have such a list derived programmically, keep in mind that such lists make no distinction between hard and soft ‘require’
s (I know of no way to do that programmatically, due to the nature of ‘load-history’
). In the case of `thumb-frm.el
’, as I indicated above, these libraries are not really required: ‘avoid’
, `icomplete+
’, ‘icomplete’
, ‘mwheel’
, ‘strings’
, `thingatpt+
’, and ‘thingatpt’
. – DrewAdams
When using your libraries it looks like the minibuffer is often raised without my doing anything. Suppose, for example, that I have three frames: the speedbar, the minibuffer, and a frame visiting an emacs lisp file. If I have selected the speedbar and then click on the frame for the emacs lisp file, the focus will automatically shift to the minibuffer, which says “Refreshing speedbar…done”. Editing commands such as ‘C-n’
are carried out within the minibuffer rather than in the frame with the emacs lisp file. Similarly, when opening a file via the “File” menu (more precisely, when opening a file using “Open recent” and selecting a recently opened file), the result is a new frame for that file, but the minibuffer frame is raised. How can I prevent the minibuffer from being so selfish? --JesseAlama
‘eval-region’
). 4) If you get to the place in Lisp:emacs-init.el where Lisp:start.el is loaded, then go through that file the same way, eval’ing blocks of code. The idea is to determine which code (e.g which library load) causes the problem.I too suspect that this is a Mac-specific problem. I just tried solution (1): not loading speedbar. That didn’t solve the problem of having the minibuffer frame raised once the file is opened, rather than the frame corresponding to that newly-opened file. More generally, I noticed that the minibuffer frame is raised apparenly whenever a message is generated. I also tried solution (2): not loading start-opt.el. The problem still exists. I tried solutions (3) and solution (4); to my surprise, I don’t see the problems when I start up a vanilla emacs with emacs -q --no-site-file and then load your emacs-init.el! So there’s some essential difference between loading your emacs-init.el after emacs has started and using it as my emacs initialization file. --JesseAlama
‘load-path’
): (require 'oneonone)
Hello Drew, I’ve noticed apropos-fn+var is doing something bad. “C-h a” produce this output to minibuf and Messages:
Loading apropos-fn+var (source)...done apropos-command: Wrong number of arguments: (lambda (do-keys spacing &optional text) (if (null apropos-accumulator).... (substitute-command-keys "and type \\[apropos-follow] to get full documentation. ")) (if text (insert text " ")) (while (consp p) .... (setq apropos-accumulator nil))), 4
I replased long lines by “….” if you need them just let me know. Emacs 22 cvs 2006-02-08 msvc build.
Thanks, AndreyZ
apropos.el
’ again, adding another argument to function ‘apropos-print’
. I’ve uploaded a new version of apropos-fn+var.el, which should work OK. Let me know if you have any problems with it. – DrewAdamsThank you! That was fast. – Andrey Zhdanov
Hello Drew! That’s me again 😊 autofit-frame.el does not allow bookmark’s logic to work correctly if target bookmark is in the same buffer. Here is the code:
bookmark.el:1072 (let ((cell (bookmark-jump-noselect bookmark))) (and cell (switch-to-buffer (car cell)) *<--- that gets nil* (goto-char (cdr cell)) autofit-frame.el:339 (and (one-window-p t) (not (eq buffer orig-buf)) ; Don't resize if same buffer. *^^^^^^^ that's where nil comes from*
Thanks, AndreyZ
‘switch-to-buffer’
. Thanks very much. Great bug report – you did all the work. – DrewAdamsNo Problem! Thanks for your great work of making emacs better. – Andrey Zhdanov
Drew, first thanks for all the great work you have done with your libraries.
I have tried your InitFile with two different versions of emacs. I got it to work with emacs 21.4.1 on Ubuntu GNU/Linux but had to comment out a line in setup-keys.el because I was getting an “Invalid modifier in string” error when loading that file. The offending line is:
setup-keys.el:346
(global-set-key "\M-\C-\ " 'mark-thing)
When trying the same InitFile and libraries with emacs 22.0.93.1, I get a ‘wrong-type-argument.’ The relevant lines are:
Debugger entered--Lisp error: (wrong-type-argument arrayp nil) aset(nil 12 [95...]) 1on1-emacs() eval-buffer(#<buffer *load*<3>> nil "/home/fisal/elisp/setup.el" nil t) ; Reading at buffer position 5436
I realize 22.0.93.1 is the development version but I thought you would be interested in finding out that there are issues trying to use your libraries with the latest emacs. The libraries I am using were last updated by you January 19, 2007 and later. The ones I am loading are: autofit-frame.el dired+.el eyedropper.el frame+.el help-mode+.el misc-fns.el setup.el start.el~ thumb-frm.el buff-menu+.el doremi-cmd.el facemenu+.el frame-fns.el hexrgb.el mouse+.el setup-keys.el start-opt.el tmp compile-.el doremi.el faces+.el grep+.el info+.el oneonone.el setup-keys.el~ strings.el window+.el compile+.el doremi-frm.el fit-frame.el header2.el lib-requires.el replace+.el simple+.el thingatpt+.el zoom-frm.el diff-mode-.el emacs-init.el frame-cmds.el help+.el menu-bar+.el ring+.el start.el thing-cmds.el
Drew, thanks for your fast reply. I assume from your response that things should now work with Emacs 22.0.93.1 but I can’t find an updated oneone.el file. I downloaded the most recent emacs.init and setu-keys files. Thanks again. – FidelSalas
I still get the wrong-type-argument error when 1on1-emacs gets called. – FidelSalas
‘standard-display-table’
is ‘nil’
by default! – DrewAdamsDrew, it works now. Thanks a lot. – FidelSalas
Is there any tarballs (e.g. icicles.tar.gz), so that the user can easily obtain up-to-date icicle files at once? – SeijiZenitani
There is now an automatically generated zip archive of Icicles files from the Icicles repository on the GitHubMirror. See http://www.emacswiki.org/emacs/Icicles_-_Libraries#ZipFileDownload.
Hi Drew. I really like your library collection. But, I prefer the classic single window/multi-frame setup. Is there some way to disable all frames used in your libs? – Tennis
Hi Tennis. I’m not sure what you mean. Only a few of my libraries involve using non-‘nil’
‘pop-up-frames’
. Obviously, if you use a library designed specifically for that, it won’t fit your preference. But most of the libraries should not be a problem – they should not, in any case, impose any particular use of frames. Can you let me know which, in particular, you are having trouble with? Perhaps there is a bug. Thx – DrewAdams
Thanks for the quick reply, Drew. Apologies for not being clearer. 😊 Here’s what I’m doing:
At this point, I still got separate frames for everything. I can send copies of my edits, if you like.
I am using
This is GNU Emacs 22.0.990.1 (i386-mingw-nt5.1.2600) of 2007-05-23 on LENNART-69DE564 (patched)
--Tennis
PS - If I remove all customization of any kind (.emacs/.emacs_customization, .recentf. .emacs-places, etc.) and try this on either win32 or linux fedora 7, I also get:
error: Recursive `require' for feature `icicles'
OK. We’ll need to attack it one thing at a time.
1. Wrt the Icicles recursive ‘require’
problem – Please try to debug this separately, and try this first, before tackling emacs-init.el
with everything that it loads (including Icicles).
There should be no dependency problems among Icicles files. Make sure you have the latest versions of all of the files, and remove any compiled versions. (You can compile again after things are working OK.)
Then start with a .emacs
that does nothing except (1) set the ‘load-path’
to a directory that contains the Icicles libraries, (2) sets ‘debug-on-error’
to ‘t’
, and (3) does (require 'icicles)
. Let me know what the debugger backtrace shows.
2. emacs-init.el is quite old. I’ve just uploaded a more recent version, but I mainly commented out stuff that is no longer pertinent. I also added a note in the Commentary saying that it’s not a great idea to just use the file as is. It’s best to treat it as a guide.
Please read that Commentary. Among other things, it says that it loads files start.el and start-opt.el.
Each of those files loads lots of my libraries and, if available, other libraries as well. You can try them out-of-the-box. I think they will not present problems, but they might. If so, you will need to set ‘debug-on-error’
to ‘t’
and try to figure out what the problem is.
Library start.el
loads library oneonone.el, which provides the one-buffer-per-frame behavior. It is library da-setup.el (formerly named setup.el
), also loaded by start.el
, that actually calls command ‘1on1-emacs’
, which enables the OneOnOneEmacs behavior. If you don’t load da-setup.el
(e.g. move it out of your ‘load-path’
so start.el
can’t load it) or if you comment out the call to ‘1on1-emacs’
in da-setup.el
, then you shouldn’t get OneOnOneEmacs.
Similar comments apply to the rest of what start.el
and start-opt.el
load. To tailor things to your preferences, you might need to either remove some libraries from your ‘load-path’
or comment out the code that loads them.
I apologize for any inconvenience this causes. Again, it’s not a great idea to start with someone else’s .emacs
and just hope for the best. Please treat emacs-init.el
as a guide.
If you run into trouble, use a binary search on your .emacs
, or on a library such as start.el
that it loads, to locate the cause of the problem. That is, split the file in two, either by commenting half of it out or by using ‘M-x eval-region’
on only half of it (starting from emacs -Q
). Then split the problematic half in two and repeat etc. Binary search is incredibly quick at locating precisely the problem code.
Good luck. Sorry for any inconvenience. You can email me if you have more questions. – DrewAdams
Thanks for the info, Drew. No worries. I’ll walk through each of your suggestions and email if anything comes up. --Tennis
Is there a way to make a frame full-screen, as in the (shell-command “wmctrl -r darkroom -badd,fullscreen”) line of http://ubuntuforums.org/showthread.php?p=1235260 ? A frame-fullscreen or frame-fullscreen-toggle function would be nice for making all your base belong to emacs. – Dave
I guess you’re asking about maximizing a frame – is that right? (I’m not familiar with wmctrl
etc.)
If so, I think the answer is that there is no platform-independent answer. If you use Windows, then you can use commands ‘maximize-frame’
and ‘restore-frame’
, defined in library fit-frame.el. If not, try asking LennartBorgman; I think he might have an answer for you about this. – DrewAdams
FullScreen is a little bigger than maximizing — it turns off the window decoration and handles and makes the application area match the full screen. Like windows powerpoint in slideshow mode, or a full-screen video or slideshow player. I think I found what I wanted from the page FullScreen. See WriteRoom for an application. Thanks – Dave
Hi Drew. Which, if any, of your libs will work in a text-only (i.e. “emacs -nw”) environment? Thanks. – Tennis
Sorry; I don’t know. It also probably depends on what “works” means. Non-ASCII keybindings will of course not work, and perhaps things that involve explicit frame manipulations might not work. Most of the rest should work. Icicles uses lots of non-ASCII key bindings, but it would probably work OK if you changed the bindings. You’ll just have to experiment. – DrewAdams
Thanks, Drew. I’ll let you know how it goes. -Tennis
Hi Drew,
I just ran into an interesting bug/issue. I am using your libraries (downloaded from the wiki on 9/27/11 or 9/28/11) and emacs 24.0.50.1. The issue arose with my .emacs file but I tracked down the source of the problem. Here is how you can reproduce it using your .emacs (the one one may download from the wiki): - comment out the require for start-opt.el; - add the following two lines to the end (before the provide statement) of your .emacs file: (setq debug-on-error t) (desktop-save-mode 1)
You will notice that the separate minibuffer (minibuffer in its own frame) will not be used. Instead, the minibuffer of a working frame (a regular frame) will be used as the minibuffer. Both the desktop and debug lines above are required for this to happen. Note, this did not happen with your libraries of a couple of years ago.
Thanks,
Fidel
Sorry about that, Fidel. Can you please try to narrow things down? You say that you are using my libraries, but that’s far too much to try to track this down with.
Please do this: comment out half of your init file (e.g., using ‘C-3 M-x comment-region’
– use ‘C-u M-x comment-region to uncomment’
) and see if you have the problem. Then comment out only a quarter of it, then 1/8th, etc., until you locate what the problem is. Then we can try to figure out the details. It is important to eliminate as much noise as possible from the outset.
Thx – DrewAdams
Hi Drew,
I am sorry I was not clear enough the first time. I can reproduce the problem with your emacs-init.el file by doing two things:
1) commenting out the (require 'start-opt) line; and 2) adding the following two lines: (setq debug-on-error t) (desktop-save-mode 1)
I narrowed down the problem first using my init file by commenting out everything out except what I use from your init file and the two lines (the debugpon-error and desktop=save-mode lines) required for the problem to arise. I then took your full init file and added the two lines and got the same behavior (I do not think the start-opt has anything to do with anything but I commented out of your init file because I did not have a copy of it on my machine).
The version of your emacs-init.el is 20.0:
... ;; Version: 20.0 ;; Last-Updated: Tue Jan 4 08:50:07 2011 (-0800) ;; By: dradams ;; Update #: 2145 ...
Hope that’s clearer.
Thanks,
Fidel
It’s clear enough, but I would still ask you to narrow it down by commenting out half, a quarter, etc. (of emacs-init.el
), as I suggested.
There is just far too much stuff in emacs-init.el, and even much more stuff that is loaded by it. If you don’t do that then I would have to do the same thing, and I don’t have the time now.
It’s likely that there is some small part of that file or some file that it loads that is causing the problem you see. A binary search is the way to locate it.
You will need to do the same thing in the problematic file, once you find it. For example, emacs-init.el
loads start.el, which loads tons of files. You will need to debug this a bit, to narrow it down to locate the problem. Then I will try to fix it.
Also, let me know what Emacs version you are using and the recipe you follow to start Emacs.
[One thing I can think of offhand is that if you are using oneonone.el then you need to invoke function ‘1on1-emacs’
during startup, using a command-line option or by putting (1on1-emacs)
in your init file (it is invoked in setup.el, if you use that). If you instead invoke ‘1on1-emacs’
interactively it will be too late: a frame with a non-standalone minibuffer will already have been created.]
Let me know too what you have changed since things were working OK, if you remember. For example, were you using desktop already, with no problem? And what version of ##desktop.el# do you have? I’m hoping that when you locate the problem it is independent of using desktop, as that is not one of my libraries.
Another thing to try would be to move your desktop save file somewhere where it will not be read (temporarily hide it from desktop). Sometimes such files get corrupted and cause problems.
Thx – DrewAdams
Drew,
Thanks for your response. I will get back to you when I get around to narrowing things down.
Thanks. Please do. I don’t mean to put you off. I will take a look when we know what we’re dealing with. Thx – DrewAdams
RFE: Please consider including in the header of each feature-enhancement file foo+.el
the URL of the corresponding EmacsWiki documentation/discussion page FooPlus. It is not obvious that this is where to look unless you already know (and remember from last time you had to work it out).
I haven’t done that, but I could. I’ve just updated header2.el to add a Doc URL: field for that.
Note that for libraries that have a Customize group, I typically provide direct links in the group ‘Customize’
buffer to such wiki doc pages, as well as links to wiki code pages.
Remember too that from the wiki page for the Lisp code you can just click the page header to get links to all of the wiki pages that link to that page. That list will include any pages that discuss the library in question. That is what I do when I forget the exact page that introduces the library. It’s pretty quick.
Thx – DrewAdams
—
The library apropos-fn+var.el doesn’t work in Emacs 24.3 due to apropos-macrop being missing. I’m not sure when this happened but it’s definitely not in 24.3! However the file subr.el contains the function macrop which I assume does the same thing. To get it working I have temporarily added the following to my startup file:
(defalias 'apropos-macrop 'macrop)
Thanks – Bernard Hurley
Thanks for the heads-up. Actually, it was OK for Emacs 24.3 (‘apropos-macrop’
still exists there), but not for Emacs 24+ (i.e., development snapshots after 24.3). Should be OK now. – DrewAdams
—
I think `palette.el’ contains a spurious “4” on this line:
;; Update #: 779 4
And the version at one point went from “22.0” to “0”. – JonasBernoulli
I’ve removed the spurious ‘4’
- thanks. The version number (‘0’
) is correct. The library is not versioned. – DrewAdams
I am not able to see your packages in MELPA. For example, icicles is missing in both https://stable.melpa.org/#/ and https://melpa.org/#/. Can you make your packages available on some ELPA … be it GNU ELPA, Non-GNU ELPA, MELPA or if you are interested right EWELPA (i.e., Emacswiki ELPA). If you are interested in my proposal, I can help you with getting your packages to one of these repos (except the GNU ones) … Let me know – [User 6414]
1. No idea what EWELPA is.
2. I prefer to upload to Emacs Wiki (Elisp Area).
3. Anyone is free to mirror from there to some GIT or other repository. That happens anyway, with Emacsmirror.
4. My libraries used to be in MELPA. This is why they no longer are.
—
All libraries referenced here:
Lisp:apropos+.el, Lisp:apropos-fn+var.el, Lisp:autofit-frame.el, Lisp:autoload+.el, Lisp:bindings+.el, Lisp:bookmark+.el, Lisp:browse-kill-ring+.el, Lisp:buff-menu+.el, Lisp:col-highlight.el, Lisp:compile-.el, Lisp:compile-20.el, Lisp:compile+.el, Lisp:compile+20.el, Lisp:crosshairs.el, Lisp:cursor-chg.el, Lisp:cus-edit+.el, Lisp:def-face-const.el, Lisp:delsel.el, Lisp:diff+.el, Lisp:diff+20.el, Lisp:diff-mode-.el, Lisp:dired+.el, Lisp:dired-details+.el, Lisp:dired-sort-menu+.el, Lisp:doremi.el, Lisp:doremi-cmd.el, Lisp:doremi-frm.el, Lisp:doremi-mac.el, Lisp:ediff+.el, Lisp:emacsbug+.el, Lisp:emacs-init.el, Lisp:eyedropper.el, Lisp:facemenu+.el, Lisp:faces+.el, Lisp:ffap-.el, Lisp:files+.el, Lisp:find-dired-.el, Lisp:find-dired+.el, Lisp:finder+.el, Lisp:find-func+.el, Lisp:fit-frame.el, Lisp:font-lock+.el, Lisp:frame-cmds.el, Lisp:frame-fns.el, Lisp:frame+.el, Lisp:grep+.el, Lisp:header2.el, Lisp:help+.el, Lisp:help-fns+.el, Lisp:help-macro+.el, Lisp:help-mode+.el, Lisp:hexrgb.el, Lisp:highlight.el, Lisp:hl-line+.el, Lisp:hl-spotlight.el, Lisp:icicles.el, Lisp:icomplete+.el, Lisp:imenu+.el, Lisp:info+.el, Lisp:isearch+.el, Lisp:keysee.el, Lisp:lib-requires.el, Lisp:line-num.el, Lisp:ls-lisp+.el, Lisp:macros+.el, Lisp:menu-bar+.el, Lisp:misc-cmds.el, Lisp:misc-fns.el, Lisp:mkhtml.el, Lisp:modeline-posn.el, Lisp:modeline-region.el, Lisp:mouse+.el, Lisp:novice+.el, Lisp:oneonone.el, Lisp:options+.el, Lisp:outline+.el, Lisp:pp+.el, Lisp:pp-c-l.el, Lisp:replace+.el, Lisp:ring+.el, Lisp:savehist-20+.el, Lisp:second-sel.el, Lisp:setnu+.el, Lisp:da-setup.el, Lisp:setup-cygwin.el, Lisp:setup-info.el, Lisp:setup-keys.el, Lisp:highlight-chars.el, Lisp:simple+.el, Lisp:sort+.el, Lisp:start.el, Lisp:start-opt.el, Lisp:strings.el, Lisp:synonyms.el, Lisp:thingatpt+.el, Lisp:thumb-frm.el, Lisp:timer+.el, Lisp:tool-bar+.el, Lisp:ucs-cmds.el, Lisp:unaccent.el, Lisp:vc-.el, Lisp:vc-hooks+.el, Lisp:vc+.el, Lisp:w32-browser.el, Lisp:w32browser-dlgopen.el, Lisp:wimpy-del.el, Lisp:window+.el, Lisp:yes-no.el, Lisp:zones.el, Lisp:zoom-frm.el