Mercurial > emacs
annotate nt/addpm.c @ 101458:36abe982e7cd
2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
* org-exp.el (org-export-as-html): Turn \par into a paragraph.
* org.el (org-agenda-tags-todo-honor-ignore-options): Declare
variable.
* org-table.el (org-table-insert-hline): Fix typo in fuction call
to `backward-char'.
* org-exp.el (org-export-as-html): Remove the initial space from
colon examples.
* org.el (org-scan-tags): Call
`org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item'.
* org-agenda.el (org-agenda-todo-list, org-agenda-match-view): New
customization groups.
(org-agenda-tags-todo-honor-ignore-options): New option.
(org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item):
New function.
(org-agenda-get-todos): Use
`org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item'.
2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
* org-exp.el (org-export-format-source-code-or-example): Escape
HTML characters also in examples that anre not treated with
htmlize. Also, just switch to EXAMPLE processing if we do not
have a good version of htmlize.
* org-rmail.el: Fix copyright notice.
* org.el (org-activate-footnote-links): Improve footnote link
highlighting.
* org-footnote.el (org-footnote-normalize): Fix finding the end of
a footnote definition at the end of the file.
* org-table.el (org-table-get-specials): Add an imagined hline at
the end of the table. This can be useful for references that want
to go to the end of the table. Also fix bug when computing last
row constants, in tables that do not start right at the right
margin.
(org-table-eval-formula): Match and replace remove references.
(org-table-formula-substitute-names): Make sure that names inside
a "remote" call are left alone, the will be replaced later when
the remote call is handled.
(org-table-convert-refs-to-rc): Do not convert things that might
look like a reference, but are really part of an ID or namei n a
remote reference.
(org-table-get-remote-range): New function.
2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
* org-faces.el (org-clock-overlay): Fix bug in face definition.
* org-clock.el (org-clock-put-overlay): Use new face instead of
`secondary-selection'.
* org-faces.el (org-clock-overlay): New face.
2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
* org-exp.el (org-get-current-options): Include the option for
publishing time stamps.
* org.el (org-toggle-heading): Renamed from
`org-toggel-region-headings'.
No longer needs a region defined, but will use it if there is one.
(org-ctrl-c-star): Simplified, relying more on the internal
workings of `org-toggle-heading'.
(org-toggle-item): Renamed from `org-toggle-region-items'.
No longer needs a region defined, but will use it if there is one.
(org-ctrl-c-minus): Simplified, relying more on the inernal
workings of `org-toggle-item'.
* org-export-latex.el (org-export-latex-preprocess): Fix bug in
environment detection. Also, do real changes only in unprotected
places.
2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
* org-export-latex.el (org-export-latex-quotation-marks): Use
`org-if-unprotected-1'.
(org-export-latex-set-initial-vars): Check for class definition in
property.
* org-macs.el (org-if-unprotected-1): New macro.
2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
* org-compat.el (org-count-lines): New function.
* org-exp.el (org-export-format-source-code-or-example): Handle
switches related to text areas.
* org.el (org-activate-footnote-links): Don't allow match inside a
link.
* org-footnote.el (org-footnote-re): Don't allow match inside a link.
* org-export-latex.el (org-export-latex-links): Keep a relative
path relative also after export.
* org-exp.el (org-export-html-scripts): Fix HTML snippet.
* org.el (org-make-tags-matcher): Never use IDO for completing the
tags matcher match string.
(org-completing-read): Also remove the special biding for "?".
* org-attach.el (org-attach-allow-inheritance): New option.
(org-attach-inherited): New variable.
(org-attach-dir): Handle properties related to the attachment
directory.
(org-attach-check-absolute-path): New function.
(org-attach-set-directory, org-attach-set-inherit): New commands.
(org-attach): Accommodate the new commands in the dispatcher.
2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
* org-compat.el (org-fit-window-to-buffer): Fix bug with using
`window-full-width-p'.
* org-exp.el (org-export-as-html): Only check for images files
that really can be inlined
* org.el (org-image-file-name-regexp, org-file-image-p): Allow the
list of extensions to be a parameter.
* org-exp.el (org-export-html-inline-image-extensions): New
variable.
* org-agenda.el (org-prepare-agenda): Use
`org-agenda-block-separator'.
(org-agenda-block-separator): New option.
2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
* org-export-latex.el (org-export-latex-tables): Call
`org-table-clean-before-export' with the new optional argument.
* org-exp.el (org-table-clean-before-export): New optional
parameter MAYBE-QUOTED, allows for quoted characters like \# in
first column.
2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
* org-plot.el (org-plot/gnuplot): Fix text-ind parameter for
histograms.
* org-colview.el (org-colview-construct-allowed-dates): Better
error catching when a date/time property does not have allowed
values defined.
* org-colview-xemacs.el (org-colview-construct-allowed-dates):
Better error catching when a date/time property does not have
allowed values defined.
2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-map-entries): Restore point and restriction after
`org-map-entries'.
2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-time=, org-time<, org-time<=, org-time>)
(org-time>=, org-time<>): Make sure both values are dates.
2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
* org-archive.el (org-extract-archive-heading): Allow %s for file
name also in achive location heading.
2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
* org-archive.el (org-add-archive-files): Uniquify the list before
returning it.
2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
* org-compat.el (org-fit-window-to-buffer): Use
`window-full-width-p'.
* org-export-latex.el (org-export-latex-fixed-width): Enforce the
space after the colon in short examples.
* org-exp.el (org-export-protect-colon-examples): Rewritten, to
enforce a space after the colon. However, we also allow lines
that are *only* a colon.
(org-export-as-html): Enforce the space after the colon in short
examples.
(org-export-preprocess-string): Do the colon example protection
earlier.
(org-export-remove-timestamps): Do not check for protection at the
end of the line.
2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-format-latex-options): Add new matcher for single
letters between dollars.
(org-get-header): Function removed.
(org-heading-components): New function.
* org-exp.el (org-export-define-heading-targets): Record ID's also
as alternative targets.
(org-export-as-html): Interpret "id:" links to other files by
preserving the relative path.
* org-jsinfo.el (org-infojs-handle-options): Catch the case if v
is nil.
* org-exp.el (org-export-normalize-links): Protect the main link,
to avoid special character processing.
* org-export-latex.el (org-export-latex-special-keyword-regexp):
New variable.
(org-export-latex-special-string-regexps): Variable removed.
(org-export-latex-keywords): Use the new regexp.
* org-exp.el (org-export-handle-include-files): Fetch switches and
put them into the BEGIN statement.
* org-timer.el (org-timer-mode-line-string): New variable.
* org-clock.el (org-clock-mode-line-map): Renamed from
`org-clock-mode-map'.
(org-clock-mode-line-timer): Renamed from `org-mode-line-timer'.
(org-clock-update-mode-line): Renamed from `org-update-mode-line'.
(org-clock-put-overlay): Renamed from `org-put-clock-overlay'.
(org-clock-remove-overlays): Renamed from
`org-remove-clock-overlays'.
* org-timer.el (org-timer-pause-or-continue): Implement stopping
and mode line display.
(org-timer-stop): New command.
(org-timer-seconds): Return correct time when timer is paused.
(org-timer-mode-line-timer): New variable.
(org-timer-set-mode-line, org-timer-update-mode-line): New
functions.
* org.el (org-insert-heading): Handle new value `auto' for
`org-blank-before-new-entry'.
(org-org-menu): Add new items for timer functions.
* org-list.el (org-insert-item): Handle new value `auto' for
`org-blank-before-new-entry'.
* org.el (org-blank-before-new-entry): New value `auto', made
default.
2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
* org-exp.el (org-export-normalize-links): If the link is also
used as the description, protect the description.
2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-closest-date): Fix bug with yearly repeats, in
combination with preference of the past as it is used for deadline
and scheduling search.
* org-exp.el (org-html-handle-time-stamps): No longer check for
the `org-export-with-timestamps' option, because the preprocesser
has taken care of this already.
* org.el (org-entry-properties): Catch the case when this is
called in a non-org-mode file.
* org-export-latex.el (org-export-latex-remove-from-headlines):
Variable made obsolete, also LaTeX export now uses the standard
variables.
(org-export-as-latex): Add the timestamps parameter to the
preprocessor parameter list.
(org-export-latex-content): Export the remaining keywords without
considering to remove them.
(org-export-latex-keywords-maybe): Make the REMOVE-LIST optional.
Use bold font instead of tt font for the keywords.
(org-export-latex-fontify-headline): Format headlines, assuming
that all keywords still present should be published.
(org-export-latex-keywords): Remove argument TIMESTAMPS and just
publish what ever remains of the time stamps.
(org-export-latex-list-parameters): New option.
(org-export-latex-lists): Pass additional parameters to the list
converter.
* org-exp.el (org-export-preprocess-string): Remove clock lines
and timestamps already in the preprocesor.
(org-export-remove-timestamps, org-export-remove-clock-lines): New
functions.
(org-export-as-ascii, org-export-as-html): Add the timestamps
parameter to the preprocessor parameter list.
* org-list.el (org-list-parse-list): Parse for checkboxes.
(org-list-to-generic): Introduce and handle new parameters :cbon
and :cboff.
(org-list-to-latex, org-list-to-html, org-list-to-texinfo): Add
optional parameter PARAMS.
* org-export-latex.el (org-export-latex-special-chars): Fix
problems with interpreting dollar signs.
(org-inside-latex-math-p): New function.
(org-export-latex-preprocess): Protect all the math fragments.
* org.el (org-latex-regexps): Allow a dash after a dollar.
* org-w3m.el (org-w3m-copy-for-org-mode): Always deactivate the
mark after copying.
* org-agenda.el (org-run-agenda-series): Have series options set
when finalizing the agenda.
* org-exp.el (org-export-format-source-code-or-example): Protect
the converted examples.
* org.el (org-set-regexps-and-options): Fix the regexp
`org-complex-heading-regexp'.
2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-edit-src-get-label-format): New function.
(org-coderef-label-format): New option.
(org-edit-src-code, org-edit-src-find-region-and-lang): Parse for
a label format specification and make sure it is used in the edit
buffer.
(org-edit-src-get-label-format): New function.
(org-store-link): Handle new coderef formats.
(org-link-search): Handle new coderef formats.
* org-footnote.el (org-footnote-create-definition)
(org-footnote-goto-local-insertion-point): Make footnote insertion
work correctly when the "Footnotes" headline is the last line in
the buffer.
* org.el (org-goto-marker-or-bmk): Expose context after jumping to
the location.
2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
* org-w3m.el (org-w3m): New customization group.
(org-w3m-deactivate-mark): New option.
(org-w3m-copy-for-org-mode): Deactivate region, unless the user
option say not to.
2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-set-font-lock-defaults): Trigger footnote
fontification.
(org-activate-footnote-links): New function.
(org-activate-links): New entry `footnote'.
* org-faces.el (org-footnote): New face.
2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
* org-macs.el (org-re): Handle the [:word:] class.
* org-exp.el (org-export-preprocess-string): Call
`org-export-protect-colon-examples'.
(org-export-protect-colon-examples): Renamed from
`org-export-protect-examples', and scope limited to lines starting
with a colon.
2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
* org-exp.el (org-export-preprocess-string): Move the preprocess
hook to after turning on Org-mode.
(org-export-preprocess-after-include-files-hook)
(org-export-preprocess-after-tree-selection-hook)
(org-export-preprocess-before-backend-specifics-hook)
(org-export-preprocess-final-hook): New hooks.
(org-export-preprocess-string): Run the new hooks.
* org.el (org-ctrl-c-minus): Fix indentation for new items.
* org-footnote.el: New file.
* org.el (org-footnote): Require footnote code.
(org-startup-options): Add new footnote options.
(org-mode-map): New keybindig for footnotes.
(org-ctrl-c-ctrl-c): Add function at footnotes.
(org-org-menu): New menu entries for footnotes.
* org-export-latex.el (org-export-as-latex): Pass footnote
variable to preprocessor.
(org-export-latex-preprocess): Treat multiple references to a
footnote.
* org-exp.el (org-export-preprocess-string): Call
`org-footnote-normalize'.
(org-export-as-ascii, org-export-as-html): Pass footnote variable
to preprocessor.
(org-export-as-html): Treat multiple references to a footnote.
2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
* org-export-latex.el (org-export-latex-links): Handle coderef
links.
* org.el (org-bracket-link-analytic-regexp++): New variable.
(org-make-link-regexps): Initialize
`org-bracket-link-analytic-regexp++'.
(org-store-link): Implement special case in edit-src buffer.
(org-insert-link): No use of ide to insert stored links.
(org-link-search): Implement special case for coderefs.
* org-exp.el (org-export-html-scripts): New constant.
(org-export-html-style-default): Add a new style for highlighted
code.
(org-export-code-refs): New variable.
(org-export-preprocess-string): Initialize `org-export-code-refs'.
Call `org-export-replace-src-segments-and-examples'
No longer call `org-export-protect-examples'.
(org-export-target-internal-links): Take care of coderef targets.
(org-export-last-code-line-counter-value): New variable.
(org-export-replace-src-segments-and-examples): Renamed from
`org-export-replace-src-segments', and modified.
(org-export-format-source-code-or-example): Renamed from
`org-export-format-source-code'.
(org-export-number-lines): New function.
(org-export-as-ascii, org-export-as-html): Handle coderef links.
author | Carsten Dominik <dominik@science.uva.nl> |
---|---|
date | Sun, 25 Jan 2009 15:49:43 +0000 |
parents | 3f0ac2f6febc |
children | 1d1d5d9bd884 |
rev | line source |
---|---|
12181 | 1 /* Add entries to the GNU Emacs Program Manager folder. |
94795
188974bfdea0
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
92206
diff
changeset
|
2 Copyright (C) 1995, 2001, 2002, 2003, 2004, 2005, 2006, 2007, |
100954 | 3 2008, 2009 Free Software Foundation, Inc. |
12181 | 4 |
14185
aba3b91c8b3d
Update FSF's ddress in preamble
Erik Naggum <erik@naggum.no>
parents:
13438
diff
changeset
|
5 This file is part of GNU Emacs. |
12181 | 6 |
94795
188974bfdea0
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
92206
diff
changeset
|
7 GNU Emacs is free software: you can redistribute it and/or modify |
14185
aba3b91c8b3d
Update FSF's ddress in preamble
Erik Naggum <erik@naggum.no>
parents:
13438
diff
changeset
|
8 it under the terms of the GNU General Public License as published by |
94795
188974bfdea0
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
92206
diff
changeset
|
9 the Free Software Foundation, either version 3 of the License, or |
188974bfdea0
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
92206
diff
changeset
|
10 (at your option) any later version. |
12181 | 11 |
14185
aba3b91c8b3d
Update FSF's ddress in preamble
Erik Naggum <erik@naggum.no>
parents:
13438
diff
changeset
|
12 GNU Emacs is distributed in the hope that it will be useful, |
aba3b91c8b3d
Update FSF's ddress in preamble
Erik Naggum <erik@naggum.no>
parents:
13438
diff
changeset
|
13 but WITHOUT ANY WARRANTY; without even the implied warranty of |
aba3b91c8b3d
Update FSF's ddress in preamble
Erik Naggum <erik@naggum.no>
parents:
13438
diff
changeset
|
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
aba3b91c8b3d
Update FSF's ddress in preamble
Erik Naggum <erik@naggum.no>
parents:
13438
diff
changeset
|
15 GNU General Public License for more details. |
12181 | 16 |
14185
aba3b91c8b3d
Update FSF's ddress in preamble
Erik Naggum <erik@naggum.no>
parents:
13438
diff
changeset
|
17 You should have received a copy of the GNU General Public License |
94795
188974bfdea0
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
92206
diff
changeset
|
18 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ |
12181 | 19 |
12329 | 20 /**************************************************************************** |
21 * | |
22 * Program: addpm (adds emacs to the Windows program manager) | |
23 * | |
24 * Usage: | |
13438
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
25 * argv[1] = install path for emacs |
101206
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
26 * |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
27 * argv[2] used to be an optional argument for setting the icon. |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
28 * But now Emacs has a professional looking icon of its own. |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
29 * If users really want to change it, they can go into the settings of |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
30 * the shortcut that is created and do it there. |
12181 | 31 */ |
32 | |
101206
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
33 /* Use parts of shell API that were introduced by the merge of IE4 |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
34 into the desktop shell. If Windows 95 or NT4 users do not have IE4 |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
35 installed, then the DDE fallback for creating icons the Windows 3.1 |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
36 progman way will be used instead, but that is prone to lockups |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
37 caused by other applications not servicing their message queues. */ |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
38 #define _WIN32_IE 0x400 |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
39 /* Request C Object macros for COM interfaces. */ |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
40 #define COBJMACROS 1 |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
41 |
12329 | 42 #include <windows.h> |
101206
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
43 #include <shlobj.h> |
12329 | 44 #include <ddeml.h> |
45 #include <stdlib.h> | |
46 #include <stdio.h> | |
92206 | 47 #include <malloc.h> |
12181 | 48 |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
45810
diff
changeset
|
49 HDDEDATA CALLBACK |
13438
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
50 DdeCallback (UINT uType, UINT uFmt, HCONV hconv, |
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
51 HSZ hsz1, HSZ hsz2, HDDEDATA hdata, |
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
52 DWORD dwData1, DWORD dwData2) |
12329 | 53 { |
13438
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
54 return ((HDDEDATA) NULL); |
12329 | 55 } |
12181 | 56 |
12329 | 57 #define DdeCommand(str) \ |
101206
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
58 DdeClientTransaction (str, strlen (str)+1, conversation, (HSZ)NULL, \ |
12329 | 59 CF_TEXT, XTYP_EXECUTE, 30000, NULL) |
12181 | 60 |
15130
493eee829532
(REG_ROOT): Don't use a trailing backslash.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14185
diff
changeset
|
61 #define REG_ROOT "SOFTWARE\\GNU\\Emacs" |
80106
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
62 #define REG_GTK "SOFTWARE\\GTK\\2.0" |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
63 #define REG_APP_PATH \ |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
64 "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\emacs.exe" |
13438
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
65 |
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
66 static struct entry |
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
67 { |
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
68 char *name; |
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
69 char *value; |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
45810
diff
changeset
|
70 } |
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
45810
diff
changeset
|
71 env_vars[] = |
13438
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
72 { |
15130
493eee829532
(REG_ROOT): Don't use a trailing backslash.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14185
diff
changeset
|
73 {"emacs_dir", NULL}, |
35424
36acbc3cb53e
(env_vars): Add a version-independent site-lisp
Andrew Innes <andrewi@gnu.org>
parents:
31084
diff
changeset
|
74 {"EMACSLOADPATH", "%emacs_dir%/site-lisp;%emacs_dir%/../site-lisp;%emacs_dir%/lisp;%emacs_dir%/leim"}, |
20011
f9429fb3dd05
addpm.c (env_vars): Fix misplaced % in SHELL entry.
Geoff Voelker <voelker@cs.washington.edu>
parents:
19717
diff
changeset
|
75 {"SHELL", "%emacs_dir%/bin/cmdproxy.exe"}, |
15322
eb3d8a25866a
(env_vars): Use slashes, not backslashes.
Richard M. Stallman <rms@gnu.org>
parents:
15188
diff
changeset
|
76 {"EMACSDATA", "%emacs_dir%/etc"}, |
eb3d8a25866a
(env_vars): Use slashes, not backslashes.
Richard M. Stallman <rms@gnu.org>
parents:
15188
diff
changeset
|
77 {"EMACSPATH", "%emacs_dir%/bin"}, |
19717
11f3ea181591
(env_vars): Put site-lisp before lisp in EMACSLOADPATH.
Geoff Voelker <voelker@cs.washington.edu>
parents:
19396
diff
changeset
|
78 /* We no longer set INFOPATH because Info-default-directory-list |
11f3ea181591
(env_vars): Put site-lisp before lisp in EMACSLOADPATH.
Geoff Voelker <voelker@cs.washington.edu>
parents:
19396
diff
changeset
|
79 is then ignored. */ |
11f3ea181591
(env_vars): Put site-lisp before lisp in EMACSLOADPATH.
Geoff Voelker <voelker@cs.washington.edu>
parents:
19396
diff
changeset
|
80 /* {"INFOPATH", "%emacs_dir%/info"}, */ |
15322
eb3d8a25866a
(env_vars): Use slashes, not backslashes.
Richard M. Stallman <rms@gnu.org>
parents:
15188
diff
changeset
|
81 {"EMACSDOC", "%emacs_dir%/etc"}, |
13438
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
82 {"TERM", "cmd"} |
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
83 }; |
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
84 |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
45810
diff
changeset
|
85 BOOL |
13438
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
86 add_registry (path) |
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
87 char *path; |
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
88 { |
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
89 HKEY hrootkey = NULL; |
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
90 int i; |
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
91 BOOL ok = TRUE; |
80106
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
92 DWORD size; |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
93 |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
94 /* Record the location of Emacs to the App Paths key if we have |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
95 sufficient permissions to do so. This helps Windows find emacs quickly |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
96 if the user types emacs.exe in the "Run Program" dialog without having |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
97 emacs on their path. Some applications also use the same registry key |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
98 to discover the installation directory for programs they are looking for. |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
99 Multiple installations cannot be handled by this method, but it does not |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
100 affect the general operation of other installations of Emacs, and we |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
101 are blindly overwriting the Start Menu entries already. |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
102 */ |
92206 | 103 if (RegCreateKeyEx (HKEY_LOCAL_MACHINE, REG_APP_PATH, 0, "", |
80106
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
104 REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
105 &hrootkey, NULL) == ERROR_SUCCESS) |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
106 { |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
107 int len; |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
108 char *emacs_path; |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
109 HKEY gtk_key = NULL; |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
110 |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
111 len = strlen (path) + 15; /* \bin\emacs.exe + terminator. */ |
92206 | 112 emacs_path = (char *) alloca (len); |
80106
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
113 sprintf (emacs_path, "%s\\bin\\emacs.exe", path); |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
114 |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
115 RegSetValueEx (hrootkey, NULL, 0, REG_SZ, emacs_path, len); |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
116 |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
117 /* Look for a GTK installation. If found, add it to the library search |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
118 path for Emacs so that the image libraries it provides are available |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
119 to Emacs regardless of whether it is in the path or not. */ |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
120 if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, REG_GTK, REG_OPTION_NON_VOLATILE, |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
121 KEY_READ, >k_key) == ERROR_SUCCESS) |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
122 { |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
123 if (RegQueryValueEx (gtk_key, "DllPath", NULL, NULL, |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
124 NULL, &size) == ERROR_SUCCESS) |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
125 { |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
126 char *gtk_path = (char *) alloca (size); |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
127 if (RegQueryValueEx (gtk_key, "DllPath", NULL, NULL, |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
128 gtk_path, &size) == ERROR_SUCCESS) |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
129 { |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
130 /* Make sure the emacs bin directory continues to be searched |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
131 first by including it as well. */ |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
132 char *dll_paths; |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
133 len = strlen (path) + 5 + size; |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
134 dll_paths = (char *) alloca (size + strlen (path) + 1); |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
135 sprintf (dll_paths, "%s\\bin;%s", path, gtk_path); |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
136 RegSetValueEx (hrootkey, "Path", 0, REG_SZ, dll_paths, len); |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
137 } |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
138 } |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
139 RegCloseKey (gtk_key); |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
140 } |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
141 RegCloseKey (hrootkey); |
7bb8839f9001
(add_registry): Add an App Paths registry key.
Jason Rumney <jasonr@gnu.org>
parents:
79730
diff
changeset
|
142 } |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
45810
diff
changeset
|
143 |
69449
e2359be8b645
(add_registry): Don't change the registry unless keys
Jason Rumney <jasonr@gnu.org>
parents:
69446
diff
changeset
|
144 /* Previous versions relied on registry settings, but we do not need |
e2359be8b645
(add_registry): Don't change the registry unless keys
Jason Rumney <jasonr@gnu.org>
parents:
69446
diff
changeset
|
145 them any more. If registry settings are installed from a previous |
e2359be8b645
(add_registry): Don't change the registry unless keys
Jason Rumney <jasonr@gnu.org>
parents:
69446
diff
changeset
|
146 version, replace them to ensure they are the current settings. |
e2359be8b645
(add_registry): Don't change the registry unless keys
Jason Rumney <jasonr@gnu.org>
parents:
69446
diff
changeset
|
147 Otherwise, do nothing. */ |
e2359be8b645
(add_registry): Don't change the registry unless keys
Jason Rumney <jasonr@gnu.org>
parents:
69446
diff
changeset
|
148 |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
45810
diff
changeset
|
149 /* Check both the current user and the local machine to see if we |
13438
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
150 have any resources. */ |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
45810
diff
changeset
|
151 |
69449
e2359be8b645
(add_registry): Don't change the registry unless keys
Jason Rumney <jasonr@gnu.org>
parents:
69446
diff
changeset
|
152 if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, REG_ROOT, |
e2359be8b645
(add_registry): Don't change the registry unless keys
Jason Rumney <jasonr@gnu.org>
parents:
69446
diff
changeset
|
153 REG_OPTION_NON_VOLATILE, |
e2359be8b645
(add_registry): Don't change the registry unless keys
Jason Rumney <jasonr@gnu.org>
parents:
69446
diff
changeset
|
154 KEY_WRITE, &hrootkey) != ERROR_SUCCESS |
e2359be8b645
(add_registry): Don't change the registry unless keys
Jason Rumney <jasonr@gnu.org>
parents:
69446
diff
changeset
|
155 && RegOpenKeyEx (HKEY_CURRENT_USER, REG_ROOT, |
e2359be8b645
(add_registry): Don't change the registry unless keys
Jason Rumney <jasonr@gnu.org>
parents:
69446
diff
changeset
|
156 REG_OPTION_NON_VOLATILE, |
e2359be8b645
(add_registry): Don't change the registry unless keys
Jason Rumney <jasonr@gnu.org>
parents:
69446
diff
changeset
|
157 KEY_WRITE, &hrootkey) != ERROR_SUCCESS) |
13438
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
158 { |
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
159 return FALSE; |
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
160 } |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
45810
diff
changeset
|
161 |
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
45810
diff
changeset
|
162 for (i = 0; i < (sizeof (env_vars) / sizeof (env_vars[0])); i++) |
13438
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
163 { |
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
164 char * value = env_vars[i].value ? env_vars[i].value : path; |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
45810
diff
changeset
|
165 |
13438
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
166 if (RegSetValueEx (hrootkey, env_vars[i].name, |
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
167 0, REG_EXPAND_SZ, |
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
168 value, lstrlen (value) + 1) != ERROR_SUCCESS) |
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
169 ok = FALSE; |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
45810
diff
changeset
|
170 } |
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
45810
diff
changeset
|
171 |
13438
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
172 RegCloseKey (hrootkey); |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
45810
diff
changeset
|
173 |
13438
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
174 return (ok); |
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
175 } |
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
176 |
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
177 int |
12329 | 178 main (argc, argv) |
179 int argc; | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
45810
diff
changeset
|
180 char *argv[]; |
12181 | 181 { |
101206
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
182 char start_folder[MAX_PATH + 1]; |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
183 int shortcuts_created = 0; |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
184 int com_available = 1; |
19396
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
185 char modname[MAX_PATH]; |
19717
11f3ea181591
(env_vars): Put site-lisp before lisp in EMACSLOADPATH.
Geoff Voelker <voelker@cs.washington.edu>
parents:
19396
diff
changeset
|
186 char *prog_name; |
19396
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
187 char *emacs_path; |
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
188 char *p; |
31084
2f7db3489395
(main): Accept /q to mean install based on addpm's
Andrew Innes <andrewi@gnu.org>
parents:
26535
diff
changeset
|
189 int quiet = 0; |
101206
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
190 HRESULT result; |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
191 IShellLinkA *shortcut; |
12181 | 192 |
19396
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
193 /* If no args specified, use our location to set emacs_path. */ |
12329 | 194 |
69446
bffee52ee41d
(main): Accept -q as alternative for /q.
Jason Rumney <jasonr@gnu.org>
parents:
68648
diff
changeset
|
195 if (argc > 1 |
bffee52ee41d
(main): Accept -q as alternative for /q.
Jason Rumney <jasonr@gnu.org>
parents:
68648
diff
changeset
|
196 && (argv[1][0] == '/' || argv[1][0] == '-') |
bffee52ee41d
(main): Accept -q as alternative for /q.
Jason Rumney <jasonr@gnu.org>
parents:
68648
diff
changeset
|
197 && argv[1][1] == 'q') |
31084
2f7db3489395
(main): Accept /q to mean install based on addpm's
Andrew Innes <andrewi@gnu.org>
parents:
26535
diff
changeset
|
198 { |
2f7db3489395
(main): Accept /q to mean install based on addpm's
Andrew Innes <andrewi@gnu.org>
parents:
26535
diff
changeset
|
199 quiet = 1; |
2f7db3489395
(main): Accept /q to mean install based on addpm's
Andrew Innes <andrewi@gnu.org>
parents:
26535
diff
changeset
|
200 --argc; |
2f7db3489395
(main): Accept /q to mean install based on addpm's
Andrew Innes <andrewi@gnu.org>
parents:
26535
diff
changeset
|
201 ++argv; |
2f7db3489395
(main): Accept /q to mean install based on addpm's
Andrew Innes <andrewi@gnu.org>
parents:
26535
diff
changeset
|
202 } |
2f7db3489395
(main): Accept /q to mean install based on addpm's
Andrew Innes <andrewi@gnu.org>
parents:
26535
diff
changeset
|
203 |
19396
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
204 if (argc > 1) |
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
205 emacs_path = argv[1]; |
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
206 else |
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
207 { |
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
208 if (!GetModuleFileName (NULL, modname, MAX_PATH) || |
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
209 (p = strrchr (modname, '\\')) == NULL) |
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
210 { |
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
211 fprintf (stderr, "fatal error"); |
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
212 exit (1); |
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
213 } |
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
214 *p = 0; |
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
215 |
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
216 /* Set emacs_path to emacs_dir if we are in "%emacs_dir%\bin". */ |
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
217 if ((p = strrchr (modname, '\\')) && stricmp (p, "\\bin") == 0) |
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
218 { |
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
219 *p = 0; |
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
220 emacs_path = modname; |
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
221 } |
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
222 else |
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
223 { |
101206
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
224 fprintf (stderr, "usage: addpm emacs_path\n"); |
19396
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
225 exit (1); |
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
226 } |
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
227 |
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
228 /* Tell user what we are going to do. */ |
31084
2f7db3489395
(main): Accept /q to mean install based on addpm's
Andrew Innes <andrewi@gnu.org>
parents:
26535
diff
changeset
|
229 if (!quiet) |
2f7db3489395
(main): Accept /q to mean install based on addpm's
Andrew Innes <andrewi@gnu.org>
parents:
26535
diff
changeset
|
230 { |
2f7db3489395
(main): Accept /q to mean install based on addpm's
Andrew Innes <andrewi@gnu.org>
parents:
26535
diff
changeset
|
231 int result; |
22796
903554be7bfc
(main): Explicitly check result of message box for OK.
Geoff Voelker <voelker@cs.washington.edu>
parents:
20011
diff
changeset
|
232 |
31084
2f7db3489395
(main): Accept /q to mean install based on addpm's
Andrew Innes <andrewi@gnu.org>
parents:
26535
diff
changeset
|
233 char msg[ MAX_PATH ]; |
2f7db3489395
(main): Accept /q to mean install based on addpm's
Andrew Innes <andrewi@gnu.org>
parents:
26535
diff
changeset
|
234 sprintf (msg, "Install Emacs at %s?\n", emacs_path); |
2f7db3489395
(main): Accept /q to mean install based on addpm's
Andrew Innes <andrewi@gnu.org>
parents:
26535
diff
changeset
|
235 result = MessageBox (NULL, msg, "Install Emacs", |
2f7db3489395
(main): Accept /q to mean install based on addpm's
Andrew Innes <andrewi@gnu.org>
parents:
26535
diff
changeset
|
236 MB_OKCANCEL | MB_ICONQUESTION); |
2f7db3489395
(main): Accept /q to mean install based on addpm's
Andrew Innes <andrewi@gnu.org>
parents:
26535
diff
changeset
|
237 if (result != IDOK) |
2f7db3489395
(main): Accept /q to mean install based on addpm's
Andrew Innes <andrewi@gnu.org>
parents:
26535
diff
changeset
|
238 { |
2f7db3489395
(main): Accept /q to mean install based on addpm's
Andrew Innes <andrewi@gnu.org>
parents:
26535
diff
changeset
|
239 fprintf (stderr, "Install cancelled\n"); |
2f7db3489395
(main): Accept /q to mean install based on addpm's
Andrew Innes <andrewi@gnu.org>
parents:
26535
diff
changeset
|
240 exit (1); |
2f7db3489395
(main): Accept /q to mean install based on addpm's
Andrew Innes <andrewi@gnu.org>
parents:
26535
diff
changeset
|
241 } |
2f7db3489395
(main): Accept /q to mean install based on addpm's
Andrew Innes <andrewi@gnu.org>
parents:
26535
diff
changeset
|
242 } |
19396
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
243 } |
d0ffa428c6e3
(env_vars): Set SHELL to cmdproxy.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16828
diff
changeset
|
244 |
31084
2f7db3489395
(main): Accept /q to mean install based on addpm's
Andrew Innes <andrewi@gnu.org>
parents:
26535
diff
changeset
|
245 add_registry (emacs_path); |
2f7db3489395
(main): Accept /q to mean install based on addpm's
Andrew Innes <andrewi@gnu.org>
parents:
26535
diff
changeset
|
246 prog_name = "runemacs.exe"; |
13438
705eb8c3d935
(env_vars): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
12329
diff
changeset
|
247 |
101206
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
248 /* Try to install globally. */ |
12329 | 249 |
101206
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
250 if (!SUCCEEDED (CoInitialize (NULL)) |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
251 || !SUCCEEDED (CoCreateInstance (&CLSID_ShellLink, NULL, |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
252 CLSCTX_INPROC_SERVER, &IID_IShellLinkA, |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
253 (void **) &shortcut))) |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
254 { |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
255 com_available = 0; |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
256 } |
12329 | 257 |
101206
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
258 if (com_available |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
259 && SHGetSpecialFolderPath (NULL, start_folder, CSIDL_COMMON_PROGRAMS, 0)) |
12181 | 260 { |
101206
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
261 if (strlen (start_folder) < (MAX_PATH - 20)) |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
262 { |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
263 BOOL retval; |
12329 | 264 |
101206
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
265 strcat (start_folder, "\\Gnu Emacs"); |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
266 if (CreateDirectory (start_folder, NULL) |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
267 || GetLastError () == ERROR_ALREADY_EXISTS) |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
268 { |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
269 char full_emacs_path[MAX_PATH + 1]; |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
270 IPersistFile *lnk; |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
271 strcat (start_folder, "\\Emacs.lnk"); |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
272 sprintf (full_emacs_path, "%s\\bin\\%s", emacs_path, prog_name); |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
273 IShellLinkA_SetPath (shortcut, full_emacs_path); |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
274 IShellLinkA_SetDescription (shortcut, "GNU Emacs"); |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
275 result = IShellLinkA_QueryInterface (shortcut, &IID_IPersistFile, |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
276 (void **) &lnk); |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
277 if (SUCCEEDED (result)) |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
278 { |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
279 wchar_t unicode_path[MAX_PATH]; |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
280 MultiByteToWideChar (CP_ACP, 0, start_folder, -1, |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
281 unicode_path, MAX_PATH); |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
282 if (SUCCEEDED (IPersistFile_Save (lnk, unicode_path, TRUE))) |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
283 shortcuts_created = 1; |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
284 IPersistFile_Release (lnk); |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
285 } |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
286 } |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
287 } |
12181 | 288 } |
289 | |
101206
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
290 if (!shortcuts_created && com_available |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
291 && SHGetSpecialFolderPath (NULL, start_folder, CSIDL_PROGRAMS, 0)) |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
292 { |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
293 /* Ensure there is enough room for "...\GNU Emacs\Emacs.lnk". */ |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
294 if (strlen (start_folder) < (MAX_PATH - 20)) |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
295 { |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
296 BOOL retval; |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
297 |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
298 strcat (start_folder, "\\Gnu Emacs"); |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
299 if (CreateDirectory (start_folder, NULL) |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
300 || GetLastError () == ERROR_ALREADY_EXISTS) |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
301 { |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
302 char full_emacs_path[MAX_PATH + 1]; |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
303 IPersistFile *lnk; |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
304 strcat (start_folder, "\\Emacs.lnk"); |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
305 sprintf (full_emacs_path, "%s\\bin\\%s", emacs_path, prog_name); |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
306 IShellLinkA_SetPath (shortcut, full_emacs_path); |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
307 IShellLinkA_SetDescription (shortcut, "GNU Emacs"); |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
308 result = IShellLinkA_QueryInterface (shortcut, &IID_IPersistFile, |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
309 (void **) &lnk); |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
310 if (SUCCEEDED (result)) |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
311 { |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
312 wchar_t unicode_path[MAX_PATH]; |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
313 MultiByteToWideChar (CP_ACP, 0, start_folder, -1, |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
314 unicode_path, MAX_PATH); |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
315 if (SUCCEEDED (IPersistFile_Save (lnk, unicode_path, TRUE))) |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
316 shortcuts_created = 1; |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
317 IPersistFile_Release (lnk); |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
318 |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
319 } |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
320 } |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
321 } |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
322 } |
12181 | 323 |
101206
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
324 if (com_available) |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
325 IShellLinkA_Release (shortcut); |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
326 |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
327 /* Need to call uninitialize, even if ComInitialize failed. */ |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
328 CoUninitialize (); |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
329 |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
330 /* Fallback on old DDE method if the above failed. */ |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
331 if (!shortcuts_created) |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
332 { |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
333 DWORD dde = 0; |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
334 HCONV conversation; |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
335 HSZ progman; |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
336 char add_item[MAX_PATH*2 + 100]; |
12181 | 337 |
101206
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
338 DdeInitialize (&dde, (PFNCALLBACK) DdeCallback, APPCMD_CLIENTONLY, 0); |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
339 progman = DdeCreateStringHandle (dde, "PROGMAN", CP_WINANSI); |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
340 conversation = DdeConnect (dde, progman, progman, NULL); |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
341 if (conversation) |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
342 { |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
343 DdeCommand ("[CreateGroup (\"Gnu Emacs\")]"); |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
344 DdeCommand ("[ReplaceItem (Emacs)]"); |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
345 sprintf (add_item, "[AddItem (\"%s\\bin\\%s\", Emacs)]", |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
346 emacs_path, prog_name); |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
347 DdeCommand (add_item); |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
348 |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
349 DdeDisconnect (conversation); |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
350 } |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
351 |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
352 DdeFreeStringHandle (dde, progman); |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
353 DdeUninitialize (dde); |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
354 } |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
355 |
3f0ac2f6febc
(main): Try using COM to create start menu shortcuts
Jason Rumney <jasonr@gnu.org>
parents:
100954
diff
changeset
|
356 return 0; |
12181 | 357 } |
52401 | 358 |
359 /* arch-tag: f923609d-b781-4ef4-abce-ca0da29cbbf0 | |
360 (do not change this comment) */ |