diff options
| author | Po Lu | 2023-02-18 23:13:51 +0800 |
|---|---|---|
| committer | Po Lu | 2023-02-18 23:13:51 +0800 |
| commit | c045d5322c2c1658f215bf59d431fcc8f96ffc12 (patch) | |
| tree | e273d3eaedf5a109f5e18b6581b41e9dec9412e0 /src | |
| parent | a61f9cb77ced0607e4607bc5d82ae06165e6138d (diff) | |
| parent | 97f24924df62303c944176510038f398370f8fb6 (diff) | |
| download | emacs-c045d5322c2c1658f215bf59d431fcc8f96ffc12.tar.gz emacs-c045d5322c2c1658f215bf59d431fcc8f96ffc12.zip | |
Merge remote-tracking branch 'origin/master' into feature/android
Diffstat (limited to 'src')
| -rw-r--r-- | src/comp.c | 98 | ||||
| -rw-r--r-- | src/data.c | 2 | ||||
| -rw-r--r-- | src/treesit.c | 26 | ||||
| -rw-r--r-- | src/xdisp.c | 11 |
4 files changed, 78 insertions, 59 deletions
diff --git a/src/comp.c b/src/comp.c index 7d2987605d9..1b55226b0c3 100644 --- a/src/comp.c +++ b/src/comp.c | |||
| @@ -5174,8 +5174,7 @@ maybe_defer_native_compilation (Lisp_Object function_name, | |||
| 5174 | if (!load_gccjit_if_necessary (false)) | 5174 | if (!load_gccjit_if_necessary (false)) |
| 5175 | return; | 5175 | return; |
| 5176 | 5176 | ||
| 5177 | if (!native_comp_deferred_compilation | 5177 | if (!native_comp_jit_compilation |
| 5178 | || !NILP (Vinhibit_automatic_native_compilation) | ||
| 5179 | || noninteractive | 5178 | || noninteractive |
| 5180 | || !NILP (Vpurify_flag) | 5179 | || !NILP (Vpurify_flag) |
| 5181 | || !COMPILEDP (definition) | 5180 | || !COMPILEDP (definition) |
| @@ -5672,28 +5671,18 @@ syms_of_comp (void) | |||
| 5672 | { | 5671 | { |
| 5673 | #ifdef HAVE_NATIVE_COMP | 5672 | #ifdef HAVE_NATIVE_COMP |
| 5674 | DEFVAR_LISP ("comp--delayed-sources", Vcomp__delayed_sources, | 5673 | DEFVAR_LISP ("comp--delayed-sources", Vcomp__delayed_sources, |
| 5675 | doc: /* List of sources to be native-compiled when startup is finished. | 5674 | doc: /* List of sources to be native-compiled when startup is finished. |
| 5676 | For internal use. */); | 5675 | For internal use. */); |
| 5677 | DEFVAR_BOOL ("comp--compilable", | 5676 | DEFVAR_BOOL ("comp--compilable", comp__compilable, |
| 5678 | comp__compilable, | 5677 | doc: /* Non-nil when comp.el can be native compiled. |
| 5679 | doc: /* Non-nil when comp.el can be native compiled. | ||
| 5680 | For internal use. */); | 5678 | For internal use. */); |
| 5681 | /* Compiler control customizes. */ | 5679 | /* Compiler control customizes. */ |
| 5682 | DEFVAR_LISP ("inhibit-automatic-native-compilation", | 5680 | DEFVAR_BOOL ("native-comp-jit-compilation", native_comp_jit_compilation, |
| 5683 | Vinhibit_automatic_native_compilation, | 5681 | doc: /* If non-nil, compile loaded .elc files asynchronously. |
| 5684 | doc: /* If non-nil, inhibit automatic native compilation of loaded .elc files. | ||
| 5685 | 5682 | ||
| 5686 | After compilation, each function definition is updated to the native | 5683 | After compilation, each function definition is updated to use the |
| 5687 | compiled one. */); | 5684 | natively-compiled one. */); |
| 5688 | Vinhibit_automatic_native_compilation = Qnil; | 5685 | native_comp_jit_compilation = true; |
| 5689 | |||
| 5690 | DEFVAR_BOOL ("native-comp-deferred-compilation", | ||
| 5691 | native_comp_deferred_compilation, | ||
| 5692 | doc: /* If non-nil compile loaded .elc files asynchronously. | ||
| 5693 | |||
| 5694 | After compilation, each function definition is updated to the native | ||
| 5695 | compiled one. */); | ||
| 5696 | native_comp_deferred_compilation = true; | ||
| 5697 | 5686 | ||
| 5698 | DEFSYM (Qnative_comp_speed, "native-comp-speed"); | 5687 | DEFSYM (Qnative_comp_speed, "native-comp-speed"); |
| 5699 | DEFSYM (Qnative_comp_debug, "native-comp-debug"); | 5688 | DEFSYM (Qnative_comp_debug, "native-comp-debug"); |
| @@ -5837,74 +5826,83 @@ compiled one. */); | |||
| 5837 | /* FIXME should be initialized but not here... Plus this don't have | 5826 | /* FIXME should be initialized but not here... Plus this don't have |
| 5838 | to be necessarily exposed to lisp but can easy debug for now. */ | 5827 | to be necessarily exposed to lisp but can easy debug for now. */ |
| 5839 | DEFVAR_LISP ("comp-subr-list", Vcomp_subr_list, | 5828 | DEFVAR_LISP ("comp-subr-list", Vcomp_subr_list, |
| 5840 | doc: /* List of all defined subrs. */); | 5829 | doc: /* List of all defined subrs. */); |
| 5841 | DEFVAR_LISP ("comp-abi-hash", Vcomp_abi_hash, | 5830 | DEFVAR_LISP ("comp-abi-hash", Vcomp_abi_hash, |
| 5842 | doc: /* String signing the .eln files ABI. */); | 5831 | doc: /* String signing the .eln files ABI. */); |
| 5843 | Vcomp_abi_hash = Qnil; | 5832 | Vcomp_abi_hash = Qnil; |
| 5844 | DEFVAR_LISP ("comp-native-version-dir", Vcomp_native_version_dir, | 5833 | DEFVAR_LISP ("comp-native-version-dir", Vcomp_native_version_dir, |
| 5845 | doc: /* Directory in use to disambiguate eln compatibility. */); | 5834 | doc: /* Directory in use to disambiguate eln compatibility. */); |
| 5846 | Vcomp_native_version_dir = Qnil; | 5835 | Vcomp_native_version_dir = Qnil; |
| 5847 | 5836 | ||
| 5848 | DEFVAR_LISP ("comp-deferred-pending-h", Vcomp_deferred_pending_h, | 5837 | DEFVAR_LISP ("comp-deferred-pending-h", Vcomp_deferred_pending_h, |
| 5849 | doc: /* Hash table symbol-name -> function-value. | 5838 | doc: /* Hash table symbol-name -> function-value. |
| 5850 | For internal use. */); | 5839 | For internal use. */); |
| 5851 | Vcomp_deferred_pending_h = CALLN (Fmake_hash_table, QCtest, Qeq); | 5840 | Vcomp_deferred_pending_h = CALLN (Fmake_hash_table, QCtest, Qeq); |
| 5852 | 5841 | ||
| 5853 | DEFVAR_LISP ("comp-eln-to-el-h", Vcomp_eln_to_el_h, | 5842 | DEFVAR_LISP ("comp-eln-to-el-h", Vcomp_eln_to_el_h, |
| 5854 | doc: /* Hash table eln-filename -> el-filename. */); | 5843 | doc: /* Hash table eln-filename -> el-filename. */); |
| 5855 | Vcomp_eln_to_el_h = CALLN (Fmake_hash_table, QCtest, Qequal); | 5844 | Vcomp_eln_to_el_h = CALLN (Fmake_hash_table, QCtest, Qequal); |
| 5856 | 5845 | ||
| 5857 | DEFVAR_LISP ("native-comp-eln-load-path", Vnative_comp_eln_load_path, | 5846 | DEFVAR_LISP ("native-comp-eln-load-path", Vnative_comp_eln_load_path, |
| 5858 | doc: /* List of eln cache directories. | 5847 | doc: /* List of directories to look for natively-compiled *.eln files. |
| 5859 | 5848 | ||
| 5860 | If a directory is non absolute it is assumed to be relative to | 5849 | The *.eln files are actually looked for in a version-specific |
| 5861 | `invocation-directory'. | 5850 | subdirectory of each directory in this list. That subdirectory |
| 5862 | `comp-native-version-dir' value is used as a sub-folder name inside | 5851 | is determined by the value of `comp-native-version-dir'. |
| 5863 | each eln cache directory. | 5852 | If the name of a directory in this list is not absolute, it is |
| 5864 | The last directory of this list is assumed to be the system one. */); | 5853 | assumed to be relative to `invocation-directory'. |
| 5854 | The last directory of this list is assumed to be the one holding | ||
| 5855 | the system *.eln files, which are the files produced when building | ||
| 5856 | Emacs. */); | ||
| 5865 | 5857 | ||
| 5866 | /* Temporary value in use for bootstrap. We can't do better as | 5858 | /* Temporary value in use for bootstrap. We can't do better as |
| 5867 | `invocation-directory' is still unset, will be fixed up during | 5859 | `invocation-directory' is still unset, will be fixed up during |
| 5868 | dump reload. */ | 5860 | dump reload. */ |
| 5869 | Vnative_comp_eln_load_path = Fcons (build_string ("../native-lisp/"), Qnil); | 5861 | Vnative_comp_eln_load_path = Fcons (build_string ("../native-lisp/"), Qnil); |
| 5870 | 5862 | ||
| 5871 | DEFVAR_BOOL ("comp-enable-subr-trampolines", comp_enable_subr_trampolines, | 5863 | DEFVAR_LISP ("native-comp-enable-subr-trampolines", |
| 5872 | doc: /* If non-nil, enable primitive trampoline synthesis. | 5864 | Vnative_comp_enable_subr_trampolines, |
| 5873 | This makes Emacs respect redefinition or advises of primitive functions | 5865 | doc: /* If non-nil, enable generation of trampolines for calling primitives. |
| 5874 | when they are called from Lisp code natively-compiled at `native-comp-speed' | 5866 | Trampolines are needed so that Emacs respects redefinition or advice of |
| 5875 | of 2. | 5867 | primitive functions when they are called from Lisp code natively-compiled |
| 5868 | at `native-comp-speed' of 2. | ||
| 5876 | 5869 | ||
| 5877 | By default, this is enabled, and when Emacs sees a redefined or advised | 5870 | By default, the value is t, and when Emacs sees a redefined or advised |
| 5878 | primitive called from natively-compiled Lisp, it generates a trampoline | 5871 | primitive called from natively-compiled Lisp, it generates a trampoline |
| 5879 | for it on-the-fly. | 5872 | for it on-the-fly. |
| 5880 | 5873 | ||
| 5881 | Disabling this, when a trampoline for a redefined or advised primitive is | 5874 | If the value is a file name (a string), it specifies the directory in |
| 5882 | not available from previous compilations, means that such redefinition | 5875 | which to deposit the generated trampolines, overriding the directories |
| 5883 | or advise will not have effect on calls from natively-compiled Lisp code. | 5876 | in `native-comp-eln-load-path'. |
| 5884 | That is, calls to primitives without existing trampolines from | 5877 | |
| 5885 | natively-compiled Lisp will behave as if the primitive was called | 5878 | When this variable is nil, generation of trampolines is disabled. |
| 5886 | directly from C. */); | 5879 | |
| 5880 | Disabling the generation of trampolines, when a trampoline for a redefined | ||
| 5881 | or advised primitive is not already available from previous compilations, | ||
| 5882 | means that such redefinition or advice will not have effect when calling | ||
| 5883 | primitives from natively-compiled Lisp code. That is, calls to primitives | ||
| 5884 | without existing trampolines from natively-compiled Lisp will behave as if | ||
| 5885 | the primitive was called directly from C, and will ignore its redefinition | ||
| 5886 | and advice. */); | ||
| 5887 | 5887 | ||
| 5888 | DEFVAR_LISP ("comp-installed-trampolines-h", Vcomp_installed_trampolines_h, | 5888 | DEFVAR_LISP ("comp-installed-trampolines-h", Vcomp_installed_trampolines_h, |
| 5889 | doc: /* Hash table subr-name -> installed trampoline. | 5889 | doc: /* Hash table subr-name -> installed trampoline. |
| 5890 | This is used to prevent double trampoline instantiation but also to | 5890 | This is used to prevent double trampoline instantiation, and also to |
| 5891 | protect the trampolines against GC. */); | 5891 | protect the trampolines against GC. */); |
| 5892 | Vcomp_installed_trampolines_h = CALLN (Fmake_hash_table); | 5892 | Vcomp_installed_trampolines_h = CALLN (Fmake_hash_table); |
| 5893 | 5893 | ||
| 5894 | DEFVAR_LISP ("comp-no-native-file-h", V_comp_no_native_file_h, | 5894 | DEFVAR_LISP ("comp-no-native-file-h", V_comp_no_native_file_h, |
| 5895 | doc: /* Files for which no deferred compilation has to be performed. | 5895 | doc: /* Files for which no deferred compilation should be performed. |
| 5896 | These files' compilation should not be deferred because the bytecode | 5896 | These files' compilation should not be deferred because the bytecode |
| 5897 | version was explicitly requested by the user during load. | 5897 | version was explicitly requested by the user during load. |
| 5898 | For internal use. */); | 5898 | For internal use. */); |
| 5899 | V_comp_no_native_file_h = CALLN (Fmake_hash_table, QCtest, Qequal); | 5899 | V_comp_no_native_file_h = CALLN (Fmake_hash_table, QCtest, Qequal); |
| 5900 | 5900 | ||
| 5901 | DEFVAR_BOOL ("comp-file-preloaded-p", comp_file_preloaded_p, | 5901 | DEFVAR_BOOL ("comp-file-preloaded-p", comp_file_preloaded_p, |
| 5902 | doc: /* When non-nil assume the file being compiled to | 5902 | doc: /* When non-nil, assume the file being compiled to be preloaded. */); |
| 5903 | be preloaded. */); | ||
| 5904 | 5903 | ||
| 5905 | DEFVAR_LISP ("comp-loaded-comp-units-h", Vcomp_loaded_comp_units_h, | 5904 | DEFVAR_LISP ("comp-loaded-comp-units-h", Vcomp_loaded_comp_units_h, |
| 5906 | doc: /* Hash table recording all loaded compilation units. | 5905 | doc: /* Hash table recording all loaded compilation units, file -> CU. */); |
| 5907 | file -> CU. */); | ||
| 5908 | Vcomp_loaded_comp_units_h = | 5906 | Vcomp_loaded_comp_units_h = |
| 5909 | CALLN (Fmake_hash_table, QCweakness, Qvalue, QCtest, Qequal); | 5907 | CALLN (Fmake_hash_table, QCweakness, Qvalue, QCtest, Qequal); |
| 5910 | 5908 | ||
diff --git a/src/data.c b/src/data.c index 04ac2b09ac3..1fa8b0358b5 100644 --- a/src/data.c +++ b/src/data.c | |||
| @@ -855,7 +855,7 @@ DEFUN ("fset", Ffset, Sfset, 2, 2, 0, | |||
| 855 | #ifdef HAVE_NATIVE_COMP | 855 | #ifdef HAVE_NATIVE_COMP |
| 856 | register Lisp_Object function = XSYMBOL (symbol)->u.s.function; | 856 | register Lisp_Object function = XSYMBOL (symbol)->u.s.function; |
| 857 | 857 | ||
| 858 | if (comp_enable_subr_trampolines | 858 | if (!NILP (Vnative_comp_enable_subr_trampolines) |
| 859 | && SUBRP (function) | 859 | && SUBRP (function) |
| 860 | && !SUBR_NATIVE_COMPILEDP (function)) | 860 | && !SUBR_NATIVE_COMPILEDP (function)) |
| 861 | CALLN (Ffuncall, Qcomp_subr_trampoline_install, symbol); | 861 | CALLN (Ffuncall, Qcomp_subr_trampoline_install, symbol); |
diff --git a/src/treesit.c b/src/treesit.c index cab2f0d5354..e1d6f1ef79f 100644 --- a/src/treesit.c +++ b/src/treesit.c | |||
| @@ -720,6 +720,7 @@ Return nil if a grammar library for LANGUAGE is not available. */) | |||
| 720 | } | 720 | } |
| 721 | } | 721 | } |
| 722 | 722 | ||
| 723 | |||
| 723 | /*** Parsing functions */ | 724 | /*** Parsing functions */ |
| 724 | 725 | ||
| 725 | static void | 726 | static void |
| @@ -770,7 +771,8 @@ treesit_record_change (ptrdiff_t start_byte, ptrdiff_t old_end_byte, | |||
| 770 | treesit_check_parser (lisp_parser); | 771 | treesit_check_parser (lisp_parser); |
| 771 | TSTree *tree = XTS_PARSER (lisp_parser)->tree; | 772 | TSTree *tree = XTS_PARSER (lisp_parser)->tree; |
| 772 | /* See comment (ref:visible-beg-null) if you wonder why we don't | 773 | /* See comment (ref:visible-beg-null) if you wonder why we don't |
| 773 | update visible_beg/end when tree is NULL. */ | 774 | update visible_beg/end when tree is NULL. */ |
| 775 | |||
| 774 | if (tree != NULL) | 776 | if (tree != NULL) |
| 775 | { | 777 | { |
| 776 | eassert (start_byte <= old_end_byte); | 778 | eassert (start_byte <= old_end_byte); |
| @@ -794,8 +796,14 @@ treesit_record_change (ptrdiff_t start_byte, ptrdiff_t old_end_byte, | |||
| 794 | ptrdiff_t old_end_offset = (min (visible_end, | 796 | ptrdiff_t old_end_offset = (min (visible_end, |
| 795 | max (visible_beg, old_end_byte)) | 797 | max (visible_beg, old_end_byte)) |
| 796 | - visible_beg); | 798 | - visible_beg); |
| 797 | ptrdiff_t new_end_offset = (min (visible_end, | 799 | /* We don't clip new_end_offset under visible_end, because |
| 798 | max (visible_beg, new_end_byte)) | 800 | inserting in narrowed region always extends the visible |
| 801 | region. If we clip new_end_offset here, and re-add the | ||
| 802 | clipped "tail" in treesit_sync_visible_region later, | ||
| 803 | while it is technically equivalent, tree-sitter's | ||
| 804 | incremental parsing algorithm doesn't seem to like it | ||
| 805 | (bug#61369). */ | ||
| 806 | ptrdiff_t new_end_offset = (max (visible_beg, new_end_byte) | ||
| 799 | - visible_beg); | 807 | - visible_beg); |
| 800 | eassert (start_offset <= old_end_offset); | 808 | eassert (start_offset <= old_end_offset); |
| 801 | eassert (start_offset <= new_end_offset); | 809 | eassert (start_offset <= new_end_offset); |
| @@ -817,11 +825,13 @@ treesit_record_change (ptrdiff_t start_byte, ptrdiff_t old_end_byte, | |||
| 817 | /* Move forward. */ | 825 | /* Move forward. */ |
| 818 | visi_beg_delta = (old_end_byte < visible_beg | 826 | visi_beg_delta = (old_end_byte < visible_beg |
| 819 | ? new_end_byte - old_end_byte : 0); | 827 | ? new_end_byte - old_end_byte : 0); |
| 828 | |||
| 820 | XTS_PARSER (lisp_parser)->visible_beg = visible_beg + visi_beg_delta; | 829 | XTS_PARSER (lisp_parser)->visible_beg = visible_beg + visi_beg_delta; |
| 821 | XTS_PARSER (lisp_parser)->visible_end = (visible_end | 830 | XTS_PARSER (lisp_parser)->visible_end = (visible_end |
| 822 | + visi_beg_delta | 831 | + visi_beg_delta |
| 823 | + (new_end_offset | 832 | + (new_end_offset |
| 824 | - old_end_offset)); | 833 | - old_end_offset)); |
| 834 | |||
| 825 | eassert (XTS_PARSER (lisp_parser)->visible_beg >= 0); | 835 | eassert (XTS_PARSER (lisp_parser)->visible_beg >= 0); |
| 826 | eassert (XTS_PARSER (lisp_parser)->visible_beg | 836 | eassert (XTS_PARSER (lisp_parser)->visible_beg |
| 827 | <= XTS_PARSER (lisp_parser)->visible_end); | 837 | <= XTS_PARSER (lisp_parser)->visible_end); |
| @@ -1104,6 +1114,7 @@ treesit_read_buffer (void *parser, uint32_t byte_index, | |||
| 1104 | return beg; | 1114 | return beg; |
| 1105 | } | 1115 | } |
| 1106 | 1116 | ||
| 1117 | |||
| 1107 | /*** Functions for parser and node object */ | 1118 | /*** Functions for parser and node object */ |
| 1108 | 1119 | ||
| 1109 | /* Wrap the parser in a Lisp_Object to be used in the Lisp | 1120 | /* Wrap the parser in a Lisp_Object to be used in the Lisp |
| @@ -1266,6 +1277,9 @@ treesit_ensure_query_compiled (Lisp_Object query, Lisp_Object *signal_symbol, | |||
| 1266 | return treesit_query; | 1277 | return treesit_query; |
| 1267 | } | 1278 | } |
| 1268 | 1279 | ||
| 1280 | |||
| 1281 | /* Lisp definitions. */ | ||
| 1282 | |||
| 1269 | DEFUN ("treesit-parser-p", | 1283 | DEFUN ("treesit-parser-p", |
| 1270 | Ftreesit_parser_p, Streesit_parser_p, 1, 1, 0, | 1284 | Ftreesit_parser_p, Streesit_parser_p, 1, 1, 0, |
| 1271 | doc: /* Return t if OBJECT is a tree-sitter parser. */) | 1285 | doc: /* Return t if OBJECT is a tree-sitter parser. */) |
| @@ -1484,6 +1498,7 @@ treesit_parser_live_p (Lisp_Object parser) | |||
| 1484 | (!NILP (Fbuffer_live_p (XTS_PARSER (parser)->buffer)))); | 1498 | (!NILP (Fbuffer_live_p (XTS_PARSER (parser)->buffer)))); |
| 1485 | } | 1499 | } |
| 1486 | 1500 | ||
| 1501 | |||
| 1487 | /*** Parser API */ | 1502 | /*** Parser API */ |
| 1488 | 1503 | ||
| 1489 | DEFUN ("treesit-parser-root-node", | 1504 | DEFUN ("treesit-parser-root-node", |
| @@ -1730,6 +1745,7 @@ positions. PARSER is the parser issuing the notification. */) | |||
| 1730 | return Qnil; | 1745 | return Qnil; |
| 1731 | } | 1746 | } |
| 1732 | 1747 | ||
| 1748 | |||
| 1733 | /*** Node API */ | 1749 | /*** Node API */ |
| 1734 | 1750 | ||
| 1735 | /* Check that OBJ is a positive integer and signal an error if | 1751 | /* Check that OBJ is a positive integer and signal an error if |
| @@ -2252,6 +2268,7 @@ produced by tree-sitter. */) | |||
| 2252 | return same_node ? Qt : Qnil; | 2268 | return same_node ? Qt : Qnil; |
| 2253 | } | 2269 | } |
| 2254 | 2270 | ||
| 2271 | |||
| 2255 | /*** Query functions */ | 2272 | /*** Query functions */ |
| 2256 | 2273 | ||
| 2257 | DEFUN ("treesit-pattern-expand", | 2274 | DEFUN ("treesit-pattern-expand", |
| @@ -2826,6 +2843,7 @@ the query. */) | |||
| 2826 | return Fnreverse (result); | 2843 | return Fnreverse (result); |
| 2827 | } | 2844 | } |
| 2828 | 2845 | ||
| 2846 | |||
| 2829 | /*** Navigation */ | 2847 | /*** Navigation */ |
| 2830 | 2848 | ||
| 2831 | static inline void | 2849 | static inline void |
| @@ -3446,7 +3464,7 @@ DEFUN ("treesit-available-p", Ftreesit_available_p, | |||
| 3446 | #endif | 3464 | #endif |
| 3447 | } | 3465 | } |
| 3448 | 3466 | ||
| 3449 | 3467 | ||
| 3450 | /*** Initialization */ | 3468 | /*** Initialization */ |
| 3451 | 3469 | ||
| 3452 | /* Initialize the tree-sitter routines. */ | 3470 | /* Initialize the tree-sitter routines. */ |
diff --git a/src/xdisp.c b/src/xdisp.c index d3dae205037..21362d0b9d8 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -13424,7 +13424,8 @@ gui_consider_frame_title (Lisp_Object frame) | |||
| 13424 | 13424 | ||
| 13425 | Fselect_window (f->selected_window, Qt); | 13425 | Fselect_window (f->selected_window, Qt); |
| 13426 | set_buffer_internal_1 (XBUFFER (XWINDOW (f->selected_window)->contents)); | 13426 | set_buffer_internal_1 (XBUFFER (XWINDOW (f->selected_window)->contents)); |
| 13427 | fmt = FRAME_ICONIFIED_P (f) ? Vicon_title_format : Vframe_title_format; | 13427 | fmt = (FRAME_ICONIFIED_P (f) && !EQ (Vicon_title_format, Qt) |
| 13428 | ? Vicon_title_format : Vframe_title_format); | ||
| 13428 | 13429 | ||
| 13429 | mode_line_target = MODE_LINE_TITLE; | 13430 | mode_line_target = MODE_LINE_TITLE; |
| 13430 | title_start = MODE_LINE_NOPROP_LEN (0); | 13431 | title_start = MODE_LINE_NOPROP_LEN (0); |
| @@ -36762,9 +36763,11 @@ which no explicit name has been set (see `modify-frame-parameters'). */); | |||
| 36762 | DEFVAR_LISP ("icon-title-format", Vicon_title_format, | 36763 | DEFVAR_LISP ("icon-title-format", Vicon_title_format, |
| 36763 | doc: /* Template for displaying the title bar of an iconified frame. | 36764 | doc: /* Template for displaying the title bar of an iconified frame. |
| 36764 | \(Assuming the window manager supports this feature.) | 36765 | \(Assuming the window manager supports this feature.) |
| 36765 | This variable has the same structure as `mode-line-format' (which see), | 36766 | If the value is a string, it should have the same structure |
| 36766 | and is used only on frames for which no explicit name has been set | 36767 | as `mode-line-format' (which see), and is used only on frames |
| 36767 | \(see `modify-frame-parameters'). */); | 36768 | for which no explicit name has been set \(see `modify-frame-parameters'). |
| 36769 | If the value is t, that means use `frame-title-format' for | ||
| 36770 | iconified frames. */); | ||
| 36768 | /* Do not nest calls to pure_list. This works around a bug in | 36771 | /* Do not nest calls to pure_list. This works around a bug in |
| 36769 | Oracle Developer Studio 12.6. */ | 36772 | Oracle Developer Studio 12.6. */ |
| 36770 | Lisp_Object icon_title_name_format | 36773 | Lisp_Object icon_title_name_format |