]> git.eshelyaron.com Git - emacs.git/log
emacs.git
4 years agoAdd a test for speed -1
Andrea Corallo [Mon, 15 Jun 2020 19:27:00 +0000 (21:27 +0200)]
Add a test for speed -1

* test/src/comp-tests.el (comp-test-speed--1): New test

* test/src/comp-test-funcs.el (comp-test-speed--1-f): New
function.

4 years agoAllow per function speed declaration
Andrea Corallo [Mon, 15 Jun 2020 18:26:00 +0000 (20:26 +0200)]
Allow per function speed declaration

* src/comp.c (COMP_SPEED): Rename.
(comp_t): Add 'func_speed' field.
(emit_mvar_lval, compile_function): Update for per function speed.
(Fcomp__compile_ctxt_to_file): COMP_SPEED renamed.

* lisp/emacs-lisp/comp.el (comp-speed): Doc update.
(comp-func): New 'speed' slot.
(comp-spill-speed): New function.
(comp-spill-lap-function, comp-intern-func-in-ctxt): Fill 'speed'
slot.
(comp-spill-lap-function): Gate -1 speed functions for native
compilation and emit bytecode instead.
(comp-spill-lap): Close over `byte-to-native-plist-environment'.
(comp-latch-make-fill): Update for per function speed.
(comp-limplify-top-level): Fill speed.
(comp-propagate1, comp-call-optim-form-call, comp-call-optim)
(comp-dead-code, comp-tco, comp-remove-type-hints): Update for per
function speed.

4 years agoExecute top level forms in the right lex/dyn scope.
Andrea Corallo [Tue, 2 Jun 2020 10:08:50 +0000 (11:08 +0100)]
Execute top level forms in the right lex/dyn scope.

* lisp/emacs-lisp/bytecomp.el (byte-to-native-top-level): Add
'lexical' slot.
(byte-compile-output-file-form): Update for new slot.
(byte-compile-file-form-defmumble): Capture scope.

* lisp/emacs-lisp/comp.el (comp-emit-for-top-level): Specify
execution scope.

4 years agoAdd some testing for dynamic scope
Andrea Corallo [Tue, 10 Dec 2019 11:55:34 +0000 (12:55 +0100)]
Add some testing for dynamic scope

* test/src/comp-test-funcs-dyn.el: New file.

* test/src/comp-tests.el (comp-tests-dynamic-ffuncall): Add
new tests.

4 years agoAdd native compiler dynamic scope support
Andrea Corallo [Mon, 1 Jun 2020 11:47:29 +0000 (12:47 +0100)]
Add native compiler dynamic scope support

Add an initial implementation to support dynamic scope.  Arg
parsing/binding it's done using the existing code in use for
bytecode (no ad-hoc code is synthetized for that).

* src/lisp.h (struct Lisp_Subr): Add lambda_list field.
(SUBR_NATIVE_COMPILED_DYNP): New inliner.

* src/alloc.c (mark_object): Update for Add lambda_list field.

* src/eval.c (eval_sub, Ffuncall, funcall_lambda): Handle native
compiled dynamic scope

* src/comp.c (declare_lex_function): Rename from declare_function
and rework.
(declare_function): New function.
(make_subr): Handle daynamic scope

* src/pdumper.c (dump_subr): Update for lambda_list field.

* lisp/emacs-lisp/comp.el (comp-func): Remove args slot.
(comp-func-l, comp-func-d): New classes deriving from `comp-func'.
(comp-spill-lap-function): Rework.
(comp-prepare-args-for-top-level): New function.
(comp-emit-for-top-level, comp-emit-lambda-for-top-level): Make
use of `comp-prepare-args-for-top-level'.
(comp-limplify-top-level): Use `comp-func-l'.
(comp-limplify-function): Emit arg prologue only for dynamic
scoped functions.
(comp-call-optim-form-call): Use `comp-func-l'.
(comp-call-optim, comp-tco): Do not optimize dynamic scoped code.

4 years ago* Implement 'maybe_gc_or_quit' to allow correct GC in compiled Lisp.
Andrea Corallo [Sat, 13 Jun 2020 09:12:15 +0000 (11:12 +0200)]
* Implement 'maybe_gc_or_quit' to allow correct GC in compiled Lisp.

Implement the backend side of 'maybe_gc_or_quit' so that every time a
call to it is emitted we render it accordingly.  This allow GC to
kicks in during long loops in Lisp code.

* src/comp.c (comp_t): Add 'maybe_gc_or_quit' field.
(helper_link_table): Add 'maybe_gc', 'maybe_quit'.
(emit_maybe_gc_or_quit): New function.
(declare_runtime_imported_funcs): Import 'maybe_gc', 'maybe_quit'
functions.
(define_maybe_gc_or_quit): New function.
(Fcomp__init_ctxt): Register emitter.
(Fcomp__compile_ctxt_to_file): Call 'define_maybe_gc_or_quit'.
(syms_of_comp): Define Qcomp_maybe_gc_or_quit.

4 years ago* Introduce latches
Andrea Corallo [Thu, 11 Jun 2020 20:53:31 +0000 (22:53 +0200)]
* Introduce latches

Define a new kind of basic block 'latch' to close over loops.  Its
purpose is for now to emit calls to `comp-maybe-gc-or-quit' but in
future will be usefull for the loop optimizer to exploit unboxes.

* lisp/emacs-lisp/comp.el (comp-block): New base class.
(comp-block-lap): New class for LAP derived basic blocks.
(comp-latch): New class.
(comp-bb-maybe-add, comp-make-curr-block, comp-emit-handler)
(comp-emit-switch, comp-emit-switch, comp-limplify-top-level)
(comp-addr-to-bb-name, comp-limplify-block)
(comp-limplify-function): Update logic for new bb objects
arrangment.
(comp-latch-make-fill): New function.
(comp-emit-uncond-jump, comp-emit-cond-jump): Update to emit
latches.
(comp-new-block-sym): Add a postfix paramenter.

4 years agoFix const qualifier warnings
Andrea Corallo [Sat, 13 Jun 2020 12:39:49 +0000 (14:39 +0200)]
Fix const qualifier warnings

* src/lisp.h (struct Lisp_Subr): Remove const qualifier from
'native_c_name'.

* src/alloc.c (cleanup_vector): Cast to discard const qualifier.

4 years ago* src/alloc.c (cleanup_vector): Fix --enable-check-lisp-object-type build.
Andrea Corallo [Sat, 13 Jun 2020 06:04:09 +0000 (08:04 +0200)]
* src/alloc.c (cleanup_vector): Fix --enable-check-lisp-object-type build.

4 years agoMerge remote-tracking branch 'savahnna/master' into HEAD
Andrea Corallo [Thu, 11 Jun 2020 16:37:47 +0000 (18:37 +0200)]
Merge remote-tracking branch 'savahnna/master' into HEAD

4 years ago* Fix memory leak when native compiled function is collected
Andrea Corallo [Thu, 11 Jun 2020 21:24:00 +0000 (23:24 +0200)]
* Fix memory leak when native compiled function is collected

* src/alloc.c (cleanup_vector): Handle native compiled
functions.

4 years agoFix recursive load for non cons hashed 'data_ephemeral_vec' content
Andrea Corallo [Thu, 11 Jun 2020 18:23:00 +0000 (20:23 +0200)]
Fix recursive load for non cons hashed 'data_ephemeral_vec' content

Removing `Vcomp_sym_subr_c_name_h' all c_name functions are GC
markable only through 'data_ephemeral_vec'.  A recursive load must not
overide its content otherwise a previously activated load will have
the original content collected before it's used.

* src/comp.h (struct Lisp_Native_Comp_Unit): Add 'load_ongoing'
field.

* src/comp.c (unset_cu_load_ongoing): New function.
(load_comp_unit): Update logic to detect and handle recursive
loads.

4 years agoRemove `Vcomp_sym_subr_c_name_h'
Andrea Corallo [Thu, 11 Jun 2020 20:22:00 +0000 (22:22 +0200)]
Remove `Vcomp_sym_subr_c_name_h'

Given there's no more unique relation symbol-name -> c-name remove
`Vcomp_sym_subr_c_name_h' and store the c_name directly in struct
Lisp_Subr.  The old approach would have failed dumping two functions
with the same symbol-name.

* src/lisp.h (struct Lisp_Subr): Add 'native_c_name' field.

* src/pdumper.c (dump_subr): Update hash + dump 'native_c_name'.
(dump_cold_native_subr): dump 'native_c_name'.
(dump_do_dump_relocation): Update logic for reviving using
'native_c_name'.

* src/comp.c (make_subr): Update for 'native_c_name' field.
(Fcomp__register_lambda, Fcomp__register_subr): Clean-up code for
'Vcomp_sym_subr_c_name_h' removal.
(syms_of_comp): Remove 'Vcomp_sym_subr_c_name_h'.

4 years ago; * lisp/faces.el (readable-foreground-color): Fix editing mistake.
Mattias Engdegård [Wed, 10 Jun 2020 22:06:24 +0000 (00:06 +0200)]
; * lisp/faces.el (readable-foreground-color): Fix editing mistake.

4 years agoImproved light/dark colour predicate (bug#41544)
Mattias Engdegård [Wed, 10 Jun 2020 17:18:58 +0000 (19:18 +0200)]
Improved light/dark colour predicate (bug#41544)

Add a predicate, color-dark-p, for deciding whether a colour is more
readable with black or white as contrast.  It has experimentally been
shown to be more accurate and robust than the various methods
currently employed.

The new predicate compares the relative luminance of the colour to an
empirically determined cut-off value, and it seems to get it right in
almost all cases, with no value leading to outright bad results.

* lisp/faces.el (readable-foreground-color): Use color-dark-p.
(color-dark-p): New function.
* lisp/facemenu.el (list-colors-print): Use readable-foreground-color,
improving readability of list-colors-display.
* lisp/textmodes/css-mode.el (css--contrasty-color): Remove.
(css--fontify-region): Use readable-foreground-color.

4 years agoFuther tramp-crypt implementation and documentation
Michael Albinus [Wed, 10 Jun 2020 17:36:53 +0000 (19:36 +0200)]
Futher tramp-crypt implementation and documentation

* doc/misc/tramp.texi (Top, Configuration): Insert section
`Keeping files encrypted' in menu.
(Keeping files encrypted): New node.

* lisp/net/tramp-crypt.el (tramp-crypt-file-name-handler-alist):
Add `tramp-set-file-uid-gid'.
(tramp-crypt-maybe-open-connection): Simplify.
(tramp-crypt-do-encrypt-or-decrypt-file): Use `binary' coding system.
(tramp-crypt-handle-set-file-uid-gid): New defun.

* test/lisp/net/tramp-tests.el (tramp-test09-insert-file-contents):
Adapt test.

4 years ago; * test/lisp/emacs-lisp/generator-tests.el: Checkdoc fixes
Philipp Stephani [Wed, 10 Jun 2020 13:49:57 +0000 (15:49 +0200)]
; * test/lisp/emacs-lisp/generator-tests.el: Checkdoc fixes

4 years agoSlightly improve commit 73be4d1ed5b190bd93e9bad6aebe43d0dea0d7d3.
Philipp Stephani [Wed, 10 Jun 2020 13:46:12 +0000 (15:46 +0200)]
Slightly improve commit 73be4d1ed5b190bd93e9bad6aebe43d0dea0d7d3.

* lisp/emacs-lisp/cl-macs.el (cl-lambda-list, cl-lambda-list1)
(cl-macro-list, cl-macro-list1): Use exactly the same specification as
for &optional (sans the third optional list element).

4 years agoAllow destructuring in &aux sections when using edebug (Bug#40431)
Philipp Stephani [Wed, 10 Jun 2020 13:34:41 +0000 (15:34 +0200)]
Allow destructuring in &aux sections when using edebug (Bug#40431)

* lisp/emacs-lisp/cl-macs.el (cl-lambda-list, cl-lambda-list1)
(cl-macro-list, cl-macro-list1): Allow arbitrary 'cl-lambda'
arguments in the &aux section.

* test/lisp/emacs-lisp/cl-macs-tests.el (cl-macs-aux-edebug): New
regression test.

4 years ago* Remove unused 'helper_save_window_excursion'
Andrea Corallo [Tue, 9 Jun 2020 20:41:19 +0000 (22:41 +0200)]
* Remove unused 'helper_save_window_excursion'

* src/comp.c (helper_unwind_protect): Remove definition and
declaration.

4 years agoCopy suffixes passed to 'openp' to avoid GC crashes. Fixes bug#41755
Nicolás Bértolo [Tue, 9 Jun 2020 01:01:25 +0000 (22:01 -0300)]
Copy suffixes passed to 'openp' to avoid GC crashes. Fixes bug#41755

In openp_add_middle_dir_to_suffixes we build a heap-based list from
the passed suffixes.  It is crucial that we don't create a heap-based
cons that points to a stack-based list.

* src/lread.c (openp_add_middle_dir_to_suffixes): Copy suffixes when
building a list of middle-dirs and suffixes.

4 years ago; Simplify last change
Basil L. Contovounesios [Wed, 10 Jun 2020 00:00:01 +0000 (01:00 +0100)]
; Simplify last change

* lisp/progmodes/project.el (project--read-project-list): We are
already at BOB after insert-file-contents.

4 years agoSave project list as lisp data
Simen Heggestøyl [Fri, 5 Jun 2020 17:32:30 +0000 (19:32 +0200)]
Save project list as lisp data

Save the project list file as lisp data instead of line separated
strings to make it more extendable in the future.

* lisp/progmodes/project.el (project--read-project-list)
(project--write-project-list, project--add-to-project-list-front)
(project--remove-from-project-list): Adjust to `project--list' now
being an alist.

4 years agoOrthographical amendments to commit 145aab0672ae259736ee9230f8e0ff4effa5f4fd
Alan Mackenzie [Tue, 9 Jun 2020 16:58:52 +0000 (16:58 +0000)]
Orthographical amendments to commit 145aab0672ae259736ee9230f8e0ff4effa5f4fd

* etc/NEWS: Correct the spelling of CC Mode.

* lisp/progmodes/cc-fonts.el (doxygen-font-lock-doc-comments): Replace curly
  quotes in comments by ASCII ones.

4 years ago* Fix usage of cl-destructuring-bind in package--delete-directory.
Nicolás Bértolo [Mon, 8 Jun 2020 23:47:06 +0000 (20:47 -0300)]
* Fix usage of cl-destructuring-bind in package--delete-directory.

* lisp/emacs-lisp/package.el (package--delete-directory): Fix usage of
cl-destructuring-bind.

4 years agoContinue implementation of tramp-crypt.el
Michael Albinus [Tue, 9 Jun 2020 11:43:30 +0000 (13:43 +0200)]
Continue implementation of tramp-crypt.el

* lisp/net/tramp-crypt.el (tramp-crypt-do-encrypt-or-decrypt-file):
Add leading "/" to infile.
(tramp-crypt-add-directory): Fix docstring.  Expand NAME.
(tramp-crypt-remove-directory)
(tramp-crypt-handle-file-name-all-completions)
(tramp-crypt-handle-set-file-times): New defuns.
(tramp-crypt-handle-file-executable-p)
(tramp-crypt-handle-file-readable-p)
(tramp-crypt-handle-file-system-info)
(tramp-crypt-handle-set-file-modes): Fix implementation.

* test/lisp/net/tramp-tests.el: Adapt call convention
for (tramp--test-crypt-p).

4 years ago* lisp/simple.el (shell-command-on-region): Handle nil replace on rectangles.
Juri Linkov [Mon, 8 Jun 2020 23:34:53 +0000 (02:34 +0300)]
* lisp/simple.el (shell-command-on-region): Handle nil replace on rectangles.

When 'region-noncontiguous-p' is non-nil (rectangular region)
but 'replace' is nil, pop up the shell output buffer (bug#41440).
When 'replace' is non-nil, trim the trailing newline.

4 years ago* src/comp.h (struct Lisp_Native_Comp_Unit): Fix missing GCALIGNED_STRUCT.
Andrea Corallo [Mon, 8 Jun 2020 21:31:19 +0000 (22:31 +0100)]
* src/comp.h (struct Lisp_Native_Comp_Unit): Fix missing GCALIGNED_STRUCT.

4 years agoRename lambda_gc_guard -> lambda_gc_guard_h
Andrea Corallo [Mon, 8 Jun 2020 21:13:29 +0000 (22:13 +0100)]
Rename lambda_gc_guard -> lambda_gc_guard_h

* src/comp.h (struct Lisp_Native_Comp_Unit): Rename
lambda_gc_guard -> lambda_gc_guard_h

* src/pdumper.c (dump_do_dump_relocation): Likewise.

* src/comp.c (check_comp_unit_relocs, Fcomp__register_lambda)
(Fnative_elisp_load): Likewise.

4 years ago* Fix load logic for the reloading CU case (bug#41754)
Andrea Corallo [Mon, 8 Jun 2020 15:21:03 +0000 (17:21 +0200)]
* Fix load logic for the reloading CU case (bug#41754)

* src/comp.c (load_comp_unit): When swapping the compilation unit
abandoning the new one for the original do not forget to set its
loaded_once field to true because is in use by
`comp--register-lambda'.
(Fcomp__register_lambda): Add sanity a check to spot
early if we are trying to load the same lambda twice.

4 years ago* Move final log after containers has been finalized
Andrea Corallo [Mon, 8 Jun 2020 16:34:46 +0000 (18:34 +0200)]
* Move final log after containers has been finalized

* lisp/emacs-lisp/comp.el (comp-final): Remove function log.
(comp-compile-ctxt-to-file): Add function log.

4 years ago* src/pdumper.c (dump_do_dump_relocation): Fix 'lambda_gc_guard' fill value.
Andrea Corallo [Mon, 8 Jun 2020 22:06:33 +0000 (00:06 +0200)]
* src/pdumper.c (dump_do_dump_relocation): Fix 'lambda_gc_guard' fill value.

Given 'lambda_gc_guard' is in use for sanity checking fill it with t
as value.

4 years agoMore robust NS hex colour string parsing
Mattias Engdegård [Mon, 8 Jun 2020 11:06:51 +0000 (13:06 +0200)]
More robust NS hex colour string parsing

Invalid arguments to color-values, such as "#abcdefg" or "#1234", or
valid ones like "#111222333", should not yield nonsense values.

* src/nsterm.m (ns_get_color):
Only accept "#RGB" strings with 1-4 digits per components, equal number
of digits each, and no trailing characters.  Parse 12-bit colours
correctly.

4 years agoAdd autoload problem in tramp-crypt.el.
Michael Albinus [Mon, 8 Jun 2020 08:18:35 +0000 (10:18 +0200)]
Add autoload problem in tramp-crypt.el.

* lisp/net/tramp-crypt.el (tramp-crypt-encfs-config):
Add ;;;###tramp-autoload cookie.
(tramp-crypt-directories): Move it up.
(tramp-crypt-file-name-p): Move it up.  Add ;;;###tramp-autoload
cookie.  Make it a defsubst.

* test/lisp/net/tramp-tests.el (tramp-crypt): Do not require.

4 years agoMerge remote-tracking branch 'savannah/master' into dev
Andrea Corallo [Sun, 7 Jun 2020 18:08:54 +0000 (20:08 +0200)]
Merge remote-tracking branch 'savannah/master' into dev

4 years agoUse lexical-binding in lunar.el and add tests
Stefan Kangas [Sun, 7 Jun 2020 17:57:45 +0000 (19:57 +0200)]
Use lexical-binding in lunar.el and add tests

* lisp/calendar/lunar.el: Use lexical-binding.
(lunar-phases, diary-lunar-phases): Silence byte-compiler.
* test/lisp/calendar/lunar-tests.el: New file.

4 years ago* lisp/emacs-lisp/byte-opt.el (side-effect-free-fns): Add `make-byte-code'.
Andrea Corallo [Sun, 7 Jun 2020 13:09:38 +0000 (15:09 +0200)]
* lisp/emacs-lisp/byte-opt.el (side-effect-free-fns): Add `make-byte-code'.

`make-byte-code' wraps `vector' doing some sanity check on the input
arguments.  `vector' is in side-effect-and-error-free-fns so add
`make-byte-code' to side-effect-free-fns.

4 years ago* test/lisp/net/tramp-tests.el: tramp-crypt-file-name-p not autoloaded.
Glenn Morris [Sun, 7 Jun 2020 17:37:29 +0000 (10:37 -0700)]
* test/lisp/net/tramp-tests.el: tramp-crypt-file-name-p not autoloaded.

4 years ago* Rename comp-function-optimizable -> comp-function-optimizable-p
Andrea Corallo [Sun, 7 Jun 2020 12:42:12 +0000 (14:42 +0200)]
* Rename comp-function-optimizable -> comp-function-optimizable-p

* lisp/emacs-lisp/comp.el (comp-function-optimizable): Rename into
'comp-function-optimizable-p'.
(comp-function-call-maybe-remove): Use the new name.

4 years ago* Fix comp-call-optim-form-call for null `callee'
Andrea Corallo [Sun, 7 Jun 2020 11:58:27 +0000 (13:58 +0200)]
* Fix comp-call-optim-form-call for null `callee'

* lisp/emacs-lisp/comp.el (comp-call-optim-form-call): Guard
agains null `calle'.

4 years agoMerge from origin/emacs-27
Glenn Morris [Sun, 7 Jun 2020 16:03:59 +0000 (09:03 -0700)]
Merge from origin/emacs-27

35661ef943 (origin/emacs-27) Fix typo in "(elisp) Type Keywords"
1af0e95fec Gnus nnir-summary-line-format has no effect
dd366b5d3b Improve documentation of 'window-text-pixel-size'
fbd49f969e * src/xdisp.c (Fwindow_text_pixel_size): Doc fix.  (Bug#41...
d8593fd19f Minor improvements to EDE and EIEIO manuals
3916e63f9e Have Fido mode also imitate Ido mode in ignore-case options
cc35b197c7 Update package-menu-quick-help
bf09106256 Improve documentation of 'sort-subr'
73749efa13 Update Ukrainian transliteration
30a7ee505a Fix Arabic shaping when eww/shr fill the text to be rendered
7d323f07c0 Silence some byte-compiler warnings in tests
cf473e742f * test/lisp/battery-tests.el: New file.
b07e3b1d97 Improve format-spec documentation (bug#41571)

# Conflicts:
# test/lisp/emacs-lisp/package-tests.el

4 years agoFix typo in "(elisp) Type Keywords"
Basil L. Contovounesios [Sun, 7 Jun 2020 15:46:12 +0000 (16:46 +0100)]
Fix typo in "(elisp) Type Keywords"

* doc/lispref/customize.texi (Type Keywords): Fix typo of 'choice'
composite type.  (Bug#41749)

4 years ago* lisp/progmodes/js.el (js-mode): Remove second call to c-init-language-vars
Alan Mackenzie [Sun, 7 Jun 2020 15:14:15 +0000 (15:14 +0000)]
* lisp/progmodes/js.el (js-mode): Remove second call to c-init-language-vars

This spurious second call fouled up already set configuration variables.
Fixes bug #41649.

4 years ago* Improve propagate pass
Andrea Corallo [Sun, 7 Jun 2020 09:46:08 +0000 (11:46 +0200)]
* Improve propagate pass

As function folding can generate 'setimm' insns handle them in the
`comp-propagate-insn'.

* lisp/emacs-lisp/comp.el (comp-propagate-insn): Handle 'setimm'
insn.

4 years agoAdd file encryption to Tramp
Michael Albinus [Sun, 7 Jun 2020 14:57:32 +0000 (16:57 +0200)]
Add file encryption to Tramp

* lisp/net/tramp-crypt.el: New file.

* lisp/net/tramp.el (tramp-run-real-handler):
Add `tramp-crypt-file-name-handler'.
(tramp-register-file-name-handlers):
Call `tramp-register-crypt-file-name-handler'.
(tramp-handle-insert-file-contents, tramp-local-host-p): Check for
`tramp-crypt-enabled'

* test/lisp/net/tramp-tests.el (tramp--test-crypt-p): New defun.
(tramp-test24-file-acl, tramp-test25-file-selinux)
(tramp-test28-process-file, tramp-test29-start-file-process)
(tramp-test30-make-process, tramp-test31-interrupt-process)
(tramp-test32-shell-command)
(tramp-test32-shell-command-dont-erase-buffer)
(tramp-test33-environment-variables)
(tramp-test33-environment-variables-and-port-numbers)
(tramp-test34-explicit-shell-file-name, tramp-test35-exec-path)
(tramp-test35-remote-path, tramp-test36-vc-registered)
(tramp--test-check-files, tramp-test43-asynchronous-requests): Use it.

4 years agoTramp code cleanup
Michael Albinus [Sun, 7 Jun 2020 14:56:59 +0000 (16:56 +0200)]
Tramp code cleanup

* lisp/net/tramp-cache.el (tramp-get-connection-property): Cleanup.

* lisp/net/tramp-cmds.el (tramp-cleanup-all-connections): Delete also
connection processes.

* lisp/net/tramp-sh.el (tramp-set-remote-path): Cache 4096 even if
PIPE_BUF doesn't exist.

4 years agoUse 65535 as color-values scale value in the NS backend
Mattias Engdegård [Sat, 6 Jun 2020 09:23:48 +0000 (11:23 +0200)]
Use 65535 as color-values scale value in the NS backend

* src/nsfns.m (Fxw_color_values): Scale with 65535 instead of 65280, for
uniformity with other backends.
* lisp/faces.el (color-values): Update doc string.
* doc/lispref/frames.texi (Color Names): Update examples.

4 years ago* Optimize optimizable variables
Andrea Corallo [Sat, 6 Jun 2020 22:34:21 +0000 (00:34 +0200)]
* Optimize optimizable variables

* lisp/emacs-lisp/comp.el (comp-symbol-values-optimizable): New
defconst.
(comp-function-call-maybe-remove): New logic to to remove
unnecessary `symbol-value' calls.

4 years agoGnus nnir-summary-line-format has no effect
Tassilo Horn [Sun, 7 Jun 2020 08:01:41 +0000 (10:01 +0200)]
Gnus nnir-summary-line-format has no effect

* lisp/gnus/nnir.el (nnir-mode): Update summary format specs if
nnir-summary-line-format is set and different from
gnus-summary-line-format.
(nnir-open-server): Run nnir-mode in gnus-summary-generate-hook
instead of gnus-summary-prepared-hook.

4 years agoThe key prefix 'C-x t t' displays next command buffer in a new tab (bug#41691)
Juri Linkov [Sat, 6 Jun 2020 23:42:24 +0000 (02:42 +0300)]
The key prefix 'C-x t t' displays next command buffer in a new tab (bug#41691)

* lisp/tab-bar.el (other-tab-prefix): New command.
(tab-prefix-map): Bind key 'C-x t t' to other-tab-prefix.

* lisp/windmove.el (windmove-display-in-direction):
Use display-buffer-override-next-command.

* lisp/window.el (display-buffer-override-next-command):
New function refactored from windmove-display-in-direction.

4 years ago* Mitigate possible speed 3 miss-optimization
Andrea Corallo [Sat, 6 Jun 2020 14:53:34 +0000 (16:53 +0200)]
* Mitigate possible speed 3 miss-optimization

Do not perform trampoline optimization at speed 3 on function if their
name is not unique inside the compilation unit.  Note that the
function can still be redefined in any other way therefore this is a
mitigation.

* lisp/emacs-lisp/comp.el (comp-func-unique-in-cu-p): New
predicate.
(comp-call-optim-form-call): Perform trampoline optimization
for named functions only if they are unique within the current
compilation unit.

4 years ago* Allow for optimizing anonymous lambdas in call-optim
Andrea Corallo [Sat, 6 Jun 2020 12:49:01 +0000 (14:49 +0200)]
* Allow for optimizing anonymous lambdas in call-optim

* lisp/emacs-lisp/comp.el (comp-func-in-unit): New function.
(comp-call-optim-form-call): Update logic for optimizing
anonymous lambdas.

4 years ago* Clean-up unnecessary lisp_X context definition
Andrea Corallo [Sat, 6 Jun 2020 12:20:47 +0000 (14:20 +0200)]
* Clean-up unnecessary lisp_X context definition

* src/comp.c (Fcomp__init_ctxt, comp_t): Remove lisp_X
definition as is used only locally.

4 years agoChange 'direct-call' 'direct-callref' LIMPLE ops sematinc
Andrea Corallo [Sat, 6 Jun 2020 11:30:59 +0000 (13:30 +0200)]
Change 'direct-call' 'direct-callref' LIMPLE ops sematinc

Is cleaner to have the function c-name as first argument of
'direct-call' 'direct-callref'.  This is preparatory to anonymous
lambdas optimization.

* lisp/emacs-lisp/comp.el (comp-propagate-insn): Use c-name when
gathering the comp-func definition for direct calls.
(comp-call-optim-form-call): Add put c-name as first argument of
direct-call direct-callref when optimizing.

* src/comp.c (emit_call): Update logic for having c-name as
first arg of direct calls.
(emit_call_ref): Rename 'subr_sym' into 'func'.

4 years agoReduce the number of files probed when finding a lisp file.
Nicolás Bértolo [Mon, 25 May 2020 21:05:23 +0000 (18:05 -0300)]
Reduce the number of files probed when finding a lisp file.

* src/lread.c (get-load-suffixes): Do not add any suffix to files that
need to be loaded by the dynamic linker.
(effective_load_path): Remove function.
(load): Don't add any suffix if file ends in a suffix already.
(effective_load_path): Remove function.
(openp_add_middle_dir_to_suffixes): Add helper function to create
pairs of middle directories and suffixes.
(openp_max_middledir_and_suffix_len): Add helper function to count the
number of bytes needed to store the middle directory and suffix.
(openp_fill_filename_buffer): Add helper function to copy middle
directory, basename and suffix to the filename buffer.

4 years agoMerge remote-tracking branch 'savannah/master' into HEAD
Andrea Corallo [Sat, 6 Jun 2020 19:52:00 +0000 (21:52 +0200)]
Merge remote-tracking branch 'savannah/master' into HEAD

4 years agomake-text-button no longer modifies its string arg
Paul Eggert [Sat, 6 Jun 2020 19:05:10 +0000 (12:05 -0700)]
make-text-button no longer modifies its string arg

* etc/NEWS: Mention this.
* lisp/apropos.el (apropos-library-button):
* lisp/ibuf-ext.el (ibuffer-old-saved-filters-warning):
There’s no longer a need copy make-text-button’s string arg.
* lisp/button.el (make-text-button): Return a copy of a string arg.
Delay making the copy until after error-checking.

4 years agoImprove documentation of 'window-text-pixel-size'
Eli Zaretskii [Sat, 6 Jun 2020 17:10:37 +0000 (20:10 +0300)]
Improve documentation of 'window-text-pixel-size'

* doc/lispref/display.texi (Size of Displayed Text): Clarify the
description of 'window-text-pixel-size'.

4 years ago* src/xdisp.c (Fwindow_text_pixel_size): Doc fix. (Bug#41737)
Eli Zaretskii [Sat, 6 Jun 2020 16:53:08 +0000 (19:53 +0300)]
* src/xdisp.c (Fwindow_text_pixel_size): Doc fix.  (Bug#41737)

4 years agoUn-deprecate oset and oset-default
Basil L. Contovounesios [Wed, 3 Jun 2020 16:35:59 +0000 (17:35 +0100)]
Un-deprecate oset and oset-default

For discussion see the following threads:
https://lists.gnu.org/archive/html/emacs-devel/2020-05/msg00630.html
https://lists.gnu.org/archive/html/emacs-devel/2020-05/msg00674.html
https://lists.gnu.org/archive/html/emacs-devel/2020-06/msg00099.html

* lisp/emacs-lisp/eieio.el (oset, oset-default): Un-deprecate.
* lisp/emacs-lisp/eieio-core.el (eieio-oref): Declare gv-setter here
instead of in lisp/emacs-lisp/eieio.el.  Suggested by
Stefan Monnier <monnier@iro.umontreal.ca>.
(eieio-oref-default): Add gv-setter declaration.
* etc/NEWS: Announce these changes.
* doc/misc/eieio.texi (Accessing Slots): Document oref and
oref-default as generalized variables.  Consistently document
getters before setters.
* test/lisp/emacs-lisp/eieio-tests/eieio-tests.el: Use
lexical-binding.
(eieio-test-13-init-methods): Simplify.
(eieio-test-33-instance-tracker): Declare IT-list as special.

4 years agoMinor improvements to EDE and EIEIO manuals
Basil L. Contovounesios [Wed, 3 Jun 2020 16:31:44 +0000 (17:31 +0100)]
Minor improvements to EDE and EIEIO manuals

For discussion, see the following threads:
https://lists.gnu.org/archive/html/emacs-devel/2020-05/msg00630.html
https://lists.gnu.org/archive/html/emacs-devel/2020-06/msg00099.html

* doc/misc/ede.texi (ede-generic-project): Clean up example.
* doc/misc/eieio.texi (Accessing Slots): Document slot-value as a
generalized variable and set-slot-value as obsolete.
(Predicates): Fix typo.
(Introspection): Document eieio-class-slots in place of the obsolete
object-slots.

4 years agoSome fixes for --without-nativecomp config
Andrea Corallo [Sat, 6 Jun 2020 12:00:45 +0000 (13:00 +0100)]
Some fixes for --without-nativecomp config

* src/pdumper.c (dump_subr): Do not add RELOC_NATIVE_SUBR for
VERY_LATE_RELOCS in --without-nativecomp.
(dump_do_dump_relocation): Add a sanity check that no
RELOC_NATIVE_SUBR exists in --without-nativecomp.

* src/lread.c (Fload): As Fnative_elisp_load is not defined
in --without-nativecomp so ifdef this block.

4 years agoImprove battery status display via GNU/Linux sysfs
Ellington Santos [Tue, 26 May 2020 14:37:04 +0000 (11:37 -0300)]
Improve battery status display via GNU/Linux sysfs

* lisp/battery.el (battery-linux-sysfs): Support %b format.
Improve the display of %p.  (Bug#41542)

Copyright-paperwork-exempt: yes

4 years agoHave Fido mode also imitate Ido mode in ignore-case options
João Távora [Fri, 5 Jun 2020 22:36:55 +0000 (23:36 +0100)]
Have Fido mode also imitate Ido mode in ignore-case options

Suggested by Sean Whitton <spwhitton@spwhitton.name>.

* lisp/icomplete.el (icomplete--fido-mode-setup): Set ignore-case
options.

4 years agoUpdate package-menu-quick-help
Basil L. Contovounesios [Fri, 5 Jun 2020 13:02:41 +0000 (14:02 +0100)]
Update package-menu-quick-help

* lisp/emacs-lisp/package.el (package--quick-help-keys): Filtering
is now bound to the prefix '/', not the key 'f' (bug#41721).
Advertise only the standard 'g' binding now that both it and 'r' are
bound to revert-buffer (bug#35504).
(package--prettify-quick-help-key): Avoid modifying string literals.
(package-menu-filter): Reintroduce as obsolete alias of
package-menu-filter-by-keyword for backward
compatibility (bug#36981).

4 years agoAvoid zero-width glyphs and the resulting cursor artifacts
Pip Cet [Thu, 4 Jun 2020 22:28:53 +0000 (22:28 +0000)]
Avoid zero-width glyphs and the resulting cursor artifacts

* src/xdisp.c (fill_gstring_glyph_string): Handle unavailable glyphs.
(append_composite_glyph): Mark unavailable glyphs.
(gui_produce_glyphs): Make glyphs unavailable for zero-width
compositions.  (Bug#41645)

4 years agoImprove documentation of 'sort-subr'
Eli Zaretskii [Fri, 5 Jun 2020 08:30:03 +0000 (11:30 +0300)]
Improve documentation of 'sort-subr'

* doc/lispref/text.texi (Sorting): Clarify the meaning and use of
PREDICATE argument to 'sort-subr'.  (Bug#41706)

4 years agoUpdate Ukrainian transliteration
Andrii Kolomoiets [Wed, 3 Jun 2020 11:14:57 +0000 (14:14 +0300)]
Update Ukrainian transliteration

* lisp/language/cyril-util.el (standard-display-cyrillic-translit):
Add missing letter "ґ"; tweak letter "г".  (Bug#41683)

4 years agoFix Arabic shaping when eww/shr fill the text to be rendered
Eli Zaretskii [Fri, 5 Jun 2020 07:56:01 +0000 (10:56 +0300)]
Fix Arabic shaping when eww/shr fill the text to be rendered

* src/hbfont.c (hbfont_shape): Don't use DIRECTION if the current
buffer has bidi reordering disabled.  (Bug#41005)

4 years agoStreamline live_*_holding
Paul Eggert [Fri, 5 Jun 2020 01:46:11 +0000 (18:46 -0700)]
Streamline live_*_holding

(live_string_holding, live_cons_holding, live_symbol_holding)
(live_float_p, live_vector_holding):
Assert that m->type is correct, instead of testing this at
runtime.  All callers changed.
(live_large_vector_holding, live_small_vector_holding):
Now two functions instead of the old live_vector_holding.
All callers changed.
(live_large_vector_p, live_small_vector_p):
Now two functions instead of the old live_vector_p.
All callers changed.
(mark_maybe_object): Ignore Lisp_Type_Unused0 quickly too,
since that cannot possibly be an object.
(CHECK_LIVE, CHECK_ALLOCATED_AND_LIVE):
New arg MEM_TYPE.  All callers changed.
(CHECK_ALLOCATED_AND_LIVE_SYMBOL): Simplify by combining
GC_CHECK_MARKED_OBJECTS code.

4 years agoMake live_*_p more accurate
Paul Eggert [Fri, 5 Jun 2020 01:46:10 +0000 (18:46 -0700)]
Make live_*_p more accurate

* src/alloc.c (live_string_holding, live_cons_holding)
(live_symbol_holding, live_vector_holding):
Return a C pointer, not a Lisp_Object.  All callers changed.
This helps the compiler a bit.
(live_string_p, live_cons_p, live_symbol_p, live_vector_p):
Require that P point directly at the object, rather than
somewhere within the object.  This fixes some false positives
with valid_lisp_object_p (used only in debugging).
(mark_maybe_object): Rely on the new accuracy.

4 years agoFix some side-effecting uses of make-text-button
Basil L. Contovounesios [Thu, 4 Jun 2020 22:08:28 +0000 (23:08 +0100)]
Fix some side-effecting uses of make-text-button

For discussion, see the following thread:
https://lists.gnu.org/archive/html/emacs-devel/2020-06/msg00117.html

* lisp/apropos.el (apropos-library-button):
* lisp/help-fns.el (help-fns--first-release): Return result of
make-text-button instead of relying on its side effects.
* lisp/ibuf-ext.el (ibuffer-old-saved-filters-warning): Avoid
modifying an immutable string.

4 years ago* lisp/dired.el (dired-toggle-marks): Use region for non-nil dired-mark-region
Juri Linkov [Thu, 4 Jun 2020 22:17:30 +0000 (01:17 +0300)]
* lisp/dired.el (dired-toggle-marks): Use region for non-nil dired-mark-region

(dired-mark--region-use-p, dired-mark--region-beginning)
(dired-mark--region-end): New internal functions.
(dired-mark-if): Use new functions.  (Bug#39902)

4 years agoChange default project list filename to "projects"
Simen Heggestøyl [Thu, 4 Jun 2020 17:58:36 +0000 (19:58 +0200)]
Change default project list filename to "projects"

* lisp/progmodes/project.el (project-list-file): Change the default
filename to "projects".

4 years agoUse characters for keys in project-switch-commands
Simen Heggestøyl [Thu, 4 Jun 2020 17:56:32 +0000 (19:56 +0200)]
Use characters for keys in project-switch-commands

* lisp/progmodes/project.el (project-switch-commands): Use
characters for keys instead of string for better future
compatibility with 'read-multiple-choice'.
(project-switch-project): Adjust to above change.

4 years ago; Small cleanup in project.el
Simen Heggestøyl [Thu, 4 Jun 2020 17:29:10 +0000 (19:29 +0200)]
; Small cleanup in project.el

* lisp/progmodes/project.el (project--add-to-project-list-front):
Minor simplification after recent changes.

4 years ago* lisp/font-lock.el (font-lock--syntax-table-affects-ppss): New var
Stefan Monnier [Thu, 4 Jun 2020 13:58:22 +0000 (09:58 -0400)]
* lisp/font-lock.el (font-lock--syntax-table-affects-ppss): New var

This tries to make `font-lock-syntax-table` work correctly even when
it changes the parsing of strings and comments, as was the case in
`font-latex.el`.

We should probably deprecate the use of `font-lock-syntax-table` since
the present fix is still not 100% and since it comes with performance
problems in large files.

(font-lock-set-defaults): Set it.
(font-lock-fontify-syntactically-region): Don't use `syntax-ppss`
when we think that `font-lock-syntax-table` would interfere.

4 years ago* Fix build for --enable-check-lisp-object-type=yes (bug#41703)
Andrea Corallo [Thu, 4 Jun 2020 10:02:51 +0000 (11:02 +0100)]
* Fix build for --enable-check-lisp-object-type=yes (bug#41703)

* src/comp.c (emit_coerce): Add missing declaration.

4 years agoMerge remote-tracking branch 'savannah/master' into HEAD
Andrea Corallo [Thu, 4 Jun 2020 09:33:07 +0000 (10:33 +0100)]
Merge remote-tracking branch 'savannah/master' into HEAD

4 years ago; * test/src/xfaces-tests.el (xfaces-color-distance): Fix bug id
Mattias Engdegård [Thu, 4 Jun 2020 08:55:16 +0000 (10:55 +0200)]
; * test/src/xfaces-tests.el (xfaces-color-distance): Fix bug id

4 years agoDon’t default to Valgrind unless ENABLE_CHECKING
Paul Eggert [Thu, 4 Jun 2020 01:58:45 +0000 (18:58 -0700)]
Don’t default to Valgrind unless ENABLE_CHECKING

* src/alloc.c (USE_VALGRIND): If not defined, don’t default it to
1 unless ENABLE_CHECKING.  The Valgrind hooks bloat the garbage
collector a bit in production, and there’s no need for them these
days if one has a Valgrind suppressions file (which one needs anyway).
(mark_maybe_pointer): Use ‘#if USE_VALGRIND’ instead of ‘#ifdef
USE_VALGRIND’ for consistency with other uses of USE_VALGRIND.
This is in case someone builds with ‘-DENABLE_CHECKING
-DUSE_VALGRIND=0’ in CFLAGS.

4 years agoRevert make-text-button string copy
Paul Eggert [Thu, 4 Jun 2020 01:15:54 +0000 (18:15 -0700)]
Revert make-text-button string copy

* lisp/button.el (make-text-button): Don’t make a copy of
a button’s string label.  This reverts the change made in
2020-05-17T05:23:28Z!eggert@cs.ucla.edu, which broke SLY.
Problem reported by João Távora in:
https://lists.gnu.org/r/emacs-devel/2020-06/msg00117.html
However, we’ll need a better fix for this once string
literals become contents, if SLY uses string constants
for text button labels.

4 years agoFix make-text-button bug with string copy
Paul Eggert [Wed, 3 Jun 2020 22:39:29 +0000 (15:39 -0700)]
Fix make-text-button bug with string copy

* lisp/button.el (make-text-button): Use the copy of BEG
uniformly, instead of in just one place.  This fixes a typo
introduced in 2020-05-17T05:23:28Z!eggert@cs.ucla.edu.
Problem reported by João Távora in:
https://lists.gnu.org/r/emacs-devel/2020-06/msg00117.html

4 years ago* Introduce `comp-loop-insn-in-block'
Andrea Corallo [Wed, 3 Jun 2020 21:06:26 +0000 (22:06 +0100)]
* Introduce `comp-loop-insn-in-block'

* lisp/emacs-lisp/comp.el (comp-loop-insn-in-block): New macro.
(comp-call-optim-func, comp-dead-assignments-func)
(comp-remove-type-hints-func): Use `comp-loop-insn-in-block'.

4 years agoEnsure Jsonrpc processes are created in correct buffer
João Távora [Wed, 3 Jun 2020 19:53:35 +0000 (20:53 +0100)]
Ensure Jsonrpc processes are created in correct buffer

Report and original implementation by Steve Purcell
<steve@sanityinc.com>.  See also See
https://github.com/joaotavora/eglot/pull/493 for details

* lisp/jsonrpc.el (initialize-instance): Make process in original
buffer.
(Version): Bump to 1.0.12

4 years agoMake color-distance symmetric and more accurate
Mattias Engdegård [Tue, 2 Jun 2020 20:31:14 +0000 (22:31 +0200)]
Make color-distance symmetric and more accurate

* src/xfaces.c (color_distance): Don't throw away the low 8 bits of
the colours, and make the function symmetric (bug41544)
(Fcolor_distance): Add caution about this not being a true metric.
* test/src/xfaces-tests.el: New file.

4 years ago; Clean up recent project.el additions
Basil L. Contovounesios [Wed, 3 Jun 2020 10:45:54 +0000 (11:45 +0100)]
; Clean up recent project.el additions

* lisp/progmodes/project.el (project): Add :version tag.
(project-list-file): Fix custom :type and add :version tag.

4 years agoHandle mid-gstring face changes
Pip Cet [Sun, 31 May 2020 19:55:48 +0000 (19:55 +0000)]
Handle mid-gstring face changes

* src/xdisp.c (fill_gstring_glyph_string): Don't extend the glyph
string past face changes.  (Bug#41454)

4 years agoFix bug in recent byte-code checking hoist
Paul Eggert [Wed, 3 Jun 2020 01:40:10 +0000 (18:40 -0700)]
Fix bug in recent byte-code checking hoist

Problem reported by Daniel Colascione (Bug#41680).
* src/lread.c (read1): Check that AREF (tmp, COMPILED_BYTECODE)
is a string before subjecting it to STRING_MULTIBYTE.
Be more consistent about using AREF in the neighborhood,
to help prevent this sort of problem from recurring.

4 years agoSilence some byte-compiler warnings in tests
Basil L. Contovounesios [Tue, 2 Jun 2020 22:14:23 +0000 (23:14 +0100)]
Silence some byte-compiler warnings in tests

* test/lisp/emacs-lisp/cl-generic-tests.el:
* test/lisp/progmodes/elisp-mode-tests.el: Declare functions
referred to within macroexpansions.
(xref-elisp-overloadable-no-default)
(xref-elisp-overloadable-co-located-default)
(xref-elisp-overloadable-separate-default): Prefix unused arguments
with underscore.

* test/lisp/international/ccl-tests.el:
* test/lisp/wdired-tests.el:
* test/lisp/emacs-lisp/package-tests.el: Declare functions used.
(package-test-update-archives, package-test-signed): Use
revert-buffer in place of its obsolete alias package-menu-refresh.

* test/lisp/eshell/eshell-tests.el:
* test/lisp/mail/footnote-tests.el:
* test/src/buffer-tests.el: Require dependencies used.

* test/lisp/image/exif-tests.el: Remove unneeded (require 'seq).
(test-exit-direct-ascii-value): Actually perform the test.
* test/lisp/progmodes/sql-tests.el (sql-test-add-existing-product):
Fix typo.

* test/lisp/simple-tests.el (with-shell-command-dont-erase-buffer):
* test/src/data-tests.el (test-bool-vector-bv-from-hex-string)
(test-bool-vector-apply-mock-op): Remove unused local variables.

4 years ago* test/lisp/battery-tests.el: New file.
Basil L. Contovounesios [Tue, 2 Jun 2020 20:05:28 +0000 (21:05 +0100)]
* test/lisp/battery-tests.el: New file.

4 years agoAvoid losing composition state in handle_stop_backwards
Pip Cet [Sun, 31 May 2020 16:58:19 +0000 (16:58 +0000)]
Avoid losing composition state in handle_stop_backwards

* src/xdisp.c (handle_stop_backwards): Save composition iterator state
across our forward scan.  (Bug#41626)

4 years agoFix DLL imports of gccjit version functions.
Nicolás Bértolo [Mon, 1 Jun 2020 22:53:00 +0000 (19:53 -0300)]
Fix DLL imports of gccjit version functions.

* src/comp.c (init_gccjit_functions): Use LOAD_DLL_FN_OPT macro to
load gcc_jit_version_major, gcc_jit_version_major and
gcc_jit_version_patchlevel.
* src/w32common.h (LOAD_DLL_FN_OPT): Add macro optionally load a
function from a DLL.

4 years ago; NEWS updates
Dmitry Gutov [Tue, 2 Jun 2020 22:10:16 +0000 (01:10 +0300)]
; NEWS updates

4 years agoSmall cleanup
Dmitry Gutov [Tue, 2 Jun 2020 21:33:14 +0000 (00:33 +0300)]
Small cleanup

* lisp/progmodes/project.el (project--add-to-project-list-front):
Small simplification.
(project--remove-from-project-list): Remove oudated comment.

4 years agoproject-list-file: New user option
Dmitry Gutov [Tue, 2 Jun 2020 21:27:29 +0000 (00:27 +0300)]
project-list-file: New user option

* lisp/progmodes/project.el (project): New custom group.
(project-vc): Use it as parent.
(project-vc-merge-submodules): Tag with Emacs version.
(project-read-file-name-function): Assign to the 'project' group.
(project-list-file): New user option (bug#41600).
(project--write-project-list, project--read-project-list): Use it.

4 years ago; * src/composite.c (syms_of_composite): Fix last change.
Eli Zaretskii [Tue, 2 Jun 2020 17:46:26 +0000 (20:46 +0300)]
; * src/composite.c (syms_of_composite): Fix last change.

4 years agoFix Arabic composition rules
Eli Zaretskii [Tue, 2 Jun 2020 17:44:59 +0000 (20:44 +0300)]
Fix Arabic composition rules

* lisp/language/misc-lang.el (composition-function-table): Reorder
Arabic composition rules in descending order of lookback.

* src/composite.c (syms_of_composite): Document the order of rules
in 'composition-function-table'.

4 years agoWrite project list to file only when changed
Simen Heggestøyl [Tue, 2 Jun 2020 17:20:14 +0000 (19:20 +0200)]
Write project list to file only when changed

* lisp/progmodes/project.el (project--add-to-project-list-front):
Write the project list to file only when it has changed.

4 years agoRemove 'project--ensure-file-exists'
Simen Heggestøyl [Fri, 29 May 2020 14:58:09 +0000 (16:58 +0200)]
Remove 'project--ensure-file-exists'

* lisp/progmodes/project.el (project--ensure-file-exists): Remove.
(project--read-project-list): Set 'project--list' to nil when the
project list file doesn't exist.