@ -0,0 +1,6 @@ | |||
cache.db | |||
history.search | |||
history.cmdline | |||
auto-save-list | |||
bookmarks | |||
history |
@ -0,0 +1,4 @@ | |||
cache.db | |||
history.search | |||
history.cmdline | |||
auto-save-list |
@ -0,0 +1,21 @@ | |||
#! /bin/sh | |||
sxhkd & | |||
dunst & | |||
xcape -e "Control_L=Multi_key" | |||
setxkbmap -option ctrl:nocaps,compose:sclk | |||
bspc monitor -d I II III IV V VI VII VIII IX X | |||
bspc config border_width 2 | |||
bspc config window_gap 12 | |||
bspc config split_ratio 0.52 | |||
bspc config borderless_monocle true | |||
bspc config gapless_monocle true | |||
bspc rule -a Gimp desktop='^8' state=floating follow=on | |||
bspc rule -a Chromium desktop='^2' | |||
bspc rule -a mplayer2 state=floating | |||
bspc rule -a Kupfer.py focus=on | |||
bspc rule -a Screenkey manage=off |
@ -0,0 +1,21 @@ | |||
#! /bin/sh | |||
sxhkd & | |||
xcape -e "Control_L=Multi_key" | |||
setxkbmap -option ctrl:nocaps,compose:sclk | |||
bspc monitor -d I II III IV V VI VII VIII IX X | |||
bspc config border_width 2 | |||
bspc config window_gap 12 | |||
bspc config split_ratio 0.52 | |||
bspc config borderless_monocle true | |||
bspc config gapless_monocle true | |||
bspc rule -a Gimp desktop='^8' state=floating follow=on | |||
bspc rule -a Chromium desktop='^2' | |||
bspc rule -a mplayer2 state=floating | |||
bspc rule -a Kupfer.py focus=on | |||
bspc rule -a Screenkey manage=off |
@ -0,0 +1,527 @@ | |||
# Configuration for Alacritty, the GPU enhanced terminal emulator. | |||
# Any items in the `env` entry below will be added as | |||
# environment variables. Some entries may override variables | |||
# set by alacritty itself. | |||
#env: | |||
# TERM variable | |||
# | |||
# This value is used to set the `$TERM` environment variable for | |||
# each instance of Alacritty. If it is not present, alacritty will | |||
# check the local terminfo database and use `alacritty` if it is | |||
# available, otherwise `xterm-256color` is used. | |||
#TERM: xterm-256color | |||
window: | |||
# Window dimensions (changes require restart) | |||
# | |||
# Specified in number of columns/lines, not pixels. | |||
# If both are `0`, this setting is ignored. | |||
dimensions: | |||
columns: 0 | |||
lines: 0 | |||
# Window padding (changes require restart) | |||
# | |||
# Blank space added around the window in pixels. This padding is scaled | |||
# by DPI and the specified value is always added at both opposing sides. | |||
padding: | |||
x: 2 | |||
y: 2 | |||
# Spread additional padding evenly around the terminal content. | |||
dynamic_padding: false | |||
# Window decorations | |||
# | |||
# Values for `decorations`: | |||
# - full: Borders and title bar | |||
# - none: Neither borders nor title bar | |||
# | |||
# Values for `decorations` (macOS only): | |||
# - transparent: Title bar, transparent background and title bar buttons | |||
# - buttonless: Title bar, transparent background, but no title bar buttons | |||
decorations: full | |||
# When true, alacritty starts maximized. | |||
start_maximized: false | |||
scrolling: | |||
# Maximum number of lines in the scrollback buffer. | |||
# Specifying '0' will disable scrolling. | |||
history: 10000 | |||
# Number of lines the viewport will move for every line scrolled when | |||
# scrollback is enabled (history > 0). | |||
multiplier: 3 | |||
# Faux Scrolling | |||
# | |||
# The `faux_multiplier` setting controls the number of lines the terminal | |||
# should scroll when the alternate screen buffer is active. This is used | |||
# to allow mouse scrolling for applications like `man`. | |||
# | |||
# Specifying `0` will disable faux scrolling. | |||
faux_multiplier: 3 | |||
# Scroll to the bottom when new text is written to the terminal. | |||
auto_scroll: false | |||
# Spaces per Tab (changes require restart) | |||
# | |||
# This setting defines the width of a tab in cells. | |||
# | |||
# Some applications, like Emacs, rely on knowing about the width of a tab. | |||
# To prevent unexpected behavior in these applications, it's also required to | |||
# change the `it` value in terminfo when altering this setting. | |||
tabspaces: 4 | |||
# Font configuration (changes require restart) | |||
font: | |||
# Normal (roman) font face | |||
#normal: | |||
# Font family | |||
# | |||
# Default: | |||
# - (macOS) Menlo | |||
# - (Linux) monospace | |||
# - (Windows) Consolas | |||
#family: monospace | |||
# The `style` can be specified to pick a specific face. | |||
#style: Regular | |||
# Bold font face | |||
#bold: | |||
# Font family | |||
# | |||
# If the bold family is not specified, it will fall back to the | |||
# value specified for the normal font. | |||
#family: monospace | |||
# The `style` can be specified to pick a specific face. | |||
#style: Bold | |||
# Italic font face | |||
#italic: | |||
# Font family | |||
# | |||
# If the italic family is not specified, it will fall back to the | |||
# value specified for the normal font. | |||
#family: monospace | |||
# The `style` can be specified to pick a specific face. | |||
#style: Italic | |||
# Point size | |||
size: 11.0 | |||
# Offset is the extra space around each character. `offset.y` can be thought of | |||
# as modifying the line spacing, and `offset.x` as modifying the letter spacing. | |||
offset: | |||
x: 0 | |||
y: 0 | |||
# Glyph offset determines the locations of the glyphs within their cells with | |||
# the default being at the bottom. Increasing `x` moves the glyph to the right, | |||
# increasing `y` moves the glyph upwards. | |||
glyph_offset: | |||
x: 0 | |||
y: 0 | |||
# Thin stroke font rendering (macOS only) | |||
# | |||
# Thin strokes are suitable for retina displays, but for non-retina screens | |||
# it is recommended to set `use_thin_strokes` to `false` | |||
# | |||
# macOS >= 10.14.x: | |||
# | |||
# If the font quality on non-retina display looks bad then set | |||
# `use_thin_strokes` to `true` and enable font smoothing by running the | |||
# following command: | |||
# `defaults write -g CGFontRenderingFontSmoothingDisabled -bool NO` | |||
# | |||
# This is a global setting and will require a log out or restart to take | |||
# effect. | |||
use_thin_strokes: true | |||
# Display the time it takes to redraw each frame. | |||
render_timer: false | |||
# Keep the log file after quitting Alacritty. | |||
persistent_logging: false | |||
# If `true`, bold text is drawn using the bright color variants. | |||
draw_bold_text_with_bright_colors: true | |||
# Colors (Blood Moon) | |||
colors: | |||
# Default colors | |||
primary: | |||
background: '0x10100E' | |||
foreground: '0xC6C6C4' | |||
# Normal colors | |||
normal: | |||
black: '0x10100E' | |||
red: '0xC40233' | |||
green: '0x009F6B' | |||
yellow: '0xFFD700' | |||
blue: '0x0087BD' | |||
magenta: '0x9A4EAE' | |||
cyan: '0x20B2AA' | |||
white: '0xC6C6C4' | |||
# Bright colors | |||
bright: | |||
black: '0x696969' | |||
red: '0xFF2400' | |||
green: '0x03C03C' | |||
yellow: '0xFDFF00' | |||
blue: '0x007FFF' | |||
magenta: '0xFF1493' | |||
cyan: '0x00CCCC' | |||
white: '0xFFFAFA' | |||
# Visual Bell | |||
# | |||
# Any time the BEL code is received, Alacritty "rings" the visual bell. Once | |||
# rung, the terminal background will be set to white and transition back to the | |||
# default background color. You can control the rate of this transition by | |||
# setting the `duration` property (represented in milliseconds). You can also | |||
# configure the transition function by setting the `animation` property. | |||
# | |||
# Values for `animation`: | |||
# - Ease | |||
# - EaseOut | |||
# - EaseOutSine | |||
# - EaseOutQuad | |||
# - EaseOutCubic | |||
# - EaseOutQuart | |||
# - EaseOutQuint | |||
# - EaseOutExpo | |||
# - EaseOutCirc | |||
# - Linear | |||
# | |||
# Specifying a `duration` of `0` will disable the visual bell. | |||
visual_bell: | |||
animation: EaseOutExpo | |||
duration: 150 | |||
color: '0x350000' | |||
# Background opacity | |||
# | |||
# Window opacity as a floating point number from `0.0` to `1.0`. | |||
# The value `0.0` is completely transparent and `1.0` is opaque. | |||
background_opacity: 1.0 | |||
# Mouse bindings | |||
# | |||
# Available fields: | |||
# - mouse | |||
# - action | |||
# - mods (optional) | |||
# | |||
# Values for `mouse`: | |||
# - Middle | |||
# - Left | |||
# - Right | |||
# - Numeric identifier such as `5` | |||
# | |||
# All available `mods` and `action` values are documented in the key binding | |||
# section. | |||
mouse_bindings: | |||
- { mouse: Middle, action: PasteSelection } | |||
mouse: | |||
# Click settings | |||
# | |||
# The `double_click` and `triple_click` settings control the time | |||
# alacritty should wait for accepting multiple clicks as one double | |||
# or triple click. | |||
double_click: { threshold: 300 } | |||
triple_click: { threshold: 300 } | |||
# If this is `true`, the cursor is temporarily hidden when typing. | |||
hide_when_typing: false | |||
url: | |||
# URL launcher | |||
# | |||
# This program is executed when clicking on a text which is recognized as a URL. | |||
# The URL is always added to the command as the last parameter. | |||
# | |||
# When set to `None`, URL launching will be disabled completely. | |||
# | |||
# Default: | |||
# - (macOS) open | |||
# - (Linux) xdg-open | |||
# - (Windows) explorer | |||
#launcher: xdg-open | |||
# URL modifiers | |||
# | |||
# These are the modifiers that need to be held down for opening URLs when clicking | |||
# on them. The available modifiers are documented in the key binding section. | |||
modifiers: None | |||
selection: | |||
semantic_escape_chars: ",│`|:\"' ()[]{}<>" | |||
# When set to `true`, selected text will be copied to the primary clipboard. | |||
save_to_clipboard: false | |||
# Allow terminal applications to change Alacritty's window title. | |||
dynamic_title: true | |||
cursor: | |||
# Cursor style | |||
# | |||
# Values for `style`: | |||
# - ▇ Block | |||
# - _ Underline | |||
# - | Beam | |||
style: Block | |||
# If this is `true`, the cursor will be rendered as a hollow box when the | |||
# window is not focused. | |||
unfocused_hollow: true | |||
# Live config reload (changes require restart) | |||
live_config_reload: true | |||
# Shell | |||
# | |||
# You can set `shell.program` to the path of your favorite shell, e.g. `/bin/fish`. | |||
# Entries in `shell.args` are passed unmodified as arguments to the shell. | |||
# | |||
# Default: | |||
# - (Linux/macOS) /bin/bash --login | |||
# - (Windows) powershell | |||
#shell: | |||
# program: /bin/bash | |||
# args: | |||
# - --login | |||
# Windows 10 ConPTY backend (Windows only) | |||
# | |||
# This will enable better color support and may resolve other issues, | |||
# however this API and its implementation is still young and so is | |||
# disabled by default, as stability may not be as good as the winpty | |||
# backend. | |||
# | |||
# Alacritty will fall back to the WinPTY automatically if the ConPTY | |||
# backend cannot be initialized. | |||
enable_experimental_conpty_backend: false | |||
# Send ESC (\x1b) before characters when alt is pressed. | |||
alt_send_esc: true | |||
# Key bindings | |||
# | |||
# Key bindings are specified as a list of objects. Each binding will specify a | |||
# key and modifiers required to trigger it, terminal modes where the binding is | |||
# applicable, and what should be done when the key binding fires. It can either | |||
# send a byte sequence to the running application (`chars`), execute a | |||
# predefined action (`action`) or fork and execute a specified command plus | |||
# arguments (`command`). | |||
# | |||
# Bindings are always filled by default, but will be replaced when a new binding | |||
# with the same triggers is defined. To unset a default binding, it can be | |||
# mapped to the `None` action. | |||
# | |||
# Example: | |||
# `- { key: V, mods: Control|Shift, action: Paste }` | |||
# | |||
# Available fields: | |||
# - key | |||
# - mods (optional) | |||
# - chars | action | command (exactly one required) | |||
# - mode (optional) | |||
# | |||
# Values for `key`: | |||
# - `A` -> `Z` | |||
# - `F1` -> `F12` | |||
# - `Key1` -> `Key0` | |||
# | |||
# A full list with available key codes can be found here: | |||
# https://docs.rs/glutin/*/glutin/enum.VirtualKeyCode.html#variants | |||
# | |||
# Instead of using the name of the keys, the `key` field also supports using | |||
# the scancode of the desired key. Scancodes have to be specified as a | |||
# decimal number. | |||
# This command will allow you to display the hex scancodes for certain keys: | |||
# `showkey --scancodes` | |||
# | |||
# Values for `mods`: | |||
# - Command | |||
# - Control | |||
# - Super | |||
# - Shift | |||
# - Alt | |||
# | |||
# Multiple `mods` can be combined using `|` like this: `mods: Control|Shift`. | |||
# Whitespace and capitalization is relevant and must match the example. | |||
# | |||
# Values for `chars`: | |||
# The `chars` field writes the specified string to the terminal. This makes | |||
# it possible to pass escape sequences. | |||
# To find escape codes for bindings like `PageUp` ("\x1b[5~"), you can run | |||
# the command `showkey -a` outside of tmux. | |||
# Note that applications use terminfo to map escape sequences back to | |||
# keys. It is therefore required to update the terminfo when | |||
# changing an escape sequence. | |||
# | |||
# Values for `action`: | |||
# - Paste | |||
# - PasteSelection | |||
# - Copy | |||
# - IncreaseFontSize | |||
# - DecreaseFontSize | |||
# - ResetFontSize | |||
# - ScrollPageUp | |||
# - ScrollPageDown | |||
# - ScrollToTop | |||
# - ScrollToBottom | |||
# - ClearHistory | |||
# - Hide | |||
# - Quit | |||
# - ClearLogNotice | |||
# - SpawnNewInstance | |||
# - None | |||
# | |||
# Values for `command`: | |||
# The `command` field must be a map containing a `program` string and | |||
# an `args` array of command line parameter strings. | |||
# | |||
# Example: | |||
# `command: { program: "alacritty", args: ["-e", "vttest"] }` | |||
# | |||
# Values for `mode`: | |||
# - ~AppCursor | |||
# - AppCursor | |||
# - ~AppKeypad | |||
# - AppKeypad | |||
key_bindings: | |||
# (Windows/Linux only) | |||
#- { key: V, mods: Control|Shift, action: Paste } | |||
- { key: C, mods: Control|Shift, action: Copy } | |||
#- { key: Insert, mods: Shift, action: PasteSelection } | |||
#- { key: Key0, mods: Control, action: ResetFontSize } | |||
#- { key: Equals, mods: Control, action: IncreaseFontSize } | |||
#- { key: Subtract, mods: Control, action: DecreaseFontSize } | |||
# (macOS only) | |||
#- { key: Key0, mods: Command, action: ResetFontSize } | |||
#- { key: Equals, mods: Command, action: IncreaseFontSize } | |||
#- { key: Minus, mods: Command, action: DecreaseFontSize } | |||
#- { key: K, mods: Command, action: ClearHistory } | |||
#- { key: K, mods: Command, chars: "\x0c" } | |||
#- { key: V, mods: Command, action: Paste } | |||
#- { key: C, mods: Command, action: Copy } | |||
#- { key: H, mods: Command, action: Hide } | |||
#- { key: Q, mods: Command, action: Quit } | |||
#- { key: W, mods: Command, action: Quit } | |||
- { key: Paste, action: Paste } | |||
- { key: Copy, action: Copy } | |||
- { key: L, mods: Control, action: ClearLogNotice } | |||
- { key: L, mods: Control, chars: "\x0c" } | |||
- { key: Home, chars: "\x1bOH", mode: AppCursor } | |||
- { key: Home, chars: "\x1b[H", mode: ~AppCursor } | |||
- { key: End, chars: "\x1bOF", mode: AppCursor } | |||
- { key: End, chars: "\x1b[F", mode: ~AppCursor } | |||
- { key: PageUp, mods: Shift, action: ScrollPageUp, mode: ~Alt } | |||
- { key: PageUp, mods: Shift, chars: "\x1b[5;2~", mode: Alt } | |||
- { key: PageUp, mods: Control, chars: "\x1b[5;5~" } | |||
- { key: PageUp, chars: "\x1b[5~" } | |||
- { key: PageDown, mods: Shift, action: ScrollPageDown, mode: ~Alt } | |||
- { key: PageDown, mods: Shift, chars: "\x1b[6;2~", mode: Alt } | |||
- { key: PageDown, mods: Control, chars: "\x1b[6;5~" } | |||
- { key: PageDown, chars: "\x1b[6~" } | |||
- { key: Tab, mods: Shift, chars: "\x1b[Z" } | |||
- { key: Back, chars: "\x7f" } | |||
- { key: Back, mods: Alt, chars: "\x1b\x7f" } | |||
- { key: Insert, chars: "\x1b[2~" } | |||
- { key: Delete, chars: "\x1b[3~" } | |||
- { key: Left, mods: Shift, chars: "\x1b[1;2D" } | |||
- { key: Left, mods: Control, chars: "\x1b[1;5D" } | |||
- { key: Left, mods: Alt, chars: "\x1b[1;3D" } | |||
- { key: Left, chars: "\x1b[D", mode: ~AppCursor } | |||
- { key: Left, chars: "\x1bOD", mode: AppCursor } | |||
- { key: Right, mods: Shift, chars: "\x1b[1;2C" } | |||
- { key: Right, mods: Control, chars: "\x1b[1;5C" } | |||
- { key: Right, mods: Alt, chars: "\x1b[1;3C" } | |||
- { key: Right, chars: "\x1b[C", mode: ~AppCursor } | |||
- { key: Right, chars: "\x1bOC", mode: AppCursor } | |||
- { key: Up, mods: Shift, chars: "\x1b[1;2A" } | |||
- { key: Up, mods: Control, chars: "\x1b[1;5A" } | |||
- { key: Up, mods: Alt, chars: "\x1b[1;3A" } | |||
- { key: Up, chars: "\x1b[A", mode: ~AppCursor } | |||
- { key: Up, chars: "\x1bOA", mode: AppCursor } | |||
- { key: Down, mods: Shift, chars: "\x1b[1;2B" } | |||
- { key: Down, mods: Control, chars: "\x1b[1;5B" } | |||
- { key: Down, mods: Alt, chars: "\x1b[1;3B" } | |||
- { key: Down, chars: "\x1b[B", mode: ~AppCursor } | |||
- { key: Down, chars: "\x1bOB", mode: AppCursor } | |||
- { key: F1, chars: "\x1bOP" } | |||
- { key: F2, chars: "\x1bOQ" } | |||
- { key: F3, chars: "\x1bOR" } | |||
- { key: F4, chars: "\x1bOS" } | |||
- { key: F5, chars: "\x1b[15~" } | |||
- { key: F6, chars: "\x1b[17~" } | |||
- { key: F7, chars: "\x1b[18~" } | |||
- { key: F8, chars: "\x1b[19~" } | |||
- { key: F9, chars: "\x1b[20~" } | |||
- { key: F10, chars: "\x1b[21~" } | |||
- { key: F11, chars: "\x1b[23~" } | |||
- { key: F12, chars: "\x1b[24~" } | |||
- { key: F1, mods: Shift, chars: "\x1b[1;2P" } | |||
- { key: F2, mods: Shift, chars: "\x1b[1;2Q" } | |||
- { key: F3, mods: Shift, chars: "\x1b[1;2R" } | |||
- { key: F4, mods: Shift, chars: "\x1b[1;2S" } | |||
- { key: F5, mods: Shift, chars: "\x1b[15;2~" } | |||
- { key: F6, mods: Shift, chars: "\x1b[17;2~" } | |||
- { key: F7, mods: Shift, chars: "\x1b[18;2~" } | |||
- { key: F8, mods: Shift, chars: "\x1b[19;2~" } | |||
- { key: F9, mods: Shift, chars: "\x1b[20;2~" } | |||
- { key: F10, mods: Shift, chars: "\x1b[21;2~" } | |||
- { key: F11, mods: Shift, chars: "\x1b[23;2~" } | |||
- { key: F12, mods: Shift, chars: "\x1b[24;2~" } | |||
- { key: F1, mods: Control, chars: "\x1b[1;5P" } | |||
- { key: F2, mods: Control, chars: "\x1b[1;5Q" } | |||
- { key: F3, mods: Control, chars: "\x1b[1;5R" } | |||
- { key: F4, mods: Control, chars: "\x1b[1;5S" } | |||
- { key: F5, mods: Control, chars: "\x1b[15;5~" } | |||
- { key: F6, mods: Control, chars: "\x1b[17;5~" } | |||
- { key: F7, mods: Control, chars: "\x1b[18;5~" } | |||
- { key: F8, mods: Control, chars: "\x1b[19;5~" } | |||
- { key: F9, mods: Control, chars: "\x1b[20;5~" } | |||
- { key: F10, mods: Control, chars: "\x1b[21;5~" } | |||
- { key: F11, mods: Control, chars: "\x1b[23;5~" } | |||
- { key: F12, mods: Control, chars: "\x1b[24;5~" } | |||
- { key: F1, mods: Alt, chars: "\x1b[1;6P" } | |||
- { key: F2, mods: Alt, chars: "\x1b[1;6Q" } | |||
- { key: F3, mods: Alt, chars: "\x1b[1;6R" } | |||
- { key: F4, mods: Alt, chars: "\x1b[1;6S" } | |||
- { key: F5, mods: Alt, chars: "\x1b[15;6~" } | |||
- { key: F6, mods: Alt, chars: "\x1b[17;6~" } | |||
- { key: F7, mods: Alt, chars: "\x1b[18;6~" } | |||
- { key: F8, mods: Alt, chars: "\x1b[19;6~" } | |||
- { key: F9, mods: Alt, chars: "\x1b[20;6~" } | |||
- { key: F10, mods: Alt, chars: "\x1b[21;6~" } | |||
- { key: F11, mods: Alt, chars: "\x1b[23;6~" } | |||
- { key: F12, mods: Alt, chars: "\x1b[24;6~" } | |||
- { key: F1, mods: Super, chars: "\x1b[1;3P" } | |||
- { key: F2, mods: Super, chars: "\x1b[1;3Q" } | |||
- { key: F3, mods: Super, chars: "\x1b[1;3R" } | |||
- { key: F4, mods: Super, chars: "\x1b[1;3S" } | |||
- { key: F5, mods: Super, chars: "\x1b[15;3~" } | |||
- { key: F6, mods: Super, chars: "\x1b[17;3~" } | |||
- { key: F7, mods: Super, chars: "\x1b[18;3~" } | |||
- { key: F8, mods: Super, chars: "\x1b[19;3~" } | |||
- { key: F9, mods: Super, chars: "\x1b[20;3~" } | |||
- { key: F10, mods: Super, chars: "\x1b[21;3~" } | |||
- { key: F11, mods: Super, chars: "\x1b[23;3~" } | |||
- { key: F12, mods: Super, chars: "\x1b[24;3~" } | |||
- { key: NumpadEnter, chars: "\n" } |
@ -0,0 +1,18 @@ | |||
#! /bin/sh | |||
sxhkd & | |||
bspc monitor -d I II III IV V VI VII VIII IX X | |||
bspc config border_width 2 | |||
bspc config window_gap 12 | |||
bspc config split_ratio 0.52 | |||
bspc config borderless_monocle true | |||
bspc config gapless_monocle true | |||
bspc rule -a Gimp desktop='^8' state=floating follow=on | |||
bspc rule -a Chromium desktop='^2' | |||
bspc rule -a mplayer2 state=floating | |||
bspc rule -a Kupfer.py focus=on | |||
bspc rule -a Screenkey manage=off |
@ -0,0 +1,15 @@ | |||
"bar/top" = { | |||
# monitor = "\${env:MONITOR:eDP1}"; | |||
width = "100%"; | |||
height = "3%"; | |||
radius = 0; | |||
modules-center = "date"; | |||
}; | |||
"module/date" = { | |||
type = "internal/date"; | |||
internal = 5; | |||
date = "%d.%m.%y"; | |||
time = "%H:%M"; | |||
label = "%time% %date%"; | |||
}; |
@ -0,0 +1,423 @@ | |||
;========================================================== | |||
; | |||
; | |||
; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗ | |||
; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗ | |||
; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝ | |||
; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗ | |||
; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║ | |||
; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ | |||
; | |||
; | |||
; To learn more about how to configure Polybar | |||
; go to https://github.com/jaagr/polybar | |||
; | |||
; The README contains alot of information | |||
; | |||
;========================================================== | |||
[colors] | |||
;background = ${xrdb:color0:#222} | |||
background = #222 | |||
background-alt = #444 | |||
;foreground = ${xrdb:color7:#222} | |||
foreground = #dfdfdf | |||
foreground-alt = #555 | |||
primary = #ffb52a | |||
secondary = #e60053 | |||
alert = #bd2c40 | |||
[bar/example] | |||
;monitor = ${env:MONITOR:HDMI-1} | |||
width = 100% | |||
height = 27 | |||
;offset-x = 1% | |||
;offset-y = 1% | |||
radius = 6.0 | |||
fixed-center = false | |||
background = ${colors.background} | |||
foreground = ${colors.foreground} | |||
line-size = 3 | |||
line-color = #f00 | |||
border-size = 4 | |||
border-color = #00000000 | |||
padding-left = 0 | |||
padding-right = 2 | |||
module-margin-left = 1 | |||
module-margin-right = 2 | |||
font-0 = fixed:pixelsize=10;1 | |||
font-1 = unifont:fontformat=truetype:size=8:antialias=false;0 | |||
font-2 = siji:pixelsize=10;1 | |||
modules-left = bspwm | |||
modules-center = | |||
modules-right = filesystem xbacklight alsa pulseaudio xkeyboard memory cpu wlan eth battery temperature date powermenu | |||
tray-position = right | |||
tray-padding = 2 | |||
;tray-background = #0063ff | |||
;wm-restack = bspwm | |||
;wm-restack = i3 | |||
;override-redirect = true | |||
;scroll-up = bspwm-desknext | |||
;scroll-down = bspwm-deskprev | |||
;scroll-up = i3wm-wsnext | |||
;scroll-down = i3wm-wsprev | |||
cursor-click = pointer | |||
cursor-scroll = ns-resize | |||
[module/xwindow] | |||
type = internal/xwindow | |||
label = %title:0:30:...% | |||
[module/xkeyboard] | |||
type = internal/xkeyboard | |||
blacklist-0 = num lock | |||
format-prefix = " " | |||
format-prefix-foreground = ${colors.foreground-alt} | |||
format-prefix-underline = ${colors.secondary} | |||
label-layout = %layout% | |||
label-layout-underline = ${colors.secondary} | |||
label-indicator-padding = 2 | |||
label-indicator-margin = 1 | |||
label-indicator-background = ${colors.secondary} | |||
label-indicator-underline = ${colors.secondary} | |||
[module/filesystem] | |||
type = internal/fs | |||
interval = 25 | |||
mount-0 = / | |||
label-mounted = %{F#0a81f5}%mountpoint%%{F-}: %percentage_used%% | |||
label-unmounted = %mountpoint% not mounted | |||
label-unmounted-foreground = ${colors.foreground-alt} | |||
[module/bspwm] | |||
type = internal/bspwm | |||
label-focused = %index% | |||
label-focused-background = ${colors.background-alt} | |||
label-focused-underline= ${colors.primary} | |||
label-focused-padding = 2 | |||
label-occupied = %index% | |||
label-occupied-padding = 2 | |||
label-urgent = %index%! | |||
label-urgent-background = ${colors.alert} | |||
label-urgent-padding = 2 | |||
label-empty = %index% | |||
label-empty-foreground = ${colors.foreground-alt} | |||
label-empty-padding = 2 | |||
; Separator in between workspaces | |||
; label-separator = | | |||
[module/i3] | |||
type = internal/i3 | |||
format = <label-state> <label-mode> | |||
index-sort = true | |||
wrapping-scroll = false | |||
; Only show workspaces on the same output as the bar | |||
;pin-workspaces = true | |||
label-mode-padding = 2 | |||
label-mode-foreground = #000 | |||
label-mode-background = ${colors.primary} | |||
; focused = Active workspace on focused monitor | |||
label-focused = %index% | |||
label-focused-background = ${module/bspwm.label-focused-background} | |||
label-focused-underline = ${module/bspwm.label-focused-underline} | |||
label-focused-padding = ${module/bspwm.label-focused-padding} | |||
; unfocused = Inactive workspace on any monitor | |||
label-unfocused = %index% | |||
label-unfocused-padding = ${module/bspwm.label-occupied-padding} | |||
; visible = Active workspace on unfocused monitor | |||
label-visible = %index% | |||
label-visible-background = ${self.label-focused-background} | |||
label-visible-underline = ${self.label-focused-underline} | |||
label-visible-padding = ${self.label-focused-padding} | |||
; urgent = Workspace with urgency hint set | |||
label-urgent = %index% | |||
label-urgent-background = ${module/bspwm.label-urgent-background} | |||
label-urgent-padding = ${module/bspwm.label-urgent-padding} | |||
; Separator in between workspaces | |||
; label-separator = | | |||
[module/mpd] | |||
type = internal/mpd | |||
format-online = <label-song> <icon-prev> <icon-stop> <toggle> <icon-next> | |||
icon-prev = | |||
icon-stop = | |||
icon-play = | |||
icon-pause = | |||
icon-next = | |||
label-song-maxlen = 25 | |||
label-song-ellipsis = true | |||
[module/xbacklight] | |||
type = internal/xbacklight | |||
format = <label> <bar> | |||
label = BL | |||
bar-width = 10 | |||
bar-indicator = | | |||
bar-indicator-foreground = #fff | |||
bar-indicator-font = 2 | |||
bar-fill = ─ | |||
bar-fill-font = 2 | |||
bar-fill-foreground = #9f78e1 | |||
bar-empty = ─ | |||
bar-empty-font = 2 | |||
bar-empty-foreground = ${colors.foreground-alt} | |||
[module/backlight-acpi] | |||
inherit = module/xbacklight | |||
type = internal/backlight | |||
card = intel_backlight | |||
[module/cpu] | |||
type = internal/cpu | |||
interval = 2 | |||
format-prefix = " " | |||
format-prefix-foreground = ${colors.foreground-alt} | |||
format-underline = #f90000 | |||
label = %percentage:2%% | |||
[module/memory] | |||
type = internal/memory | |||
interval = 2 | |||
format-prefix = " " | |||
format-prefix-foreground = ${colors.foreground-alt} | |||
format-underline = #4bffdc | |||
label = %percentage_used%% | |||
[module/wlan] | |||
type = internal/network | |||
interface = wlp6s0 | |||
interval = 3.0 | |||
format-connected = <ramp-signal> <label-connected> | |||
format-connected-underline = #9f78e1 | |||
label-connected = %essid% | |||
format-disconnected = | |||
;format-disconnected = <label-disconnected> | |||
;format-disconnected-underline = ${self.format-connected-underline} | |||
;label-disconnected = %ifname% disconnected | |||
;label-disconnected-foreground = ${colors.foreground-alt} | |||
ramp-signal-0 = | |||
ramp-signal-1 = | |||
ramp-signal-2 = | |||
ramp-signal-3 = | |||
ramp-signal-4 = | |||
ramp-signal-foreground = ${colors.foreground-alt} | |||
[module/eth] | |||
type = internal/network | |||
interface = enp7s0 | |||
interval = 3.0 | |||
format-connected-underline = #55aa55 | |||
format-connected-prefix = " " | |||
format-connected-prefix-foreground = ${colors.foreground-alt} | |||
label-connected = %local_ip% | |||
format-disconnected = | |||
;format-disconnected = <label-disconnected> | |||
;format-disconnected-underline = ${self.format-connected-underline} | |||
;label-disconnected = %ifname% disconnected | |||
;label-disconnected-foreground = ${colors.foreground-alt} | |||
[module/date] | |||
type = internal/date | |||
interval = 5 | |||
date = | |||
date-alt = " %Y-%m-%d" | |||
time = %H:%M | |||
time-alt = %H:%M:%S | |||
format-prefix = | |||
format-prefix-foreground = ${colors.foreground-alt} | |||
format-underline = #0a6cf5 | |||
label = %date% %time% | |||
[module/pulseaudio] | |||
type = internal/pulseaudio | |||
format-volume = <label-volume> <bar-volume> | |||
label-volume = VOL %percentage%% | |||
label-volume-foreground = ${root.foreground} | |||
label-muted = 🔇 muted | |||
label-muted-foreground = #666 | |||
bar-volume-width = 10 | |||
bar-volume-foreground-0 = #55aa55 | |||
bar-volume-foreground-1 = #55aa55 | |||
bar-volume-foreground-2 = #55aa55 | |||
bar-volume-foreground-3 = #55aa55 | |||
bar-volume-foreground-4 = #55aa55 | |||
bar-volume-foreground-5 = #f5a70a | |||
bar-volume-foreground-6 = #ff5555 | |||
bar-volume-gradient = false | |||
bar-volume-indicator = | | |||
bar-volume-indicator-font = 2 | |||
bar-volume-fill = ─ | |||
bar-volume-fill-font = 2 | |||
bar-volume-empty = ─ | |||
bar-volume-empty-font = 2 | |||
bar-volume-empty-foreground = ${colors.foreground-alt} | |||
[module/alsa] | |||
type = internal/alsa | |||
format-volume = <label-volume> <bar-volume> | |||
label-volume = VOL | |||
label-volume-foreground = ${root.foreground} | |||
format-muted-prefix = " " | |||
format-muted-foreground = ${colors.foreground-alt} | |||
label-muted = sound muted | |||
bar-volume-width = 10 | |||
bar-volume-foreground-0 = #55aa55 | |||
bar-volume-foreground-1 = #55aa55 | |||
bar-volume-foreground-2 = #55aa55 | |||
bar-volume-foreground-3 = #55aa55 | |||
bar-volume-foreground-4 = #55aa55 | |||
bar-volume-foreground-5 = #f5a70a | |||
bar-volume-foreground-6 = #ff5555 | |||
bar-volume-gradient = false | |||
bar-volume-indicator = | | |||
bar-volume-indicator-font = 2 | |||
bar-volume-fill = ─ | |||
bar-volume-fill-font = 2 | |||
bar-volume-empty = ─ | |||
bar-volume-empty-font = 2 | |||
bar-volume-empty-foreground = ${colors.foreground-alt} | |||
[module/battery] | |||
type = internal/battery | |||
battery = BAT1 | |||
adapter = ACAD | |||
full-at = 98 | |||
format-charging = <animation-charging> <label-charging> | |||
format-charging-underline = #ffb52a | |||
format-discharging = <animation-discharging> <label-discharging> | |||
format-discharging-underline = ${self.format-charging-underline} | |||
format-full-prefix = " " | |||
format-full-prefix-foreground = ${colors.foreground-alt} | |||
format-full-underline = ${self.format-charging-underline} | |||
ramp-capacity-0 = | |||
ramp-capacity-1 = | |||
ramp-capacity-2 = | |||
ramp-capacity-foreground = ${colors.foreground-alt} | |||
animation-charging-0 = | |||
animation-charging-1 = | |||
animation-charging-2 = | |||
animation-charging-foreground = ${colors.foreground-alt} | |||
animation-charging-framerate = 750 | |||
animation-discharging-0 = | |||
animation-discharging-1 = | |||
animation-discharging-2 = | |||
animation-discharging-foreground = ${colors.foreground-alt} | |||
animation-discharging-framerate = 750 | |||
[module/temperature] | |||
type = internal/temperature | |||
thermal-zone = 0 | |||
warn-temperature = 60 | |||
format = <ramp> <label> | |||
format-underline = #f50a4d | |||
format-warn = <ramp> <label-warn> | |||
format-warn-underline = ${self.format-underline} | |||
label = %temperature-c% | |||
label-warn = %temperature-c% | |||
label-warn-foreground = ${colors.secondary} | |||
ramp-0 = | |||
ramp-1 = | |||
ramp-2 = | |||
ramp-foreground = ${colors.foreground-alt} | |||
[module/powermenu] | |||
type = custom/menu | |||
expand-right = true | |||
format-spacing = 1 | |||
label-open = | |||
label-open-foreground = ${colors.secondary} | |||
label-close = cancel | |||
label-close-foreground = ${colors.secondary} | |||
label-separator = | | |||
label-separator-foreground = ${colors.foreground-alt} | |||
menu-0-0 = reboot | |||
menu-0-0-exec = menu-open-1 | |||
menu-0-1 = power off | |||
menu-0-1-exec = menu-open-2 | |||
menu-1-0 = cancel | |||
menu-1-0-exec = menu-open-0 | |||
menu-1-1 = reboot | |||
menu-1-1-exec = sudo reboot | |||
menu-2-0 = power off | |||
menu-2-0-exec = sudo poweroff | |||
menu-2-1 = cancel | |||
menu-2-1-exec = menu-open-0 | |||
[settings] | |||
screenchange-reload = true | |||
;compositing-background = xor | |||
;compositing-background = screen | |||
;compositing-foreground = source | |||
;compositing-border = over | |||
;pseudo-transparency = false | |||
[global/wm] | |||
margin-top = 5 | |||
margin-bottom = 5 | |||
; vim:ft=dosini |
@ -0,0 +1,55 @@ | |||
XF86Audio{Lower,Raise}Volume | |||
amixer -c 0 set PCM 10{-,+} | |||
XF86AudioMute | |||
amixer set PCM 0% | |||
XF86Audio{Prev,Next,Play,Stop} | |||
mpc {prev,next,toggle,stop} | |||
super + Return | |||
alacritty | |||
super + space | |||
rofi -mode window,run,ssh,drun -show drun | |||
super + Escape | |||
pkill -USR1 -x sxhkd | |||
super + alt + Escape | |||
bspc quit | |||
super + {_,shift +}q | |||
bspc node -{c,k} | |||
super + {_,shift +} f | |||
bspc node -t {fullscreen, tiled} | |||
super + g | |||
bspc node -s biggest | |||
super + {_,shift}{h,j,k,l} | |||
bspc node -{f,s} {west,south,north,east} | |||
super + {_,Shift}Tab | |||
bspc node -f {next,prev} | |||
XF86{Back,Forward} | |||
{WINDOW=left;DESKTOP=prev;,WINDOW=right;DESKTOP=next;} \ | |||
if ! bspc window -f $WINDOW; then \ | |||
bspc desktop -f $DESKTOP; \ | |||
fi | |||
super + {_,shift +}{1-9,0} | |||
bspc {desktop -f,node -d} '^{1-9,10}' | |||
{_,shift +}Menu | |||
{surf -g -N https://searx.me,zathura} | |||
super + {_,shift +} space | |||
bspc node -t {tiled, floating} | |||
super + v | |||
mpv $(xclip -o -sel clip) | |||
super + e | |||
emacs |
@ -0,0 +1 @@ | |||
exec bspwm |
@ -0,0 +1,101 @@ | |||
# If you come from bash you might have to change your $PATH. | |||
# export PATH=$HOME/bin:/usr/local/bin:$PATH | |||
# Path to your oh-my-zsh installation. | |||
export ZSH="/home/klimi/.oh-my-zsh" | |||
# Set name of the theme to load --- if set to "random", it will | |||
# load a random theme each time oh-my-zsh is loaded, in which case, | |||
# to know which specific one was loaded, run: echo $RANDOM_THEME | |||
# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes | |||
# ZSH_THEME="robbyrussell" | |||
ZSH_THEME="agnoster" | |||
# Set list of themes to pick from when loading at random | |||
# Setting this variable when ZSH_THEME=random will cause zsh to load | |||
# a theme from this variable instead of looking in ~/.oh-my-zsh/themes/ | |||
# If set to an empty array, this variable will have no effect. | |||
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" ) | |||
#gnoster" Uncomment the following line to use case-sensitive completion. | |||
# CASE_SENSITIVE="true" | |||
# Uncomment the following line to use hyphen-insensitive completion. | |||
# Case-sensitive completion must be off. _ and - will be interchangeable. | |||
# HYPHEN_INSENSITIVE="true" | |||
# Uncomment the following line to disable bi-weekly auto-update checks. | |||
# DISABLE_AUTO_UPDATE="true" | |||
# Uncomment the following line to change how often to auto-update (in days). | |||
# export UPDATE_ZSH_DAYS=13 | |||
# Uncomment the following line to disable colors in ls. | |||
# DISABLE_LS_COLORS="true" | |||
# Uncomment the following line to disable auto-setting terminal title. | |||
# DISABLE_AUTO_TITLE="true" | |||
# Uncomment the following line to enable command auto-correction. | |||
# ENABLE_CORRECTION="true" | |||
# Uncomment the following line to display red dots whilst waiting for completion. | |||
COMPLETION_WAITING_DOTS="true" | |||
# Uncomment the following line if you want to disable marking untracked files | |||
# under VCS as dirty. This makes repository status check for large repositories | |||
# much, much faster. | |||
# DISABLE_UNTRACKED_FILES_DIRTY="true" | |||
# Uncomment the following line if you want to change the command execution time | |||
# stamp shown in the history command output. | |||
# You can set one of the optional three formats: | |||
# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" | |||
# or set a custom format using the strftime function format specifications, | |||
# see 'man strftime' for details. | |||
# HIST_STAMPS="mm/dd/yyyy" | |||
# Would you like to use another custom folder than $ZSH/custom? | |||
# ZSH_CUSTOM=/path/to/new-custom-folder | |||
# Which plugins would you like to load? | |||
# Standard plugins can be found in ~/.oh-my-zsh/plugins/* | |||
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ | |||
# Example format: plugins=(rails git textmate ruby lighthouse) | |||
# Add wisely, as too many plugins slow down shell startup. | |||
plugins=(git) | |||
source $ZSH/oh-my-zsh.sh | |||
# User configuration | |||
# export MANPATH="/usr/local/man:$MANPATH" | |||
# You may need to manually set your language environment | |||
export LANG=en_GB.UTF-8 | |||
# Preferred editor for local and remote sessions | |||
# if [[ -n $SSH_CONNECTION ]]; then | |||
# export EDITOR='vim' | |||
# else | |||
# export EDITOR='mvim' | |||
# fi | |||
# Compilation flags | |||
# export ARCHFLAGS="-arch x86_64" | |||
# Set personal aliases, overriding those provided by oh-my-zsh libs, | |||
# plugins, and themes. Aliases can be placed here, though oh-my-zsh | |||
# users are encouraged to define aliases within the ZSH_CUSTOM folder. | |||
# For a full list of active aliases, run `alias`. | |||
# | |||
# Example aliases | |||
# alias zshconfig="mate ~/.zshrc" | |||
# alias ohmyzsh="mate ~/.oh-my-zsh" | |||
alias t="todo.sh " | |||
alias td="todo.sh do " | |||
alias tl="todo.sh list" | |||
alias iotop="sudo iotop" | |||
alias iftop="sudo iftop" | |||
alias nethogs="sudo nethogs" | |||
alias iftopw="sudo iftop -i wlp6s0" |
@ -0,0 +1,257 @@ | |||
[global] | |||
font = Iosevka Term 11 | |||
# Allow a small subset of html markup: | |||
# <b>bold</b> | |||
# <i>italic</i> | |||
# <s>strikethrough</s> | |||
# <u>underline</u> | |||
# | |||
# For a complete reference see | |||
# <http://developer.gnome.org/pango/stable/PangoMarkupFormat.html>. | |||
# If markup is not allowed, those tags will be stripped out of the | |||
# message. | |||
markup = yes | |||
plain_text = no | |||
# The format of the message. Possible variables are: | |||
# %a appname | |||
# %s summary | |||
# %b body | |||
# %i iconname (including its path) | |||
# %I iconname (without its path) | |||
# %p progress value if set ([ 0%] to [100%]) or nothing | |||
# Markup is allowed | |||
format = "<b>%s</b>\n%b" | |||
# Sort messages by urgency. | |||
sort = no | |||
# Show how many messages are currently hidden (because of geometry). | |||
indicate_hidden = yes | |||
# Alignment of message text. | |||
# Possible values are "left", "center" and "right". | |||
alignment = center | |||
# The frequency with wich text that is longer than the notification | |||
# window allows bounces back and forth. | |||
# This option conflicts with "word_wrap". | |||
# Set to 0 to disable. | |||
bounce_freq = 0 | |||
# Show age of message if message is older than show_age_threshold | |||
# seconds. | |||
# Set to -1 to disable. | |||
show_age_threshold = -1 | |||
# Split notifications into multiple lines if they don't fit into | |||
# geometry. | |||
word_wrap = yes | |||
# Ignore newlines '\n' in notifications. | |||
ignore_newline = no | |||
# Hide duplicate's count and stack them | |||
stack_duplicates = yes | |||
hide_duplicates_count = yes | |||
# The geometry of the window: | |||
# [{width}]x{height}[+/-{x}+/-{y}] | |||
# The geometry of the message window. | |||
# The height is measured in number of notifications everything else | |||
# in pixels. If the width is omitted but the height is given | |||
# ("-geometry x2"), the message window expands over the whole screen | |||
# (dmenu-like). If width is 0, the window expands to the longest | |||
# message displayed. A positive x is measured from the left, a | |||
# negative from the right side of the screen. Y is measured from | |||
# the top and down respectevly. | |||
# The width can be negative. In this case the actual width is the | |||
# screen width minus the width defined in within the geometry option. | |||
#geometry = "250x50-40+40" | |||
geometry = "300x50-15+49" | |||
# Shrink window if it's smaller than the width. Will be ignored if | |||
# width is 0. | |||
shrink = no | |||
# The transparency of the window. Range: [0; 100]. | |||
# This option will only work if a compositing windowmanager is | |||
# present (e.g. xcompmgr, compiz, etc.). | |||
transparency = 5 | |||
# Don't remove messages, if the user is idle (no mouse or keyboard input) | |||
# for longer than idle_threshold seconds. | |||
# Set to 0 to disable. | |||
idle_threshold = 0 | |||
# Which monitor should the notifications be displayed on. | |||
monitor = 0 | |||
# Display notification on focused monitor. Possible modes are: | |||
# mouse: follow mouse pointer | |||
# keyboard: follow window with keyboard focus | |||
# none: don't follow anything | |||
# | |||
# "keyboard" needs a windowmanager that exports the | |||
# _NET_ACTIVE_WINDOW property. | |||
# This should be the case for almost all modern windowmanagers. | |||
# | |||
# If this option is set to mouse or keyboard, the monitor option | |||
# will be ignored. | |||
follow = none | |||
# Should a notification popped up from history be sticky or timeout | |||
# as if it would normally do. | |||
sticky_history = yes | |||
# Maximum amount of notifications kept in history | |||
history_length = 15 | |||
# Display indicators for URLs (U) and actions (A). | |||
show_indicators = no | |||
# The height of a single line. If the height is smaller than the | |||
# font height, it will get raised to the font height. | |||
# This adds empty space above and under the text. | |||
line_height = 3 | |||
# Draw a line of "separatpr_height" pixel height between two | |||
# notifications. | |||
# Set to 0 to disable. | |||
separator_height = 2 | |||
# Padding between text and separator. | |||
padding = 6 | |||
# Horizontal padding. | |||
horizontal_padding = 6 | |||
# Define a color for the separator. | |||
# possible values are: | |||
# * auto: dunst tries to find a color fitting to the background; | |||
# * foreground: use the same color as the foreground; | |||
# * frame: use the same color as the frame; | |||
# * anything else will be interpreted as a X color. | |||
separator_color = frame | |||
# Print a notification on startup. | |||
# This is mainly for error detection, since dbus (re-)starts dunst | |||
# automatically after a crash. | |||
startup_notification = false | |||
# dmenu path. | |||
dmenu = /usr/bin/dmenu -p dunst: | |||
# Browser for opening urls in context menu. | |||
browser = /usr/bin/firefox -new-tab | |||
# Align icons left/right/off | |||
icon_position = off | |||
max_icon_size = 80 | |||
# Paths to default icons. | |||
icon_path = /usr/share/icons/Paper/16x16/mimetypes/:/usr/share/icons/Paper/48x48/status/:/usr/share/icons/Paper/16x16/devices/:/usr/share/icons/Paper/48x48/notifications/:/usr/share/icons/Paper/48x48/emblems/ | |||
frame_width = 3 | |||
frame_color = "#8EC07C" | |||
[shortcuts] | |||
# Shortcuts are specified as [modifier+][modifier+]...key | |||
# Available modifiers are "ctrl", "mod1" (the alt-key), "mod2", | |||
# "mod3" and "mod4" (windows-key). | |||
# Xev might be helpful to find names for keys. | |||
# Close notification. | |||
close = ctrl+space | |||
# Close all notifications. | |||
close_all = ctrl+shift+space | |||
# Redisplay last message(s). | |||
# On the US keyboard layout "grave" is normally above TAB and left | |||
# of "1". | |||
history = ctrl+grave | |||
# Context menu. | |||
context = ctrl+shift+period | |||
[urgency_low] | |||
# IMPORTANT: colors have to be defined in quotation marks. | |||
# Otherwise the "#" and following would be interpreted as a comment. | |||
frame_color = "#3B7C87" | |||
foreground = "#3B7C87" | |||
background = "#191311" | |||
#background = "#2B313C" | |||
timeout = 4 | |||
[urgency_normal] | |||
frame_color = "#5B8234" | |||
foreground = "#5B8234" | |||
background = "#191311" | |||
#background = "#2B313C" | |||
timeout = 6 | |||
[urgency_critical] | |||
frame_color = "#B7472A" | |||
foreground = "#B7472A" | |||
background = "#191311" | |||
#background = "#2B313C" | |||
timeout = 8 | |||
# Every section that isn't one of the above is interpreted as a rules to | |||
# override settings for certain messages. | |||
# Messages can be matched by "appname", "summary", "body", "icon", "category", | |||
# "msg_urgency" and you can override the "timeout", "urgency", "foreground", | |||
# "background", "new_icon" and "format". | |||
# Shell-like globbing will get expanded. | |||
# | |||
# SCRIPTING | |||
# You can specify a script that gets run when the rule matches by | |||
# setting the "script" option. | |||
# The script will be called as follows: | |||
# script appname summary body icon urgency | |||
# where urgency can be "LOW", "NORMAL" or "CRITICAL". | |||
# | |||
# NOTE: if you don't want a notification to be displayed, set the format | |||
# to "". | |||
# NOTE: It might be helpful to run dunst -print in a terminal in order | |||
# to find fitting options for rules. | |||
#[espeak] | |||
# summary = "*" | |||
# script = dunst_espeak.sh | |||
#[script-test] | |||
# summary = "*script*" | |||
# script = dunst_test.sh | |||
#[ignore] | |||
# # This notification will not be displayed | |||
# summary = "foobar" | |||
# format = "" | |||
#[signed_on] | |||
# appname = Pidgin | |||
# summary = "*signed on*" | |||
# urgency = low | |||
# | |||
#[signed_off] | |||
# appname = Pidgin | |||
# summary = *signed off* | |||
# urgency = low | |||
# | |||
#[says] | |||
# appname = Pidgin | |||
# summary = *says* | |||
# urgency = critical | |||
# | |||
#[twitter] | |||
# appname = Pidgin | |||
# summary = *twitter.com* | |||
# urgency = normal | |||
# | |||
# vim: ft=cfg |
@ -0,0 +1,265 @@ | |||
[global] | |||
#font = Gohu GohuFont 14 | |||
font = Iosevka Term 11 | |||
# Allow a small subset of html markup: | |||
# <b>bold</b> | |||
# <i>italic</i> | |||
# <s>strikethrough</s> | |||
# <u>underline</u> | |||
# | |||
# For a complete reference see | |||
# <http://developer.gnome.org/pango/stable/PangoMarkupFormat.html>. | |||
# If markup is not allowed, those tags will be stripped out of the | |||
# message. | |||
allow_markup = yes | |||
# The format of the message. Possible variables are: | |||
# %a appname | |||
# %s summary | |||
# %b body | |||
# %i iconname (including its path) | |||
# %I iconname (without its path) | |||
# %p progress value if set ([ 0%] to [100%]) or nothing | |||
# Markup is allowed | |||
format = "<b>%s</b>\n%b" | |||
# Sort messages by urgency. | |||
sort = yes | |||
# Show how many messages are currently hidden (because of geometry). | |||
indicate_hidden = yes | |||
# Alignment of message text. | |||
# Possible values are "left", "center" and "right". | |||
alignment = left | |||
# The frequency with wich text that is longer than the notification | |||
# window allows bounces back and forth. | |||
# This option conflicts with "word_wrap". | |||
# Set to 0 to disable. | |||
bounce_freq = 0 | |||
# Show age of message if message is older than show_age_threshold | |||
# seconds. | |||
# Set to -1 to disable. | |||
show_age_threshold = 60 | |||
# Split notifications into multiple lines if they don't fit into | |||
# geometry. | |||
word_wrap = yes | |||
# Ignore newlines '\n' in notifications. | |||
ignore_newline = no | |||
# The geometry of the window: | |||
# [{width}]x{height}[+/-{x}+/-{y}] | |||
# The geometry of the message window. | |||
# The height is measured in number of notifications everything else | |||
# in pixels. If the width is omitted but the height is given | |||
# ("-geometry x2"), the message window expands over the whole screen | |||
# (dmenu-like). If width is 0, the window expands to the longest | |||
# message displayed. A positive x is measured from the left, a | |||
# negative from the right side of the screen. Y is measured from | |||
# the top and down respectevly. | |||
# The width can be negative. In this case the actual width is the | |||
# screen width minus the width defined in within the geometry option. | |||
geometry = "300x5-32+64" | |||
# x = gaps inner value, y = i3 bar height + gaps inner value | |||
# Shrink window if it's smaller than the width. Will be ignored if | |||
# width is 0. | |||
shrink = no | |||
# The transparency of the window. Range: [0; 100]. | |||
# This option will only work if a compositing windowmanager is | |||
# present (e.g. xcompmgr, compiz, etc.). | |||
transparency = 3 | |||
# Don't remove messages, if the user is idle (no mouse or keyboard input) | |||
# for longer than idle_threshold seconds. | |||
# Set to 0 to disable. | |||
idle_threshold = 120 | |||
# Which monitor should the notifications be displayed on. | |||
monitor = 0 | |||
# Display notification on focused monitor. Possible modes are: | |||
# mouse: follow mouse pointer | |||
# keyboard: follow window with keyboard focus | |||
# none: don't follow anything | |||
# | |||
# "keyboard" needs a windowmanager that exports the | |||
# _NET_ACTIVE_WINDOW property. | |||
# This should be the case for almost all modern windowmanagers. | |||
# | |||
# If this option is set to mouse or keyboard, the monitor option | |||
# will be ignored. | |||
follow = none | |||
# Should a notification popped up from history be sticky or timeout | |||
# as if it would normally do. | |||
sticky_history = yes | |||
# Maximum amount of notifications kept in history | |||
history_length = 20 | |||
# Display indicators for URLs (U) and actions (A). | |||
show_indicators = yes | |||
# The height of a single line. If the height is smaller than the | |||
# font height, it will get raised to the font height. | |||
# This adds empty space above and under the text. | |||
line_height = 0 | |||
# Draw a line of "separatpr_height" pixel height between two | |||
# notifications. | |||
# Set to 0 to disable. | |||
separator_height = 2 | |||
# Padding between text and separator. | |||
padding = 8 | |||
# Horizontal padding. | |||
horizontal_padding = 8 | |||
# Define a color for the separator. | |||
# possible values are: | |||
# * auto: dunst tries to find a color fitting to the background; | |||
# * foreground: use the same color as the foreground; | |||
# * frame: use the same color as the frame; | |||
# * anything else will be interpreted as a X color. | |||
separator_color = frame | |||
# Print a notification on startup. | |||
# This is mainly for error detection, since dbus (re-)starts dunst | |||
# automatically after a crash. | |||
startup_notification = true | |||
# dmenu path. | |||
dmenu = /usr/bin/dmenu -p dunst: | |||
# Browser for opening urls in context menu. | |||
browser = /usr/bin/inox | |||
# Align icons left/right/off | |||
icon_position = off | |||
# Paths to default icons. | |||
icon_folders = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/ | |||
[frame] | |||
width = 2 | |||
color = "#a89984" | |||
#color = "#fbf1c7" | |||
[shortcuts] | |||
# Shortcuts are specified as [modifier+][modifier+]...key | |||
# Available modifiers are "ctrl", "mod1" (the alt-key), "mod2", | |||
# "mod3" and "mod4" (windows-key). | |||
# Xev might be helpful to find names for keys. | |||
# Close notification. | |||
close = ctrl+mod1+space | |||
# Close all notifications. | |||
close_all = mod1+space | |||
# Redisplay last message(s). | |||
# On the US keyboard layout "grave" is normally above TAB and left | |||
# of "1". | |||
history = ctrl+grave | |||
# Context menu. | |||
context = ctrl+mod1+0 | |||
# Gruvbox Light {{{1 | |||
#[urgency_low] | |||
#background = "#fbf1c7" | |||
#foreground = "#3c3836" | |||
#timeout = 10 | |||
#[urgency_normal] | |||
#background = "#fbf1c7" | |||
#foreground = "#3c3836" | |||
#timeout = 10 | |||
#[urgency_critical] | |||
#background = "#9d0006" | |||
#foreground = "#fdf4c1" | |||
#timeout = 0 | |||
# }}}1 | |||
# Gruvbox Dark {{{1 | |||
[urgency_low] | |||
background = "#282828" | |||
foreground = "#bdae93" | |||
timeout = 10 | |||
[urgency_normal] | |||
background = "#282828" | |||
foreground = "#bdae93" | |||
timeout = 10 | |||
[urgency_critical] | |||
background = "#9d0006" | |||
foreground = "#ffe2e0" | |||
timeout = 0 | |||
# }}}1 | |||
# Every section that isn't one of the above is interpreted as a rules to | |||
# override settings for certain messages. | |||
# Messages can be matched by "appname", "summary", "body", "icon", "category", | |||
# "msg_urgency" and you can override the "timeout", "urgency", "foreground", | |||
# "background", "new_icon" and "format". | |||
# Shell-like globbing will get expanded. | |||
# | |||
# SCRIPTING | |||
# You can specify a script that gets run when the rule matches by | |||
# setting the "script" option. | |||
# The script will be called as follows: | |||
# script appname summary body icon urgency | |||
# where urgency can be "LOW", "NORMAL" or "CRITICAL". | |||
# | |||
# NOTE: if you don't want a notification to be displayed, set the format | |||
# to "". | |||
# NOTE: It might be helpful to run dunst -print in a terminal in order | |||
# to find fitting options for rules. | |||
#[espeak] | |||
# summary = "*" | |||
# script = dunst_espeak.sh | |||
#[script-test] | |||
# summary = "*script*" | |||
# script = dunst_test.sh | |||
#[ignore] | |||
# # This notification will not be displayed | |||
# summary = "foobar" | |||
# format = "" | |||
#[signed_on] | |||
# appname = Pidgin | |||
# summary = "*signed on*" | |||
# urgency = low | |||
# | |||
#[signed_off] | |||
# appname = Pidgin | |||
# summary = *signed off* | |||
# urgency = low | |||
# | |||
#[says] | |||
# appname = Pidgin | |||
# summary = *says* | |||
# urgency = critical | |||
# | |||
#[twitter] | |||
# appname = Pidgin | |||
# summary = *twitter.com* | |||
# urgency = normal | |||
# | |||
# vim: ft=cfg |
@ -0,0 +1,27 @@ | |||
;;; 2048-game-autoloads.el --- automatically extracted autoloads | |||
;; | |||
;;; Code: | |||
(add-to-list 'load-path (directory-file-name | |||
(or (file-name-directory #$) (car load-path)))) | |||
;;;### (autoloads nil "2048-game" "2048-game.el" (0 0 0 0)) | |||
;;; Generated autoloads from 2048-game.el | |||
(autoload '2048-game "2048-game" "\ | |||
Start playing 2048. | |||
\(fn)" t nil) | |||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "2048-game" '("2048-" "in-bounds" "*2048-"))) | |||
;;;*** | |||
;; Local Variables: | |||
;; version-control: never | |||
;; no-byte-compile: t | |||
;; no-update-autoloads: t | |||
;; coding: utf-8 | |||
;; End: | |||
;;; 2048-game-autoloads.el ends here |
@ -0,0 +1,2 @@ | |||
;;; -*- no-byte-compile: t -*- | |||
(define-package "2048-game" "20151026.1933" "play 2048 in Emacs" 'nil :commit "ea6c3bce8ac1c17dae5ac711ae4e931c0495e455" :authors '(("Zachary Kanfer" . "zkanfer@gmail.com")) :maintainer '("Zachary Kanfer" . "zkanfer@gmail.com") :url "https://bitbucket.org/zck/2048.el") |
@ -0,0 +1,538 @@ | |||
;;; 2048-game.el --- play 2048 in Emacs | |||
;; Copyright 2014 Zachary Kanfer | |||
;; Author: Zachary Kanfer <zkanfer@gmail.com> | |||
;; Version: 2014.03.27 | |||
;; Package-Version: 20151026.1933 | |||
;; URL: https://bitbucket.org/zck/2048.el | |||
;; This file is not part of GNU Emacs | |||
;; This program is free software: you can redistribute it and/or modify | |||
;; it under the terms of the GNU General Public License as published by | |||
;; the Free Software Foundation, either version 3 of the License, or | |||
;; (at your option) any later version. | |||
;; This program is distributed in the hope that it will be useful, | |||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
;; GNU General Public License for more details. | |||
;; You should have received a copy of the GNU General Public License | |||
;; along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
;;; Commentary: | |||
;; This program is an implementation of 2048 for Emacs. | |||
;; To begin playing, call `M-x 2048-game`, then use the arrow keys, | |||
;; p/n/b/f, or C-p/C-n/C-b/C-f to move the tiles around. | |||
;; Whenever you move the board, all tiles slide as far to that direction | |||
;; as they can go. If a tile collides with another tile of the same value, | |||
;; the tiles combine into a tile with double the initial value, and you | |||
;; gain the new tile's value as your score. | |||
;; The goal is to create a tile with value 2048. | |||
;; The size of the board and goal value can be customized -- see the variables | |||
;; *2048-columns*, *2048-rows*, and *2048-victory-value*. | |||
;;; Code: | |||
(define-derived-mode 2048-mode special-mode "2048-mode" | |||
(define-key 2048-mode-map (kbd "p") '2048-up) | |||
(define-key 2048-mode-map (kbd "C-p") '2048-up) | |||
(define-key 2048-mode-map (kbd "<up>") '2048-up) | |||
(define-key 2048-mode-map (kbd "n") '2048-down) | |||
(define-key 2048-mode-map (kbd "C-n") '2048-down) | |||
(define-key 2048-mode-map (kbd "<down>") '2048-down) | |||
(define-key 2048-mode-map (kbd "b") '2048-left) | |||
(define-key 2048-mode-map (kbd "C-b") '2048-left) | |||
(define-key 2048-mode-map (kbd "<left>") '2048-left) | |||
(define-key 2048-mode-map (kbd "f") '2048-right) | |||
(define-key 2048-mode-map (kbd "C-f") '2048-right) | |||
(define-key 2048-mode-map (kbd "<right>") '2048-right) | |||
(define-key 2048-mode-map (kbd "r") '2048-random-move)) | |||
;;;###autoload | |||
(defun 2048-game () "Start playing 2048." | |||
(interactive) | |||
(switch-to-buffer "2048") | |||
(buffer-disable-undo "2048") | |||
(2048-mode) | |||
(2048-init)) | |||
(require 'cl-lib) | |||
(defvar *2048-board* nil | |||
"The board itself. | |||
If a number is in the square, the number is stored. Otherwise, 0 is stored. | |||
Instead of accessing this directly, use 2048-get-cell.") | |||
(defvar *2048-combines-this-move* nil | |||
"This stores, for each cell in the board, whether the number in it was generated this turn by two numbers combining.") | |||
(defvar *2048-columns* 4 | |||
"The width of the board. It could be customized, if you wanted to make the game very very hard, or very very easy.") | |||
(defvar *2048-rows* 4 | |||
"The height of the board. It could be customized, if you wanted to make the game very very tall, or very very short.") | |||
(defvar *2048-possible-values-to-insert* (cons 4 (make-list 9 2)) | |||
"When a new element is inserted into the board, randomly choose a number from this sequence.") | |||
(defvar *2048-victory-value* nil | |||
"When this number is reached, the user wins! Yay!") | |||
(defvar *2048-default-victory-value* 2048 | |||
"When the game starts, reset *2048-victory-value* to this value.") | |||
(defvar *2048-debug* nil | |||
"When 't, print debugging information.") | |||
(defconst *2048-numbers* '(0 2 4 8 16 32 64 128 256 512 1024 2048)) | |||
(defvar *2048-score* nil | |||
"Current score in the game.") | |||
(defvar *2048-hi-tile* nil | |||
"Current highest-number tile.") | |||
(defvar *2048-history* nil | |||
"Score history in this Emacs session. Each element is (SCORE HI-TILE TIME).") | |||
(defvar *2048-history-size* 10 | |||
"Keep this many items in the history.") | |||
(defvar *2048-game-has-been-added-to-history* nil | |||
"Whether the current game has been added to the history yet. | |||
Right now, it's only for use when the game has been lost. Since the user can choose to not start a new game, we want to add the score to the history the first time the game is lost, but not any other time.") | |||
(defvar *2048-game-epoch* nil | |||
"The time the current game started.") | |||
;; These are prefixed with "twentyfortyeight-face-", not "2048-face" | |||
;; because face names starting with numbers break htmlfontify-buffer, | |||
;; as CSS classes beginning with numbers are ignored. | |||
(defface twentyfortyeight-face-2 '((t . (:background "khaki" :foreground "black"))) "Face for the tile 2" :group '2048-faces) | |||
(defface twentyfortyeight-face-4 '((t . (:background "burlywood" :foreground "black"))) "Face for the tile 4" :group '2048-faces) | |||
(defface twentyfortyeight-face-8 '((t . (:background "orange3" :foreground "black"))) "Face for the tile 8" :group '2048-faces) | |||
(defface twentyfortyeight-face-16 '((t . (:background "orange" :foreground "black"))) "Face for the tile 16" :group '2048-faces) | |||
(defface twentyfortyeight-face-32 '((t . (:background "orange red" :foreground "black"))) "Face for the tile 32" :group '2048-faces) | |||
(defface twentyfortyeight-face-64 '((t . (:background "firebrick" :foreground "white"))) "Face for the tile 64" :group '2048-faces) | |||
(defface twentyfortyeight-face-128 '((t . (:background "dark red" :foreground "white"))) "Face for the tile 128" :group '2048-faces) | |||
(defface twentyfortyeight-face-256 '((t . (:background "dark magenta" :foreground "white"))) "Face for the tile 256" :group '2048-faces) | |||
(defface twentyfortyeight-face-512 '((t . (:background "magenta" :foreground "black"))) "Face for the tile 512" :group '2048-faces) | |||
(defface twentyfortyeight-face-1024 '((t . (:background "gold" :foreground "black"))) "Face for the tile 1024" :group '2048-faces) | |||
(defface twentyfortyeight-face-2048 '((t . (:background "yellow" :foreground "black"))) "Face for the tile 2048" :group '2048-faces) | |||
(defun 2048-get-face (number) | |||
"Return the face for squares holding NUMBER." | |||
(let ((face-symbol (2048-get-face-symbol number))) | |||
(if (facep face-symbol) | |||
face-symbol | |||
'twentyfortyeight-face-2048))) | |||
(defun 2048-get-face-symbol (number) | |||
"Return the face symbol for squares holding NUMBER." | |||
(intern (concat "twentyfortyeight-face-" | |||
(int-to-string number)))) | |||
(defun 2048-empty-tile (num) | |||
"Return the tile to be inserted for the blank part of a square holding NUM. | |||
That is, an empty string with font stuff on it." | |||
(symbol-value (2048-empty-symbol num))) | |||
(defun 2048-empty-symbol (num) | |||
"Return symbol of the variable holding empty space for number NUM." | |||
(intern (concat "2048-empty-" (int-to-string num)))) | |||
(defun 2048-tile-symbol (num) | |||
"Return symbol of the variable for the tile for squares holding NUM." | |||
(intern (concat "2048-tile-" (int-to-string num)))) | |||
(defun 2048-tile (num) | |||
"Return the tile to be inserted for a square holding NUM. | |||
The tile is the string, but with extra font stuff on it." | |||
(symbol-value (2048-tile-symbol num))) | |||
(defmacro 2048-game-move (&rest body) | |||
"Perform the game move indicated by BODY. | |||
This macro is used to do some housekeeping around the move." | |||
`(progn (setq *2048-combines-this-move* (make-vector (* *2048-columns* *2048-rows*) | |||
nil)) | |||
,@body | |||
(2048-print-board) | |||
(2048-check-game-end))) | |||
(defmacro 2048-debug (&rest body) | |||
"If *2048-debug* is 't, log ,@BODY as a string to the buffer named '2048-debug'." | |||
`(when *2048-debug* | |||
(print (concat ,@body) | |||
(get-buffer-create "2048-debug")))) | |||
(defun 2048-init-tiles () | |||
"Initialize each variable 2048-empty-N and 2048-tile-N with appropriate string and face." | |||
(mapc #'2048-init-tile | |||
*2048-numbers*)) | |||
(defun 2048-init-tile (number) | |||
"Initialize the tile holding NUMBER. | |||
This sets up both the tile to hold it, and the empty space around it." | |||
(set (2048-empty-symbol number) (format "%7s" " ")) | |||
;; if constant then all faces are applied to this one constant. (Symptom: all background is yellow) | |||
;; The bytecompiler is smart enough to see that (concat...) is a constant, but not (format...) ;-) | |||
(set (2048-tile-symbol number) (format "%5s " (2048-num-to-printable number))) | |||
(when (> number 0) | |||
(let ((face (2048-get-face number))) | |||
(put-text-property 0 7 'font-lock-face face (2048-empty-tile number)) | |||
(put-text-property 0 7 'font-lock-face face (2048-tile number))))) | |||
(defun 2048-test-tiles () | |||
"Test out the tile colors." | |||
(interactive) | |||
(let ((*2048-board* | |||
(vconcat *2048-numbers* | |||
(make-vector (- (* *2048-columns* *2048-rows*) | |||
(length *2048-numbers*)) | |||
0))) | |||
(*2048-score* 123456) | |||
(*2048-history* '((123 512 "2014-06-18 12:34:56" (0 30 0 0)) | |||
(456 1024 "2014-06-18 12:45:00" (0 123 0 0))))) | |||
(switch-to-buffer "2048-test") | |||
(2048-init-tiles) | |||
(2048-mode) | |||
(2048-print-board))) | |||
(defun 2048-init () | |||
"Begin a game of 2048." | |||
(setq *2048-board* (make-vector (* *2048-columns* *2048-rows*) | |||
0)) | |||
(setq *2048-combines-this-move* (make-vector (* *2048-columns* *2048-rows*) | |||
nil)) | |||
(setq *2048-score* 0 | |||
*2048-hi-tile* 2) | |||
(setq *2048-victory-value* *2048-default-victory-value*) | |||
(setq *2048-game-has-been-added-to-history* nil) | |||
(setq *2048-game-epoch* (current-time)) | |||
(2048-insert-random-cell) | |||
(2048-insert-random-cell) | |||
(2048-init-tiles) | |||
(2048-print-board) | |||
(message "Good luck!")) | |||
(defun 2048-get-cell (row col) | |||
"Get the value in (ROW, COL)." | |||
(elt *2048-board* | |||
(+ (* row *2048-columns*) | |||
col))) | |||
(defun 2048-set-cell (row column val) | |||
"Set the value in (ROW, COLUMN) to VAL." | |||
(when (< *2048-hi-tile* val) | |||
(setq *2048-hi-tile* val)) | |||
(aset *2048-board* | |||
(+ (* row *2048-columns*) | |||
column) | |||
val)) | |||
(defun 2048-num-to-printable (num) | |||
"Return NUM as a string that can be put into the board. | |||
That is, print zeros as empty strings, and all other numbers as themselves." | |||
(if (eq num 0) | |||
"" | |||
(format "%d" num))) | |||
(defun 2048-was-combined-this-turn (row column) | |||
"Return whether the number in (ROW, COLUMN) was generated this turn by two numbers combining." | |||
(elt *2048-combines-this-move* | |||
(+ (* row *2048-columns*) | |||
column))) | |||
(defun 2048-set-was-combined-this-turn (row column) | |||
"Set that the number in (ROW, COLUMN) was generated this turn by two numbers combining." | |||
(2048-debug (format "setting (%d, %d) as combined this turn." row column)) | |||
(aset *2048-combines-this-move* | |||
(+ (* row *2048-columns*) | |||
column) | |||
t)) | |||
(defun 2048-insert-random-cell () | |||
"Pick a number randomly, and insert it into a random cell." | |||
(let ((number-to-insert (elt *2048-possible-values-to-insert* | |||
(random (length *2048-possible-values-to-insert*)))) | |||
(row (random *2048-rows*)) | |||
(column (random *2048-columns*))) | |||
(while (not (eq (2048-get-cell row column) | |||
0)) | |||
(setq row (random *2048-rows*)) | |||
(setq column (random *2048-columns*))) | |||
(2048-set-cell row column number-to-insert))) | |||
(defun 2048-check-game-end () | |||
"Check whether the game has either been won or lost. If so, notify the user and restarting." | |||
(cond ((2048-game-was-won) | |||
(2048-print-board) | |||
(if (y-or-n-p "Yay! You beat the game! y to start again; n to continue. Start again? ") | |||
(progn (2048-add-new-history-item *2048-score* *2048-hi-tile* (current-time) (time-subtract (current-time) *2048-game-epoch*)) | |||
(2048-init)) | |||
(setq *2048-victory-value* | |||
(* *2048-victory-value* 2)))) | |||
((2048-game-was-lost) | |||
(unless *2048-game-has-been-added-to-history* | |||
(2048-add-new-history-item *2048-score* *2048-hi-tile* (current-time) (time-subtract (current-time) *2048-game-epoch*)) | |||
(setq *2048-game-has-been-added-to-history* t)) | |||
(2048-print-board) | |||
(when (y-or-n-p "Aw, too bad. You lost. Want to play again? ") | |||
(2048-init))))) | |||
(defun 2048-add-new-history-item (score hi-tile game-end-time game-duration) | |||
"Generate and add a new history item to the score list. | |||
This item should have score SCORE, the highest tile reached as HI-TILE, | |||
have ended at GAME-END-TIME, and have duration GAME-DURATION" | |||
(setq *2048-history* | |||
(let ((history-length (length *2048-history*))) | |||
;; get the history length before calling cl-sort because cl-sort is destructive. | |||
(butlast (cl-sort (cons (list *2048-score* | |||
*2048-hi-tile* | |||
(format-time-string "%Y-%m-%d" game-end-time) | |||
game-duration) | |||
*2048-history*) | |||
'> | |||
:key 'car) | |||
(max 0 | |||
(- (1+ history-length) | |||
*2048-history-size*)))))) | |||
(defun 2048-game-was-won () | |||
"Return t if the game was won, nil otherwise." | |||
(let ((game-was-won nil)) | |||
(dotimes (row *2048-rows*) | |||
(dotimes (column *2048-columns*) | |||
(when (eq (2048-get-cell row column) | |||
*2048-victory-value*) | |||
(setq game-was-won t)))) | |||
game-was-won)) | |||
(defun 2048-game-was-lost () | |||
"Return t if the game was lost, nil otherwise." | |||
(let ((game-was-lost t)) | |||
(dotimes (row *2048-rows*) | |||
(dotimes (column *2048-columns*) | |||
(when (eq (2048-get-cell row column) | |||
0) | |||
(setq game-was-lost nil)))) | |||
;; For each square, if that square has one below it that's the same, | |||
;; the game's not over. | |||
(dotimes (row (1- *2048-rows*)) | |||
(dotimes (column *2048-columns*) | |||
(when (eq (2048-get-cell row column) | |||
(2048-get-cell (1+ row) column)) | |||
(setq game-was-lost nil)))) | |||
;; For each square, if that square has one to its right that's the same, | |||
;; the game's not over. | |||
(dotimes (row *2048-rows*) | |||
(dotimes (column (1- *2048-columns*)) | |||
(when (eq (2048-get-cell row column) | |||
(2048-get-cell row (1+ column))) | |||
(setq game-was-lost nil)))) | |||
game-was-lost)) | |||
(defun 2048-print-board () | |||
"Wipes the entire field, and prints the board." | |||
(let ((inhibit-read-only t)) | |||
(erase-buffer) | |||
(dotimes (row *2048-rows*) | |||
;;print the separator line on top of, and between cells | |||
(dotimes (col *2048-columns*) | |||
(insert "+-------")) | |||
(insert "+") | |||
(insert "\n") | |||
;;print the empty line above numbers | |||
(dotimes (col *2048-columns*) | |||
(insert "|") | |||
(let ((current-value (2048-get-cell row col))) | |||
(insert (2048-empty-tile current-value)))) | |||
(insert "|") | |||
(insert "\n") | |||
;; print the number tiles | |||
(dotimes (col *2048-columns*) | |||
(insert "|") | |||
(let ((current-value (2048-get-cell row col))) | |||
(insert (2048-tile current-value)))) | |||
(insert "|") | |||
(insert "\n") | |||
;;print the empty line below numbers | |||
(dotimes (col *2048-columns*) | |||
(insert "|") | |||
(let ((current-value (2048-get-cell row col))) | |||
(insert (2048-empty-tile current-value)))) | |||
(insert "|") | |||
(insert "\n")) | |||
;;print the separator line on the bottom of the last row. | |||
(dotimes (col *2048-columns*) | |||
(insert "+-------")) | |||
(insert "+\n") | |||
(insert "\n") | |||
(let ((score-width (if (= 0 *2048-score*) | |||
1 | |||
(ceiling (log *2048-score* 10))))) | |||
(insert (format "%10s%s%s\n" "/" (make-string (+ 9 | |||
score-width) | |||
?\=) "\\")) | |||
(insert (format "%10s %s %d %s\n" "|" "Score:" *2048-score* "|")) | |||
(insert (format "%10s%s%s\n" "\\" (make-string (+ 9 | |||
score-width) | |||
?\=) "/"))) | |||
(insert "\n") | |||
(2048-print-help) | |||
(insert "\n") | |||
;; print score and history | |||
(insert (format "%10s%s%s\n" "/" (make-string 13 ?\=) "\\")) | |||
(insert (format "%24s\n" "| HIGH SCORES |")) | |||
(insert (format "%10s%s%s\n" "\\" (make-string 13 ?\=) "/")) | |||
(insert "\n") | |||
(insert (format "%8s %7s %7s %4s\n" "Score" "Hi-Tile" "Date" "Duration")) | |||
(mapc #'(lambda (x) | |||
(insert (format "%8d %7d %10s %s\n" | |||
(elt x 0) (elt x 1) (elt x 2) (format-time-string "%H:%M:%S" (elt x 3) t)))) | |||
*2048-history*) | |||
(goto-char (point-min)))) | |||
(defun 2048-print-help () | |||
"Print basic help text." | |||
(insert "The goal is to create a tile with value 2048. | |||
Use the arrow keys, p/n/b/f, or C-p/C-n/C-b/C-f | |||
to move the tiles around. Press r to move randomly. | |||
If two tiles of the same value collide, the tiles | |||
combine into a tile with twice the value.\n")) | |||
(defun 2048-move (from-row from-column delta-row delta-column) | |||
"Try to move the number in (FROM-ROW, FROM-COLUMN) | |||
Move it by (DELTA-ROW, DELTA-COLUMN). | |||
This succeeds when the destination (to-row, to-column) either is 0, | |||
or is the same value as (from-row, from-column). | |||
If (to-row, to-column) is zero, cascade and try to move further. | |||
Returns t if we were able to move; otherwise nil." | |||
(let ((to-row (+ from-row delta-row)) | |||
(to-column (+ from-column delta-column))) | |||
(when (in-bounds to-row to-column) | |||
(2048-debug (format "moving the cell (%d, %d) by (%d, %d) to (%d, %d)" from-row from-column delta-row delta-column to-row to-column)) | |||
(let ((from-val (2048-get-cell from-row from-column)) | |||
(to-val (2048-get-cell to-row to-column))) | |||
(cond ((eq from-val to-val) | |||
(unless (or (eq from-val 0) | |||
(2048-was-combined-this-turn to-row to-column)) | |||
(2048-debug (format "combining (%d, %d) into (%d, %d)" from-row from-column to-row to-column)) | |||
(let ((combined-value (* from-val 2))) | |||
(unless (boundp (2048-tile-symbol combined-value)) | |||
(2048-init-tile combined-value)) | |||
(2048-set-cell to-row to-column combined-value) | |||
(setq *2048-score* (+ *2048-score* combined-value)) | |||
(2048-set-cell from-row from-column 0) | |||
(2048-set-was-combined-this-turn to-row to-column)))) | |||
((eq to-val 0) | |||
(2048-set-cell to-row to-column from-val) | |||
(2048-set-cell from-row from-column 0) | |||
(2048-move to-row to-column delta-row delta-column) | |||
t) | |||
(t nil)))))) ;;ugh, need to pass out whether something was combined, and pass that to the _next_ call to 2048-move. We see bugs on rows like 4 0 4 0. | |||
(defun in-bounds (row column) | |||
"Return t if (ROW, COLUMN) is in the bounds of the field." | |||
(and (>= row 0) | |||
(>= column 0) | |||
(< row *2048-rows*) | |||
(< column *2048-columns*))) | |||
(defun 2048-up () | |||
"Shift the board up." | |||
(interactive) | |||
(2048-game-move | |||
(setq *2048-combines-this-move* (make-vector (* *2048-columns* *2048-rows*) | |||
nil)) | |||
(let ((has-moved nil)) | |||
(dotimes (col *2048-columns*) | |||
(dolist (row (number-sequence 1 | |||
(1- *2048-rows*))) | |||
(setq has-moved (or (2048-move row col -1 0) | |||
has-moved)))) | |||
(when has-moved | |||
(2048-insert-random-cell))))) | |||
(defun 2048-down () | |||
"Shift the board down." | |||
(interactive) | |||
(2048-game-move | |||
(setq *2048-combines-this-move* (make-vector (* *2048-columns* *2048-rows*) | |||
nil)) | |||
(let ((has-moved nil)) | |||
(dotimes (col *2048-columns*) | |||
(dolist (row (number-sequence (- *2048-rows* 2) 0 -1)) | |||
(setq has-moved (or (2048-move row col 1 0) | |||
has-moved)))) | |||
(when has-moved | |||
(2048-insert-random-cell))))) | |||
(defun 2048-left () | |||
"Shifts the board left." | |||
(interactive) | |||
(2048-game-move | |||
(let ((has-moved nil)) | |||
(dotimes (row *2048-rows*) | |||
(dolist (col (number-sequence 1 (1- *2048-columns*))) | |||
(setq has-moved (or (2048-move row col 0 -1) | |||
has-moved)))) | |||
(when has-moved | |||
(2048-insert-random-cell))))) | |||
(defun 2048-right () | |||
"Shifts the board right." | |||
(interactive) | |||
(2048-game-move | |||
(let ((has-moved nil)) | |||
(dotimes (row *2048-rows*) | |||
(dolist (col (number-sequence (- *2048-columns* 2) 0 -1)) | |||
(setq has-moved (or (2048-move row col 0 1) | |||
has-moved)))) | |||
(when has-moved | |||
(2048-insert-random-cell))))) | |||
(defun 2048-random-move () | |||
"Move the board in a random direction. | |||
This may result in no changes to the board, | |||
if the move was the same as the last one." | |||
(interactive) | |||
(funcall (elt '(2048-left 2048-right 2048-up 2048-down) (random 4)))) | |||
(provide '2048-game) | |||
;;; 2048-game.el ends here |
@ -0,0 +1,22 @@ | |||
;;; a-autoloads.el --- automatically extracted autoloads | |||
;; | |||
;;; Code: | |||
(add-to-list 'load-path (directory-file-name | |||
(or (file-name-directory #$) (car load-path)))) | |||
;;;### (autoloads nil "a" "a.el" (0 0 0 0)) | |||
;;; Generated autoloads from a.el | |||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "a" '("a-"))) | |||
;;;*** | |||
;; Local Variables: | |||
;; version-control: never | |||
;; no-byte-compile: t | |||
;; no-update-autoloads: t | |||
;; coding: utf-8 | |||
;; End: | |||
;;; a-autoloads.el ends here |
@ -0,0 +1,2 @@ | |||
;;; -*- no-byte-compile: t -*- | |||
(define-package "a" "20180907.953" "Associative data structure functions" '((emacs "25")) :commit "18966975db7110d0aac726be95b593e2fc3d44ed" :keywords '("lisp") :authors '(("Arne Brasseur" . "arne@arnebrasseur.net")) :maintainer '("Arne Brasseur" . "arne@arnebrasseur.net") :url "https://github.com/plexus/a.el") |
@ -0,0 +1,347 @@ | |||
;;; a.el --- Associative data structure functions -*- lexical-binding: t; -*- | |||
;; Copyright (C) 2017 Arne Brasseur | |||
;; Author: Arne Brasseur <arne@arnebrasseur.net> | |||
;; URL: https://github.com/plexus/a.el | |||
;; Package-Version: 20180907.953 | |||
;; Keywords: lisp | |||
;; Version: 0.1.1 | |||
;; Package-Requires: ((emacs "25")) | |||
;; This file is not part of GNU Emacs. | |||
;; This file is free software; you can redistribute it and/or modify | |||
;; it under the terms of the GNU General Public License as published by | |||
;; the Free Software Foundation; either version 3, or (at your option) | |||
;; any later version. | |||
;; This file is distributed in the hope that it will be useful, | |||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
;; GNU General Public License for more details. | |||
;; You should have received a copy of the GNU General Public License | |||
;; along with GNU Emacs; see the file COPYING. If not, write to | |||
;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | |||
;; Boston, MA 02110-1301, USA. | |||
;;; Commentary: | |||
;; Library for dealing with associative data structures: alists, hash-maps, and | |||
;; vectors (for vectors, the indices are treated as keys). | |||
;; | |||
;; This library is largely inspired by Clojure, it has many of the functions | |||
;; found in clojure.core, prefixed with `a-'. All functions treat their | |||
;; arguments as immutable, so e.g. `a-assoc' will clone the hash-table or alist | |||
;; it is given. Keep this in mind when writing performance sensitive code. | |||
;;; Code: | |||
(eval-when-compile (require 'subr-x)) ;; for things like hash-table-keys | |||
(require 'cl-lib) | |||
(require 'seq) | |||
(defun a-associative-p (obj) | |||
(or (not obj) | |||
(hash-table-p obj) | |||
(and (consp obj) (consp (car obj))))) | |||
(defalias 'a-associative? 'a-associative-p) | |||
(defun a-get (map key &optional not-found) | |||
"Return the value MAP mapped to KEY, NOT-FOUND or nil if key not present." | |||
(cond | |||
;; own implementation instead of alist-get so keys are checked with equal | |||
;; instead of eq | |||
((listp map) | |||
(a--alist-get map key not-found)) | |||
((vectorp map) | |||
(if (a-has-key? map key) | |||
(aref map key) | |||
not-found)) | |||
((hash-table-p map) | |||
(gethash key map not-found)) | |||
(t (user-error "Not associative: %S" map)))) | |||
(defun a--alist-get (map key &optional not-found) | |||
"Like alist-get, but uses equal instead of eq to look up in map MAP key KEY. | |||
Returns NOT-FOUND if the key is not present, or `nil' if | |||
NOT-FOUND is not specified." | |||
(cl-block nil | |||
(seq-doseq (pair map) | |||
(when (equal (car pair) key) | |||
(cl-return (cdr pair)))) | |||
not-found)) | |||
(defun a-get-in (m ks &optional not-found) | |||
"Look up a value in a nested associative structure. | |||
Given a data structure M, and a sequence of keys KS, find the | |||
value found by using each key in turn to do a lookup in the next | |||
\"layer\". Return `nil' if the key is not present, or the NOT-FOUND | |||
value if supplied." | |||
(let ((result m)) | |||
(cl-block nil | |||
(seq-doseq (k ks) | |||
(if (a-has-key? result k) | |||
(setq result (a-get result k)) | |||
(cl-return not-found))) | |||
result))) | |||
(defmacro a-get* (&rest keys) | |||
"Look up a value in a nested associative structure. | |||
Like a-get-in, but takes the key sequence KEYS directly as vararg | |||
arguments, rather than as a single sequence." | |||
(cl-labels ((rec (keys) | |||
`(a-get ,(if (and (consp (cdr keys)) | |||
(cddr keys)) | |||
(rec (cdr keys)) | |||
(cadr keys)) | |||
,(car keys)))) | |||
(rec (nreverse keys)))) | |||
(defun a-has-key (coll k) | |||
"Check if the given associative collection COLL has a certain key K." | |||
(cond | |||
((listp coll) (not (eq (a--alist-get coll k :not-found) :not-found))) | |||
((vectorp coll) (and (integerp k) (< -1 k (length coll)))) | |||
((hash-table-p coll) (not (eq (gethash k coll :not-found) :not-found))) | |||
(t (user-error "Not associative: %S" coll)))) | |||
(defalias 'a-has-key? 'a-has-key) | |||
(defun a-assoc-1 (coll k v) | |||
"Like `a-assoc', (in COLL assoc K with V) but only takes a single k-v pair. | |||
Internal helper function." | |||
(cond | |||
((listp coll) | |||
(if (a-has-key? coll k) | |||
(mapcar (lambda (entry) | |||
(if (equal (car entry) k) | |||
(cons k v) | |||
entry)) | |||
coll) | |||
(cons (cons k v) coll))) | |||
((vectorp coll) | |||
(if (and (integerp k) (> k 0)) | |||
(if (< k (length coll)) | |||
(let ((copy (copy-sequence coll))) | |||
(aset copy k v) | |||
copy) | |||
(vconcat coll (make-list (- k (length coll)) nil) (list v))))) | |||
((hash-table-p coll) | |||
(let ((copy (copy-hash-table coll))) | |||
(puthash k v copy) | |||
copy)))) | |||
(defun a-assoc (coll &rest kvs) | |||
"Return an updated collection COLL, associating values with keys KVS." | |||
(when (not (cl-evenp (a-count kvs))) | |||
(user-error "a-assoc requires an even number of arguments!")) | |||
(seq-reduce (lambda (coll kv) | |||
(seq-let [k v] kv | |||
(a-assoc-1 coll k v))) | |||
(seq-partition kvs 2) | |||
coll)) | |||
(defun a-keys (coll) | |||
"Return the keys in the collection COLL." | |||
(cond | |||
((listp coll) | |||
(mapcar #'car coll)) | |||
((hash-table-p coll) | |||
(hash-table-keys coll)))) | |||
(defun a-vals (coll) | |||
"Return the values in the collection COLL." | |||
(cond | |||
((listp coll) | |||
(mapcar #'cdr coll)) | |||
((hash-table-p coll) | |||
(hash-table-values coll)))) | |||
(defun a-reduce-kv (fn from coll) | |||
"Reduce with FN starting from FROM the collection COLL. | |||
Reduce an associative collection COLL, starting with an initial | |||
value of FROM. The reducing function FN receives the intermediate | |||
value, key, and value." | |||
(seq-reduce (lambda (acc key) | |||
(funcall fn acc key (a-get coll key))) | |||
(a-keys coll) | |||
from)) | |||
(defun a-count (coll) | |||
"Count the number of key-value pairs in COLL. | |||
Like length, but can also return the length of hash tables." | |||
(cond | |||
((seqp coll) | |||
(length coll)) | |||
((hash-table-p coll) | |||
(hash-table-count coll)))) | |||
(defun a-equal (a b) | |||
"Compare collections A, B for value equality. | |||
Associative collections (hash tables and a-lists) are considered | |||
equal if they contain equal key-value pairs, regardless of order. | |||
Sequences (lists or vectors) are considered equal if they contain | |||
the same elements in the same order. | |||
Collection elements are compared using `a-equal'. In other words, | |||
the equality check is recursive, resulting in a \"deep\" equality | |||
check. | |||
Anything that isn't associative or a sequence is compared with | |||
`equal'." | |||
(cond | |||
((and (a-associative? a) (a-associative? b)) | |||
(or (equal a b) | |||
(when (eq (a-count a) (a-count b)) | |||
(cl-block nil | |||
(seq-doseq (k (a-keys a)) | |||
(when (not (a-equal (a-get a k) (a-get b k))) | |||
(cl-return nil))) | |||
t)))) | |||
((and (sequencep a) (sequencep b)) | |||
(and (eq (length a) (length b)) | |||
(or (and (seq-empty-p a) (seq-empty-p b)) | |||
(and (a-equal (elt a 0) (elt b 0)) | |||
(a-equal (seq-drop a 1) (seq-drop b 1)))))) | |||
(t | |||
(equal a b)))) | |||
(defalias 'a-equal? 'a-equal) | |||
(defun a-merge (&rest colls) | |||
"Merge multiple associative collections. | |||
Return the type of the first collection COLLS." | |||
(seq-reduce (lambda (this that) | |||
(a-reduce-kv (lambda (coll k v) | |||
(a-assoc coll k v)) | |||
this | |||
that)) | |||
(cdr colls) | |||
(car colls))) | |||
(defun a-merge-with (f &rest colls) | |||
"Merge multiple associative collections. | |||
Return the type of the first collection COLLS. If a key exists in | |||
both, then combine the associated values by calling f on them." | |||
(seq-reduce (lambda (this that) | |||
(a-reduce-kv (lambda (coll k v) | |||
(a-assoc coll k (if (a-has-key coll k) | |||
(funcall f v (a-get coll k)) | |||
v))) | |||
this | |||
that)) | |||
(cdr colls) | |||
(car colls))) | |||
(defun a-alist (&rest kvs) | |||
"Create an association list from the given keys and values KVS. | |||
Arguments are simply provided in sequence, rather than as lists or cons cells. | |||
For example: (a-alist :foo 123 :bar 456)" | |||
(mapcar (lambda (kv) (cons (car kv) (cadr kv))) (seq-partition kvs 2))) | |||
(defalias 'a-list 'a-alist) | |||
(defun a-hash-table (&rest kvs) | |||
"Create a hash table from the given keys and values KVS. | |||
Arguments are simply provided in sequence, rather than as lists | |||
or cons cells. As \"test\" for the hash table, equal is used. The | |||
hash table is created without extra storage space, so with a size | |||
equal to amount of key-value pairs, since it is assumed to be | |||
treated as immutable. | |||
For example: (a-hash-table :foo 123 :bar 456)" | |||
(let* ((kv-pairs (seq-partition kvs 2)) | |||
(hash-map (make-hash-table :test 'equal :size (length kv-pairs)))) | |||
(seq-do (lambda (pair) | |||
(puthash (car pair) (cadr pair) hash-map)) | |||
kv-pairs) | |||
hash-map)) | |||
(defun a-assoc-in (coll keys value) | |||
"In collection COLL, at location KEYS, associate value VALUE. | |||
Associates a value in a nested associative collection COLL, where | |||
KEYS is a sequence of keys and VALUE is the new value and returns | |||
a new nested structure. If any levels do not exist, association | |||
lists will be created." | |||
(cl-case (length keys) | |||
(0 coll) | |||
(1 (a-assoc-1 coll (elt keys 0) value)) | |||
(t (a-assoc-1 coll | |||
(elt keys 0) | |||
(a-assoc-in (a-get coll (elt keys 0)) | |||
(seq-drop keys 1) | |||
value))))) | |||
(defun a-dissoc--list (list keys) | |||
"Return updated LIST with KEYS removed. | |||
Internal helper. Use `a-dissoc' instead." | |||
(a-reduce-kv (lambda (res k v) | |||
(if (member k keys) | |||
res | |||
(cons (cons k v) res))) | |||
nil | |||
list)) | |||
(defun a-dissoc--hash-table (table keys) | |||
"Return updated TABLE with KEYS removed. | |||
Internal helper. Use `a-dissoc' instead." | |||
(let ((new-table (make-hash-table :size (hash-table-count table) | |||
:test (hash-table-test table))) | |||
(rest-keys (seq-remove (lambda (k) | |||
(member k keys)) | |||
(a-keys table)))) | |||
(seq-doseq (k rest-keys) | |||
(puthash k (gethash k table) new-table)) | |||
new-table)) | |||
(defun a-dissoc (coll &rest keys) | |||
"Return an updated version of collection COLL with the KEY removed." | |||
(cond | |||
((listp coll) (a-dissoc--list coll keys)) | |||
((hash-table-p coll) (a-dissoc--hash-table coll keys)))) | |||
(defun a-update (coll key fn &rest args) | |||
"In collection COLL, at location KEY, apply FN with extra args ARGS. | |||
'Updates' a value in an associative collection COLL, where KEY is | |||
a key and FN is a function that will take the old value and any | |||
supplied args and return the new value, and returns a new | |||
structure. If the key does not exist, nil is passed as the old | |||
value." | |||
(a-assoc-1 coll | |||
key | |||
(apply #'funcall fn (a-get coll key) args))) | |||
(defun a-update-in (coll keys fn &rest args) | |||
"In collection COLL, at location KEYS, apply FN with extra args ARGS. | |||
'Updates' a value in a nested associative collection COLL, where | |||
KEYS is a sequence of keys and FN is a function that will take | |||
the old value and any supplied ARGS and return the new value, and | |||
returns a new nested structure. If any levels do not exist, | |||
association lists will be created." | |||
(cl-case (length keys) | |||
(0 coll) | |||
(1 (apply #'a-update coll (elt keys 0) fn args)) | |||
(t (a-assoc-1 coll | |||
(elt keys 0) | |||
(apply #'a-update-in | |||
(a-get coll (elt keys 0)) | |||
(seq-drop keys 1) | |||
fn | |||
args))))) | |||
(provide 'a) | |||
;;; a.el ends here |
@ -0,0 +1,39 @@ | |||
;;; ac-slime-autoloads.el --- automatically extracted autoloads | |||
;; | |||
;;; Code: | |||
(add-to-list 'load-path (directory-file-name | |||
(or (file-name-directory #$) (car load-path)))) | |||
;;;### (autoloads nil "ac-slime" "ac-slime.el" (0 0 0 0)) | |||
;;; Generated autoloads from ac-slime.el | |||
(defface ac-slime-menu-face '((t (:inherit ac-candidate-face))) "\ | |||
Face for slime candidate menu." :group (quote auto-complete)) | |||
(defface ac-slime-selection-face '((t (:inherit ac-selection-face))) "\ | |||
Face for the slime selected candidate." :group (quote auto-complete)) | |||
(defvar ac-source-slime-fuzzy '((init . ac-slime-init) (candidates . ac-source-slime-fuzzy-candidates) (candidate-face . ac-slime-menu-face) (selection-face . ac-slime-selection-face) (prefix . slime-symbol-start-pos) (symbol . "l") (match lambda (prefix candidates) candidates) (document . ac-slime-documentation)) "\ | |||
Source for fuzzy slime completion.") | |||
(defvar ac-source-slime-simple '((init . ac-slime-init) (candidates . ac-source-slime-simple-candidates) (candidate-face . ac-slime-menu-face) (selection-face . ac-slime-selection-face) (prefix . slime-symbol-start-pos) (symbol . "l") (document . ac-slime-documentation) (match . ac-source-slime-case-correcting-completions)) "\ | |||
Source for slime completion.") | |||
(autoload 'set-up-slime-ac "ac-slime" "\ | |||
Add an optionally FUZZY slime completion source to `ac-sources'. | |||
\(fn &optional FUZZY)" t nil) | |||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ac-slime" '("ac-s"))) | |||
;;;*** | |||
;; Local Variables: | |||
;; version-control: never | |||
;; no-byte-compile: t | |||
;; no-update-autoloads: t | |||
;; coding: utf-8 | |||
;; End: | |||
;;; ac-slime-autoloads.el ends here |
@ -0,0 +1,2 @@ | |||
;;; -*- no-byte-compile: t -*- | |||
(define-package "ac-slime" "20171027.2100" "An auto-complete source using slime completions" '((auto-complete "1.4") (slime "2.9") (cl-lib "0.5")) :commit "6c80cb602ddad46486288f94ad7546396c6e4b1a" :authors '(("Steve Purcell" . "steve@sanityinc.com")) :maintainer '("Steve Purcell" . "steve@sanityinc.com") :url "https://github.com/purcell/ac-slime") |
@ -0,0 +1,137 @@ | |||
;;; ac-slime.el --- An auto-complete source using slime completions | |||
;; Copyright (C) 2010-2017 Steve Purcell | |||
;; Author: Steve Purcell <steve@sanityinc.com> | |||
;; URL: https://github.com/purcell/ac-slime | |||
;; Package-Version: 20171027.2100 | |||
;; Package-X-Original-Version: 0 | |||
;; Package-Requires: ((auto-complete "1.4") (slime "2.9") (cl-lib "0.5")) | |||
;; This file is not part of GNU Emacs. | |||
;; This program is free software; you can redistribute it and/or modify | |||
;; it under the terms of the GNU General Public License as published by | |||
;; the Free Software Foundation, either version 3 of the License, or | |||
;; (at your option) any later version. | |||
;; This program is distributed in the hope that it will be useful, | |||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
;; GNU General Public License for more details. | |||
;; You should have received a copy of the GNU General Public License | |||
;; along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
;;; Commentary: | |||
;; Usage: | |||
;; (require 'ac-slime) | |||
;; (add-hook 'slime-mode-hook 'set-up-slime-ac) | |||
;; (add-hook 'slime-repl-mode-hook 'set-up-slime-ac) | |||
;; (eval-after-load "auto-complete" | |||
;; '(add-to-list 'ac-modes 'slime-repl-mode)) | |||
;; | |||
;;; Code: | |||
(require 'cl-lib) | |||
(require 'slime) | |||
(require 'auto-complete) | |||
(defgroup ac-slime nil | |||
"Slime auto-complete customizations" | |||
:prefix "ac-slime-" | |||
:group 'slime) | |||
(defcustom ac-slime-show-flags t | |||
"When non-nil, show completion result flags during fuzzy completion." | |||
:group 'ac-slime) | |||
(defun ac-source-slime-fuzzy-candidates () | |||
"Return a possibly-empty list of fuzzy completions for the symbol at point." | |||
(when (slime-connected-p) | |||
(let ((slime-fuzzy-completion-limit 50)) | |||
(mapcar (lambda (result) | |||
(let ((sym (car result)) | |||
(flags (car (last result)))) | |||
(if ac-slime-show-flags | |||
(propertize sym 'summary flags) | |||
sym))) | |||
(car (slime-fuzzy-completions (substring-no-properties ac-prefix))))))) | |||
(defun ac-source-slime-simple-candidates () | |||
"Return a possibly-empty list of completions for the symbol at point." | |||
(when (slime-connected-p) | |||
(let ((completions (slime-simple-completions (substring-no-properties ac-prefix)))) | |||
(if (listp (car completions)) | |||
(car completions) | |||
completions)))) | |||
(defun ac-source-slime-case-correcting-completions (name collection) | |||
(mapcar #'(lambda (completion) | |||
;; FIXME | |||
(cl-replace completion name)) | |||
(all-completions (downcase name) collection))) | |||
(defvar ac-slime-current-doc nil "Holds slime docstring for current symbol.") | |||
(defun ac-slime-documentation (symbol-name) | |||
"Return a documentation string for SYMBOL-NAME." | |||
(let ((symbol-name (substring-no-properties symbol-name))) | |||
(slime-eval `(swank:documentation-symbol ,symbol-name)))) | |||
(defun ac-slime-init () | |||
"Called when completion source is initialized." | |||
(setq ac-slime-current-doc nil)) | |||
;;;###autoload | |||
(defface ac-slime-menu-face | |||
'((t (:inherit ac-candidate-face))) | |||
"Face for slime candidate menu." | |||
:group 'auto-complete) | |||
;;;###autoload | |||
(defface ac-slime-selection-face | |||
'((t (:inherit ac-selection-face))) | |||
"Face for the slime selected candidate." | |||
:group 'auto-complete) | |||
;;;###autoload | |||
(defvar ac-source-slime-fuzzy | |||
'((init . ac-slime-init) | |||
(candidates . ac-source-slime-fuzzy-candidates) | |||
(candidate-face . ac-slime-menu-face) | |||
(selection-face . ac-slime-selection-face) | |||
(prefix . slime-symbol-start-pos) | |||
(symbol . "l") | |||
(match . (lambda (prefix candidates) candidates)) | |||
(document . ac-slime-documentation)) | |||
"Source for fuzzy slime completion.") | |||
;;;###autoload | |||
(defvar ac-source-slime-simple | |||
'((init . ac-slime-init) | |||
(candidates . ac-source-slime-simple-candidates) | |||
(candidate-face . ac-slime-menu-face) | |||
(selection-face . ac-slime-selection-face) | |||
(prefix . slime-symbol-start-pos) | |||
(symbol . "l") | |||
(document . ac-slime-documentation) | |||
(match . ac-source-slime-case-correcting-completions)) | |||
"Source for slime completion.") | |||
;;;###autoload | |||
(defun set-up-slime-ac (&optional fuzzy) | |||
"Add an optionally FUZZY slime completion source to `ac-sources'." | |||
(interactive) | |||
(add-to-list 'ac-sources | |||
(if fuzzy | |||
'ac-source-slime-fuzzy | |||
'ac-source-slime-simple))) | |||
(provide 'ac-slime) | |||
;;; ac-slime.el ends here |
@ -0,0 +1 @@ | |||
Good signature from 066DAFCB81E42C40 GNU ELPA Signing Agent (2019) <elpasign@elpa.gnu.org> (trust undefined) created at 2019-12-07T05:35:02+0100 using RSA |
@ -0,0 +1,2 @@ | |||
(1 (org . [(20191203) ( ) "Outline-based notes management and organizer" tar]) | |||
(org-plus-contrib . [(20191203) ( ) "Outline-based notes management and organizer" tar])) |
@ -0,0 +1,174 @@ | |||
;;; async-autoloads.el --- automatically extracted autoloads | |||
;; | |||
;;; Code: | |||
(add-to-list 'load-path (directory-file-name | |||
(or (file-name-directory #$) (car load-path)))) | |||
;;;### (autoloads nil "async" "async.el" (0 0 0 0)) | |||
;;; Generated autoloads from async.el | |||
(autoload 'async-start-process "async" "\ | |||
Start the executable PROGRAM asynchronously. See `async-start'. | |||
PROGRAM is passed PROGRAM-ARGS, calling FINISH-FUNC with the | |||
process object when done. If FINISH-FUNC is nil, the future | |||
object will return the process object when the program is | |||
finished. Set DEFAULT-DIRECTORY to change PROGRAM's current | |||
working directory. | |||
\(fn NAME PROGRAM FINISH-FUNC &rest PROGRAM-ARGS)" nil nil) | |||
(autoload 'async-start "async" "\ | |||
Execute START-FUNC (often a lambda) in a subordinate Emacs process. | |||
When done, the return value is passed to FINISH-FUNC. Example: | |||
(async-start | |||
;; What to do in the child process | |||
(lambda () | |||
(message \"This is a test\") | |||
(sleep-for 3) | |||
222) | |||
;; What to do when it finishes | |||
(lambda (result) | |||
(message \"Async process done, result should be 222: %s\" | |||
result))) | |||
If FINISH-FUNC is nil or missing, a future is returned that can | |||
be inspected using `async-get', blocking until the value is | |||
ready. Example: | |||
(let ((proc (async-start | |||
;; What to do in the child process | |||
(lambda () | |||
(message \"This is a test\") | |||
(sleep-for 3) | |||
222)))) | |||
(message \"I'm going to do some work here\") ;; .... | |||
(message \"Waiting on async process, result should be 222: %s\" | |||
(async-get proc))) | |||
If you don't want to use a callback, and you don't care about any | |||
return value from the child process, pass the `ignore' symbol as | |||
the second argument (if you don't, and never call `async-get', it | |||
will leave *emacs* process buffers hanging around): | |||
(async-start | |||
(lambda () | |||
(delete-file \"a remote file on a slow link\" nil)) | |||
'ignore) | |||
Note: Even when FINISH-FUNC is present, a future is still | |||
returned except that it yields no value (since the value is | |||
passed to FINISH-FUNC). Call `async-get' on such a future always | |||
returns nil. It can still be useful, however, as an argument to | |||
`async-ready' or `async-wait'. | |||
\(fn START-FUNC &optional FINISH-FUNC)" nil nil) | |||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "async" '("async-"))) | |||
;;;*** | |||
;;;### (autoloads nil "async-bytecomp" "async-bytecomp.el" (0 0 0 | |||
;;;;;; 0)) | |||
;;; Generated autoloads from async-bytecomp.el | |||
(autoload 'async-byte-recompile-directory "async-bytecomp" "\ | |||
Compile all *.el files in DIRECTORY asynchronously. | |||
All *.elc files are systematically deleted before proceeding. | |||
\(fn DIRECTORY &optional QUIET)" nil nil) | |||
(defvar async-bytecomp-package-mode nil "\ | |||
Non-nil if Async-Bytecomp-Package mode is enabled. | |||
See the `async-bytecomp-package-mode' command | |||
for a description of this minor mode. | |||
Setting this variable directly does not take effect; | |||
either customize it (see the info node `Easy Customization') | |||
or call the function `async-bytecomp-package-mode'.") | |||
(custom-autoload 'async-bytecomp-package-mode "async-bytecomp" nil) | |||
(autoload 'async-bytecomp-package-mode "async-bytecomp" "\ | |||
Byte compile asynchronously packages installed with package.el. | |||
Async compilation of packages can be controlled by | |||
`async-bytecomp-allowed-packages'. | |||
\(fn &optional ARG)" t nil) | |||
(autoload 'async-byte-compile-file "async-bytecomp" "\ | |||
Byte compile Lisp code FILE asynchronously. | |||
Same as `byte-compile-file' but asynchronous. | |||
\(fn FILE)" t nil) | |||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "async-bytecomp" '("async-byte"))) | |||
;;;*** | |||
;;;### (autoloads nil "dired-async" "dired-async.el" (0 0 0 0)) | |||
;;; Generated autoloads from dired-async.el | |||
(defvar dired-async-mode nil "\ | |||
Non-nil if Dired-Async mode is enabled. | |||
See the `dired-async-mode' command | |||
for a description of this minor mode. | |||
Setting this variable directly does not take effect; | |||
either customize it (see the info node `Easy Customization') | |||
or call the function `dired-async-mode'.") | |||
(custom-autoload 'dired-async-mode "dired-async" nil) | |||
(autoload 'dired-async-mode "dired-async" "\ | |||
Do dired actions asynchronously. | |||
\(fn &optional ARG)" t nil) | |||
(autoload 'dired-async-do-copy "dired-async" "\ | |||
Run ‘dired-do-copy’ asynchronously. | |||
\(fn &optional ARG)" t nil) | |||
(autoload 'dired-async-do-symlink "dired-async" "\ | |||
Run ‘dired-do-symlink’ asynchronously. | |||
\(fn &optional ARG)" t nil) | |||
(autoload 'dired-async-do-hardlink "dired-async" "\ | |||
Run ‘dired-do-hardlink’ asynchronously. | |||
\(fn &optional ARG)" t nil) | |||
(autoload 'dired-async-do-rename "dired-async" "\ | |||
Run ‘dired-do-rename’ asynchronously. | |||
\(fn &optional ARG)" t nil) | |||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "dired-async" '("dired-async-"))) | |||
;;;*** | |||
;;;### (autoloads nil "smtpmail-async" "smtpmail-async.el" (0 0 0 | |||
;;;;;; 0)) | |||
;;; Generated autoloads from smtpmail-async.el | |||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "smtpmail-async" '("async-smtpmail-"))) | |||
;;;*** | |||
;;;### (autoloads nil nil ("async-pkg.el") (0 0 0 0)) | |||
;;;*** | |||
;; Local Variables: | |||
;; version-control: never | |||
;; no-byte-compile: t | |||
;; no-update-autoloads: t | |||
;; coding: utf-8 | |||
;; End: | |||
;;; async-autoloads.el ends here |
@ -0,0 +1,219 @@ | |||
;;; async-bytecomp.el --- Compile elisp files asynchronously -*- lexical-binding: t -*- | |||
;; Copyright (C) 2014-2016 Free Software Foundation, Inc. | |||
;; Authors: John Wiegley <jwiegley@gmail.com> | |||
;; Thierry Volpiatto <thierry.volpiatto@gmail.com> | |||
;; Keywords: dired async byte-compile | |||
;; X-URL: https://github.com/jwiegley/dired-async | |||
;; This program is free software; you can redistribute it and/or | |||
;; modify it under the terms of the GNU General Public License as | |||
;; published by the Free Software Foundation; either version 2, or (at | |||
;; your option) any later version. | |||
;; This program is distributed in the hope that it will be useful, but | |||
;; WITHOUT ANY WARRANTY; without even the implied warranty of | |||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
;; General Public License for more details. | |||
;; You should have received a copy of the GNU General Public License | |||
;; along with GNU Emacs; see the file COPYING. If not, write to the | |||
;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |||
;; Boston, MA 02111-1307, USA. | |||
;;; Commentary: | |||
;; | |||
;; This package provide the `async-byte-recompile-directory' function | |||
;; which allows, as the name says to recompile a directory outside of | |||
;; your running emacs. | |||
;; The benefit is your files will be compiled in a clean environment without | |||
;; the old *.el files loaded. | |||
;; Among other things, this fix a bug in package.el which recompile | |||
;; the new files in the current environment with the old files loaded, creating | |||
;; errors in most packages after upgrades. | |||
;; | |||
;; NB: This package is advicing the function `package--compile'. | |||
;;; Code: | |||
(require 'cl-lib) | |||
(require 'async) | |||
(defcustom async-bytecomp-allowed-packages | |||
'(async helm helm-core helm-ls-git helm-ls-hg magit) | |||
"Packages in this list will be compiled asynchronously by `package--compile'. | |||
All the dependencies of these packages will be compiled async too, | |||
so no need to add dependencies to this list. | |||
The value of this variable can also be a list with a single element, | |||
the symbol `all', in this case packages are always compiled asynchronously." | |||
:group 'async | |||
:type '(repeat (choice symbol))) | |||
(defvar async-byte-compile-log-file | |||
(concat user-emacs-directory "async-bytecomp.log")) | |||
;;;###autoload | |||
(defun async-byte-recompile-directory (directory &optional quiet) | |||
"Compile all *.el files in DIRECTORY asynchronously. | |||
All *.elc files are systematically deleted before proceeding." | |||
(cl-loop with dir = (directory-files directory t "\\.elc\\'") | |||
unless dir return nil | |||
for f in dir | |||
when (file-exists-p f) do (delete-file f)) | |||
;; Ensure async is reloaded when async.elc is deleted. | |||
;; This happen when recompiling its own directory. | |||
(load "async") | |||
(let ((call-back | |||
(lambda (&optional _ignore) | |||
(if (file-exists-p async-byte-compile-log-file) | |||
(let ((buf (get-buffer-create byte-compile-log-buffer)) | |||
(n 0)) | |||
(with-current-buffer buf | |||
(goto-char (point-max)) | |||
(let ((inhibit-read-only t)) | |||
(insert-file-contents async-byte-compile-log-file) | |||
(compilation-mode)) | |||
(display-buffer buf) | |||
(delete-file async-byte-compile-log-file) | |||
(unless quiet | |||
(save-excursion | |||
(goto-char (point-min)) | |||
(while (re-search-forward "^.*:Error:" nil t) | |||
(cl-incf n))) | |||
(if (> n 0) | |||
(message "Failed to compile %d files in directory `%s'" n directory) | |||
(message "Directory `%s' compiled asynchronously with warnings" directory))))) | |||
(unless quiet | |||
(message "Directory `%s' compiled asynchronously with success" directory)))))) | |||
(async-start | |||
`(lambda () | |||
(require 'bytecomp) | |||
,(async-inject-variables "\\`\\(load-path\\)\\|byte\\'") | |||
(let ((default-directory (file-name-as-directory ,directory)) | |||
error-data) | |||
(add-to-list 'load-path default-directory) | |||
(byte-recompile-directory ,directory 0 t) | |||
(when (get-buffer byte-compile-log-buffer) | |||
(setq error-data (with-current-buffer byte-compile-log-buffer | |||
(buffer-substring-no-properties (point-min) (point-max)))) | |||
(unless (string= error-data "") | |||
(with-temp-file ,async-byte-compile-log-file | |||
(erase-buffer) | |||
(insert error-data)))))) | |||
call-back) | |||
(unless quiet (message "Started compiling asynchronously directory %s" directory)))) | |||
(defvar package-archive-contents) | |||
(defvar package-alist) | |||
(declare-function package-desc-reqs "package.el" (cl-x)) | |||
(defun async-bytecomp--get-package-deps (pkg &optional only) | |||
;; Same as `package--get-deps' but parse instead `package-archive-contents' | |||
;; because PKG is not already installed and not present in `package-alist'. | |||
;; However fallback to `package-alist' in case PKG no more present | |||
;; in `package-archive-contents' due to modification to `package-archives'. | |||
;; See issue #58. | |||
(let* ((pkg-desc (cadr (or (assq pkg package-archive-contents) | |||
(assq pkg package-alist)))) | |||
(direct-deps (cl-loop for p in (package-desc-reqs pkg-desc) | |||
for name = (car p) | |||
when (or (assq name package-archive-contents) | |||
(assq name package-alist)) | |||
collect name)) | |||
(indirect-deps (unless (eq only 'direct) | |||
(delete-dups | |||
(cl-loop for p in direct-deps append | |||
(async-bytecomp--get-package-deps p)))))) | |||
(cl-case only | |||
(direct direct-deps) | |||
(separate (list direct-deps indirect-deps)) | |||
(indirect indirect-deps) | |||
(t (delete-dups (append direct-deps indirect-deps)))))) | |||
(defun async-bytecomp-get-allowed-pkgs () | |||
(when (and async-bytecomp-allowed-packages | |||
(listp async-bytecomp-allowed-packages)) | |||
(if package-archive-contents | |||
(cl-loop for p in async-bytecomp-allowed-packages | |||
when (assq p package-archive-contents) | |||
append (async-bytecomp--get-package-deps p) into reqs | |||
finally return | |||
(delete-dups | |||
(append async-bytecomp-allowed-packages reqs))) | |||
async-bytecomp-allowed-packages))) | |||
(defadvice package--compile (around byte-compile-async) | |||
(let ((cur-package (package-desc-name pkg-desc)) | |||
(pkg-dir (package-desc-dir pkg-desc))) | |||
(if (or (equal async-bytecomp-allowed-packages '(all)) | |||
(memq cur-package (async-bytecomp-get-allowed-pkgs))) | |||
(progn | |||
(when (eq cur-package 'async) | |||
(fmakunbound 'async-byte-recompile-directory)) | |||
;; Add to `load-path' the latest version of async and | |||
;; reload it when reinstalling async. | |||
(when (string= cur-package "async") | |||
(cl-pushnew pkg-dir load-path) | |||
(load "async-bytecomp")) | |||
;; `async-byte-recompile-directory' will add directory | |||
;; as needed to `load-path'. | |||
(async-byte-recompile-directory (package-desc-dir pkg-desc) t)) | |||
ad-do-it))) | |||
;;;###autoload | |||
(define-minor-mode async-bytecomp-package-mode | |||
"Byte compile asynchronously packages installed with package.el. | |||
Async compilation of packages can be controlled by | |||
`async-bytecomp-allowed-packages'." | |||
:group 'async | |||
:global t | |||
(if async-bytecomp-package-mode | |||
(ad-activate 'package--compile) | |||
(ad-deactivate 'package--compile))) | |||
;;;###autoload | |||
(defun async-byte-compile-file (file) | |||
"Byte compile Lisp code FILE asynchronously. | |||
Same as `byte-compile-file' but asynchronous." | |||
(interactive "fFile: ") | |||
(let ((call-back | |||
(lambda (&optional _ignore) | |||
(let ((bn (file-name-nondirectory file))) | |||
(if (file-exists-p async-byte-compile-log-file) | |||
(let ((buf (get-buffer-create byte-compile-log-buffer)) | |||
start) | |||
(with-current-buffer buf | |||
(goto-char (setq start (point-max))) | |||
(let ((inhibit-read-only t)) | |||
(insert-file-contents async-byte-compile-log-file) | |||
(compilation-mode)) | |||
(display-buffer buf) | |||
(delete-file async-byte-compile-log-file) | |||
(save-excursion | |||
(goto-char start) | |||
(if (re-search-forward "^.*:Error:" nil t) | |||
(message "Failed to compile `%s'" bn) | |||
(message "`%s' compiled asynchronously with warnings" bn))))) | |||
(message "`%s' compiled asynchronously with success" bn)))))) | |||
(async-start | |||
`(lambda () | |||
(require 'bytecomp) | |||
,(async-inject-variables "\\`load-path\\'") | |||
(let ((default-directory ,(file-name-directory file))) | |||
(add-to-list 'load-path default-directory) | |||
(byte-compile-file ,file) | |||
(when (get-buffer byte-compile-log-buffer) | |||
(setq error-data (with-current-buffer byte-compile-log-buffer | |||
(buffer-substring-no-properties (point-min) (point-max)))) | |||
(unless (string= error-data "") | |||
(with-temp-file ,async-byte-compile-log-file | |||
(erase-buffer) | |||
(insert error-data)))))) | |||
call-back))) | |||
(provide 'async-bytecomp) | |||
;;; async-bytecomp.el ends here |
@ -0,0 +1,6 @@ | |||
(define-package "async" "20190503.656" "Asynchronous processing in Emacs" 'nil :keywords | |||
'("async") | |||
:url "https://github.com/jwiegley/emacs-async") | |||
;; Local Variables: | |||
;; no-byte-compile: t | |||
;; End: |
@ -0,0 +1,408 @@ | |||
;;; async.el --- Asynchronous processing in Emacs -*- lexical-binding: t -*- | |||
;; Copyright (C) 2012-2016 Free Software Foundation, Inc. | |||
;; Author: John Wiegley <jwiegley@gmail.com> | |||
;; Created: 18 Jun 2012 | |||
;; Version: 1.9.3 | |||
;; Keywords: async | |||
;; X-URL: https://github.com/jwiegley/emacs-async | |||
;; This program is free software; you can redistribute it and/or | |||
;; modify it under the terms of the GNU General Public License as | |||
;; published by the Free Software Foundation; either version 2, or (at | |||
;; your option) any later version. | |||
;; This program is distributed in the hope that it will be useful, but | |||
;; WITHOUT ANY WARRANTY; without even the implied warranty of | |||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
;; General Public License for more details. | |||
;; You should have received a copy of the GNU General Public License | |||
;; along with GNU Emacs; see the file COPYING. If not, write to the | |||
;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |||
;; Boston, MA 02111-1307, USA. | |||
;;; Commentary: | |||
;; Adds the ability to call asynchronous functions and process with ease. See | |||
;; the documentation for `async-start' and `async-start-process'. | |||
;;; Code: | |||
(eval-when-compile (require 'cl-lib)) | |||
(defgroup async nil | |||
"Simple asynchronous processing in Emacs" | |||
:group 'emacs) | |||
(defcustom async-variables-noprops-function #'async--purecopy | |||
"Default function to remove text properties in variables." | |||
:group 'async | |||
:type 'function) | |||
(defvar async-debug nil) | |||
(defvar async-send-over-pipe t) | |||
(defvar async-in-child-emacs nil) | |||
(defvar async-callback nil) | |||
(defvar async-callback-for-process nil) | |||
(defvar async-callback-value nil) | |||
(defvar async-callback-value-set nil) | |||
(defvar async-current-process nil) | |||
(defvar async--procvar nil) | |||
(defun async--purecopy (object) | |||
"Remove text properties in OBJECT. | |||
Argument OBJECT may be a list or a string, if anything else it | |||
is returned unmodified." | |||
(cond ((stringp object) | |||
(substring-no-properties object)) | |||
((consp object) | |||
(cl-loop for elm in object | |||
;; A string. | |||
if (stringp elm) | |||
collect (substring-no-properties elm) | |||
else | |||
;; Proper lists. | |||
if (and (consp elm) (null (cdr (last elm)))) | |||
collect (async--purecopy elm) | |||
else | |||
;; Dotted lists. | |||
;; We handle here only dotted list where car and cdr | |||
;; are atoms i.e. (x . y) and not (x . (x . y)) or | |||
;; (x . (x y)) which should fit most cases. | |||
if (and (consp elm) (cdr (last elm))) | |||
collect (let ((key (car elm)) | |||
(val (cdr elm))) | |||
(cons (if (stringp key) | |||
(substring-no-properties key) | |||
key) | |||
(if (stringp val) | |||
(substring-no-properties val) | |||
val))) | |||
else | |||
collect elm)) | |||
(t object))) | |||
(defun async-inject-variables | |||
(include-regexp &optional predicate exclude-regexp noprops) | |||
"Return a `setq' form that replicates part of the calling environment. | |||
It sets the value for every variable matching INCLUDE-REGEXP and | |||
also PREDICATE. It will not perform injection for any variable | |||
matching EXCLUDE-REGEXP (if present) or representing a syntax-table | |||
i.e. ending by \"-syntax-table\". | |||
When NOPROPS is non nil it tries to strip out text properties of each | |||
variable's value with `async-variables-noprops-function'. | |||
It is intended to be used as follows: | |||
(async-start | |||
`(lambda () | |||
(require 'smtpmail) | |||
(with-temp-buffer | |||
(insert ,(buffer-substring-no-properties (point-min) (point-max))) | |||
;; Pass in the variable environment for smtpmail | |||
,(async-inject-variables \"\\`\\(smtpmail\\|\\(user-\\)?mail\\)-\") | |||
(smtpmail-send-it))) | |||
'ignore)" | |||
`(setq | |||
,@(let (bindings) | |||
(mapatoms | |||
(lambda (sym) | |||
(let* ((sname (and (boundp sym) (symbol-name sym))) | |||
(value (and sname (symbol-value sym)))) | |||
(when (and sname | |||
(or (null include-regexp) | |||
(string-match include-regexp sname)) | |||
(or (null exclude-regexp) | |||
(not (string-match exclude-regexp sname))) | |||
(not (string-match "-syntax-table\\'" sname))) | |||
(unless (or (stringp value) | |||
(memq value '(nil t)) | |||
(numberp value) | |||
(vectorp value)) | |||
(setq value `(quote ,value))) | |||
(when noprops | |||
(setq value (funcall async-variables-noprops-function | |||
value))) | |||
(when (or (null predicate) | |||
(funcall predicate sym)) | |||
(setq bindings (cons value bindings) | |||
bindings (cons sym bindings))))))) | |||
bindings))) | |||
(defalias 'async-inject-environment 'async-inject-variables) | |||
(defun async-handle-result (func result buf) | |||
(if (null func) | |||
(progn | |||
(set (make-local-variable 'async-callback-value) result) | |||
(set (make-local-variable 'async-callback-value-set) t)) | |||
(unwind-protect | |||
(if (and (listp result) | |||
(eq 'async-signal (nth 0 result))) | |||
(signal (car (nth 1 result)) | |||
(cdr (nth 1 result))) | |||
(funcall func result)) | |||
(unless async-debug | |||
(kill-buffer buf))))) | |||
(defun async-when-done (proc &optional _change) | |||
"Process sentinel used to retrieve the value from the child process." | |||
(when (eq 'exit (process-status proc)) | |||
(with-current-buffer (process-buffer proc) | |||
(let ((async-current-process proc)) | |||
(if (= 0 (process-exit-status proc)) | |||
(if async-callback-for-process | |||
(if async-callback | |||
(prog1 | |||
(funcall async-callback proc) | |||
(unless async-debug | |||
(kill-buffer (current-buffer)))) | |||
(set (make-local-variable 'async-callback-value) proc) | |||
(set (make-local-variable 'async-callback-value-set) t)) | |||
(goto-char (point-max)) | |||
(backward-sexp) | |||
(async-handle-result async-callback (read (current-buffer)) | |||
(current-buffer))) | |||
(set (make-local-variable 'async-callback-value) | |||
(list 'error | |||
(format "Async process '%s' failed with exit code %d" | |||
(process-name proc) (process-exit-status proc)))) | |||
(set (make-local-variable 'async-callback-value-set) t)))))) | |||
(defun async--receive-sexp (&optional stream) | |||
(let ((sexp (decode-coding-string (base64-decode-string | |||
(read stream)) 'utf-8-auto)) | |||
;; Parent expects UTF-8 encoded text. | |||
(coding-system-for-write 'utf-8-auto)) | |||
(if async-debug | |||
(message "Received sexp {{{%s}}}" (pp-to-string sexp))) | |||
(setq sexp (read sexp)) | |||
(if async-debug | |||
(message "Read sexp {{{%s}}}" (pp-to-string sexp))) | |||
(eval sexp))) | |||
(defun async--insert-sexp (sexp) | |||
(let (print-level | |||
print-length | |||
(print-escape-nonascii t) | |||
(print-circle t)) | |||
(prin1 sexp (current-buffer)) | |||
;; Just in case the string we're sending might contain EOF | |||
(encode-coding-region (point-min) (point-max) 'utf-8-auto) | |||
(base64-encode-region (point-min) (point-max) t) | |||
(goto-char (point-min)) (insert ?\") | |||
(goto-char (point-max)) (insert ?\" ?\n))) | |||
(defun async--transmit-sexp (process sexp) | |||
(with-temp-buffer | |||
(if async-debug | |||
(message "Transmitting sexp {{{%s}}}" (pp-to-string sexp))) | |||
(async--insert-sexp sexp) | |||
(process-send-region process (point-min) (point-max)))) | |||
(defun async-batch-invoke () | |||
"Called from the child Emacs process' command-line." | |||
;; Make sure 'message' and 'prin1' encode stuff in UTF-8, as parent | |||
;; process expects. | |||
(let ((coding-system-for-write 'utf-8-auto)) | |||
(setq async-in-child-emacs t | |||
debug-on-error async-debug) | |||
(if debug-on-error | |||
(prin1 (funcall | |||
(async--receive-sexp (unless async-send-over-pipe | |||
command-line-args-left)))) | |||
(condition-case err | |||
(prin1 (funcall | |||
(async--receive-sexp (unless async-send-over-pipe | |||
command-line-args-left)))) | |||
(error | |||
(prin1 (list 'async-signal err))))))) | |||
(defun async-ready (future) | |||
"Query a FUTURE to see if it is ready. | |||
I.e., if no blocking | |||
would result from a call to `async-get' on that FUTURE." | |||
(and (memq (process-status future) '(exit signal)) | |||
(let ((buf (process-buffer future))) | |||
(if (buffer-live-p buf) | |||
(with-current-buffer buf | |||
async-callback-value-set) | |||
t)))) | |||
(defun async-wait (future) | |||
"Wait for FUTURE to become ready." | |||
(while (not (async-ready future)) | |||
(sleep-for 0.05))) | |||
(defun async-get (future) | |||
"Get the value from process FUTURE when it is ready. | |||
FUTURE is returned by `async-start' or `async-start-process' when | |||
its FINISH-FUNC is nil." | |||
(and future (async-wait future)) | |||
(let ((buf (process-buffer future))) | |||
(when (buffer-live-p buf) | |||
(with-current-buffer buf | |||
(async-handle-result | |||
#'identity async-callback-value (current-buffer)))))) | |||
(defun async-message-p (value) | |||
"Return true of VALUE is an async.el message packet." | |||
(and (listp value) | |||
(plist-get value :async-message))) | |||
(defun async-send (&rest args) | |||
"Send the given messages to the asychronous Emacs PROCESS." | |||
(let ((args (append args '(:async-message t)))) | |||
(if async-in-child-emacs | |||
(if async-callback | |||
(funcall async-callback args)) | |||
(async--transmit-sexp (car args) (list 'quote (cdr args)))))) | |||
(defun async-receive () | |||
"Send the given messages to the asychronous Emacs PROCESS." | |||
(async--receive-sexp)) | |||
;;;###autoload | |||
(defun async-start-process (name program finish-func &rest program-args) | |||
"Start the executable PROGRAM asynchronously. See `async-start'. | |||
PROGRAM is passed PROGRAM-ARGS, calling FINISH-FUNC with the | |||
process object when done. If FINISH-FUNC is nil, the future | |||
object will return the process object when the program is | |||
finished. Set DEFAULT-DIRECTORY to change PROGRAM's current | |||
working directory." | |||
(let* ((buf (generate-new-buffer (concat "*" name "*"))) | |||
(proc (let ((process-connection-type nil)) | |||
(apply #'start-process name buf program program-args)))) | |||
(with-current-buffer buf | |||
(set (make-local-variable 'async-callback) finish-func) | |||
(set-process-sentinel proc #'async-when-done) | |||
(unless (string= name "emacs") | |||
(set (make-local-variable 'async-callback-for-process) t)) | |||
proc))) | |||
(defvar async-quiet-switch "-Q" | |||
"The Emacs parameter to use to call emacs without config. | |||
Can be one of \"-Q\" or \"-q\". | |||
Default is \"-Q\" but it is sometimes useful to use \"-q\" to have a | |||
enhanced config or some more variables loaded.") | |||
;;;###autoload | |||
(defun async-start (start-func &optional finish-func) | |||
"Execute START-FUNC (often a lambda) in a subordinate Emacs process. | |||
When done, the return value is passed to FINISH-FUNC. Example: | |||
(async-start | |||
;; What to do in the child process | |||
(lambda () | |||
(message \"This is a test\") | |||
(sleep-for 3) | |||
222) | |||
;; What to do when it finishes | |||
(lambda (result) | |||
(message \"Async process done, result should be 222: %s\" | |||
result))) | |||
If FINISH-FUNC is nil or missing, a future is returned that can | |||
be inspected using `async-get', blocking until the value is | |||
ready. Example: | |||
(let ((proc (async-start | |||
;; What to do in the child process | |||
(lambda () | |||
(message \"This is a test\") | |||
(sleep-for 3) | |||
222)))) | |||
(message \"I'm going to do some work here\") ;; .... | |||
(message \"Waiting on async process, result should be 222: %s\" | |||
(async-get proc))) | |||
If you don't want to use a callback, and you don't care about any | |||
return value from the child process, pass the `ignore' symbol as | |||
the second argument (if you don't, and never call `async-get', it | |||
will leave *emacs* process buffers hanging around): | |||
(async-start | |||
(lambda () | |||
(delete-file \"a remote file on a slow link\" nil)) | |||
'ignore) | |||
Note: Even when FINISH-FUNC is present, a future is still | |||
returned except that it yields no value (since the value is | |||
passed to FINISH-FUNC). Call `async-get' on such a future always | |||
returns nil. It can still be useful, however, as an argument to | |||
`async-ready' or `async-wait'." | |||
(let ((sexp start-func) | |||
;; Subordinate Emacs will send text encoded in UTF-8. | |||
(coding-system-for-read 'utf-8-auto)) | |||
(setq async--procvar | |||
(async-start-process | |||
"emacs" (file-truename | |||
(expand-file-name invocation-name | |||
invocation-directory)) | |||
finish-func | |||
async-quiet-switch "-l" | |||
;; Using `locate-library' ensure we use the right file | |||
;; when the .elc have been deleted. | |||
(locate-library "async") | |||
"-batch" "-f" "async-batch-invoke" | |||
(if async-send-over-pipe | |||
"<none>" | |||
(with-temp-buffer | |||
(async--insert-sexp (list 'quote sexp)) | |||
(buffer-string))))) | |||
(if async-send-over-pipe | |||
(async--transmit-sexp async--procvar (list 'quote sexp))) | |||
async--procvar)) | |||
(defmacro async-sandbox(func) | |||
"Evaluate FUNC in a separate Emacs process, synchronously." | |||
`(async-get (async-start ,func))) | |||
(defun async--fold-left (fn forms bindings) | |||
(let ((res forms)) | |||
(dolist (binding bindings) | |||
(setq res (funcall fn res | |||
(if (listp binding) | |||
binding | |||
(list binding))))) | |||
res)) | |||
(defmacro async-let (bindings &rest forms) | |||
"Implements `let', but each binding is established asynchronously. | |||
For example: | |||
(async-let ((x (foo)) | |||
(y (bar))) | |||
(message \"%s %s\" x y)) | |||
expands to ==> | |||
(async-start (foo) | |||
(lambda (x) | |||
(async-start (bar) | |||
(lambda (y) | |||
(message \"%s %s\" x y)))))" | |||
(declare (indent 1)) | |||
(async--fold-left | |||
(lambda (acc binding) | |||
(let ((fun (pcase (cadr binding) | |||
((and (pred functionp) f) f) | |||
(f `(lambda () ,f))))) | |||
`(async-start ,fun | |||
(lambda (,(car binding)) | |||
,acc)))) | |||
`(progn ,@forms) | |||
(reverse bindings))) | |||
(provide 'async) | |||
;;; async.el ends here |
@ -0,0 +1,408 @@ | |||
;;; dired-async.el --- Asynchronous dired actions -*- lexical-binding: t -*- | |||
;; Copyright (C) 2012-2016 Free Software Foundation, Inc. | |||
;; Authors: John Wiegley <jwiegley@gmail.com> | |||
;; Thierry Volpiatto <thierry.volpiatto@gmail.com> | |||
;; Keywords: dired async network | |||
;; X-URL: https://github.com/jwiegley/dired-async | |||
;; This program is free software; you can redistribute it and/or | |||
;; modify it under the terms of the GNU General Public License as | |||
;; published by the Free Software Foundation; either version 2, or (at | |||
;; your option) any later version. | |||
;; This program is distributed in the hope that it will be useful, but | |||
;; WITHOUT ANY WARRANTY; without even the implied warranty of | |||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
;; General Public License for more details. | |||
;; You should have received a copy of the GNU General Public License | |||
;; along with GNU Emacs; see the file COPYING. If not, write to the | |||
;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |||
;; Boston, MA 02111-1307, USA. | |||
;;; Commentary: | |||
;; This file provide a redefinition of `dired-create-file' function, | |||
;; performs copies, moves and all what is handled by `dired-create-file' | |||
;; in the background using a slave Emacs process, | |||
;; by means of the async.el module. | |||
;; To use it, put this in your .emacs: | |||
;; (dired-async-mode 1) | |||
;; This will enable async copy/rename etc... | |||
;; in dired and helm. | |||
;;; Code: | |||
(require 'cl-lib) | |||
(require 'dired-aux) | |||
(require 'async) | |||
(eval-when-compile | |||
(defvar async-callback)) | |||
(defgroup dired-async nil | |||
"Copy rename files asynchronously from dired." | |||
:group 'dired) | |||
(defcustom dired-async-env-variables-regexp | |||
"\\`\\(tramp-\\(default\\|connection\\|remote\\)\\|ange-ftp\\)-.*" | |||
"Variables matching this regexp will be loaded on Child Emacs." | |||
:type 'regexp | |||
:group 'dired-async) | |||
(defcustom dired-async-message-function 'dired-async-mode-line-message | |||
"Function to use to notify result when operation finish. | |||
Should take same args as `message'." | |||
:group 'dired-async | |||
:type 'function) | |||
(defcustom dired-async-log-file "/tmp/dired-async.log" | |||
"File use to communicate errors from Child Emacs to host Emacs." | |||
:group 'dired-async | |||
:type 'string) | |||
(defcustom dired-async-mode-lighter '(:eval | |||
(when (eq major-mode 'dired-mode) | |||
" Async")) | |||
"Mode line lighter used for `dired-async-mode'." | |||
:group 'dired-async | |||
:risky t | |||
:type 'sexp) | |||
(defface dired-async-message | |||
'((t (:foreground "yellow"))) | |||
"Face used for mode-line message." | |||
:group 'dired-async) | |||
(defface dired-async-failures | |||
'((t (:foreground "red"))) | |||
"Face used for mode-line message." | |||
:group 'dired-async) | |||
(defface dired-async-mode-message | |||
'((t (:foreground "Gold"))) | |||
"Face used for `dired-async--modeline-mode' lighter." | |||
:group 'dired-async) | |||
(define-minor-mode dired-async--modeline-mode | |||
"Notify mode-line that an async process run." | |||
:group 'dired-async | |||
:global t | |||
:lighter (:eval (propertize (format " [%s Async job(s) running]" | |||
(length (dired-async-processes))) | |||
'face 'dired-async-mode-message)) | |||
(unless dired-async--modeline-mode | |||
(let ((visible-bell t)) (ding)))) | |||
(defun dired-async-mode-line-message (text face &rest args) | |||
"Notify end of operation in `mode-line'." | |||
(message nil) | |||
(let ((mode-line-format (concat | |||
" " (propertize | |||
(if args | |||
(apply #'format text args) | |||
text) | |||
'face face)))) | |||
(force-mode-line-update) | |||
(sit-for 3) | |||
(force-mode-line-update))) | |||
(defun dired-async-processes () | |||
(cl-loop for p in (process-list) | |||
when (cl-loop for c in (process-command p) thereis | |||
(string= "async-batch-invoke" c)) | |||
collect p)) | |||
(defun dired-async-kill-process () | |||
(interactive) | |||
(let* ((processes (dired-async-processes)) | |||
(proc (car (last processes)))) | |||
(and proc (delete-process proc)) | |||
(unless (> (length processes) 1) | |||
(dired-async--modeline-mode -1)))) | |||
(defun dired-async-after-file-create (total operation failures skipped) | |||
"Callback function used for operation handled by `dired-create-file'." | |||
(unless (dired-async-processes) | |||
;; Turn off mode-line notification | |||
;; only when last process end. | |||
(dired-async--modeline-mode -1)) | |||
(when operation | |||
(if (file-exists-p dired-async-log-file) | |||
(progn | |||
(pop-to-buffer (get-buffer-create dired-log-buffer)) | |||
(goto-char (point-max)) | |||
(setq inhibit-read-only t) | |||
(insert "Error: ") | |||
(insert-file-contents dired-async-log-file) | |||
(special-mode) | |||
(shrink-window-if-larger-than-buffer) | |||
(delete-file dired-async-log-file)) | |||
(run-with-timer | |||
0.1 nil | |||
(lambda () | |||
;; First send error messages. | |||
(cond (failures | |||
(funcall dired-async-message-function | |||
"%s failed for %d of %d file%s -- See *Dired log* buffer" | |||
'dired-async-failures | |||
(car operation) (length failures) | |||
total (dired-plural-s total))) | |||
(skipped | |||
(funcall dired-async-message-function | |||
"%s: %d of %d file%s skipped -- See *Dired log* buffer" | |||
'dired-async-failures | |||
(car operation) (length skipped) total | |||
(dired-plural-s total)))) | |||
(when dired-buffers | |||
(cl-loop for (_f . b) in dired-buffers | |||
when (buffer-live-p b) | |||
do (with-current-buffer b | |||
(when (and (not (file-remote-p default-directory nil t)) | |||
(file-exists-p default-directory)) | |||
(revert-buffer nil t))))) | |||
;; Finally send the success message. | |||
(funcall dired-async-message-function | |||
"Asynchronous %s of %s on %s file%s done" | |||
'dired-async-message | |||
(car operation) (cadr operation) | |||
total (dired-plural-s total))))))) | |||
(defun dired-async-maybe-kill-ftp () | |||
"Return a form to kill ftp process in child emacs." | |||
(quote | |||
(progn | |||
(require 'cl-lib) | |||
(let ((buf (cl-loop for b in (buffer-list) | |||
thereis (and (string-match | |||
"\\`\\*ftp.*" | |||
(buffer-name b)) b)))) | |||
(when buf (kill-buffer buf)))))) | |||
(defvar overwrite-query) | |||
(defun dired-async-create-files (file-creator operation fn-list name-constructor | |||
&optional _marker-char) | |||
"Same as `dired-create-files' but asynchronous. | |||
See `dired-create-files' for the behavior of arguments." | |||
(setq overwrite-query nil) | |||
(let ((total (length fn-list)) | |||
failures async-fn-list skipped callback | |||
async-quiet-switch) | |||
(let (to) | |||
(dolist (from fn-list) | |||
(setq to (funcall name-constructor from)) | |||
(if (and (equal to from) | |||
(null (eq file-creator 'backup-file))) | |||
(progn | |||
(setq to nil) | |||
(dired-log "Cannot %s to same file: %s\n" | |||
(downcase operation) from))) | |||
(if (not to) | |||
(setq skipped (cons (dired-make-relative from) skipped)) | |||
(let* ((overwrite (and (null (eq file-creator 'backup-file)) | |||
(file-exists-p to))) | |||
(dired-overwrite-confirmed ; for dired-handle-overwrite | |||
(and overwrite | |||
(let ((help-form `(format "\ | |||
Type SPC or `y' to overwrite file `%s', | |||
DEL or `n' to skip to next, | |||
ESC or `q' to not overwrite any of the remaining files, | |||
`!' to overwrite all remaining files with no more questions." ,to))) | |||
(dired-query 'overwrite-query "Overwrite `%s'?" to))))) | |||
;; Handle the `dired-copy-file' file-creator specially | |||
;; When copying a directory to another directory or | |||
;; possibly to itself or one of its subdirectories. | |||
;; e.g "~/foo/" => "~/test/" | |||
;; or "~/foo/" =>"~/foo/" | |||
;; or "~/foo/ => ~/foo/bar/") | |||
;; In this case the 'name-constructor' have set the destination | |||
;; TO to "~/test/foo" because the old emacs23 behavior | |||
;; of `copy-directory' was to not create the subdirectory | |||
;; and instead copy the contents. | |||
;; With the new behavior of `copy-directory' | |||
;; (similar to the `cp' shell command) we don't | |||
;; need such a construction of the target directory, | |||
;; so modify the destination TO to "~/test/" instead of "~/test/foo/". | |||
(let ((destname (file-name-directory to))) | |||
(when (and (file-directory-p from) | |||
(file-directory-p to) | |||
(eq file-creator 'dired-copy-file)) | |||
(setq to destname)) | |||
;; If DESTNAME is a subdirectory of FROM, not a symlink, | |||
;; and the method in use is copying, signal an error. | |||
(and (eq t (car (file-attributes destname))) | |||
(eq file-creator 'dired-copy-file) | |||
(file-in-directory-p destname from) | |||
(error "Cannot copy `%s' into its subdirectory `%s'" | |||
from to))) | |||
(if overwrite | |||
(or (and dired-overwrite-confirmed | |||
(push (cons from to) async-fn-list)) | |||
(progn | |||
(push (dired-make-relative from) failures) | |||
(dired-log "%s `%s' to `%s' failed\n" | |||
operation from to))) | |||
(push (cons from to) async-fn-list))))) | |||
;; Fix tramp issue #80 with emacs-26, use "-q" only when needed. | |||
(setq async-quiet-switch | |||
(if (and (boundp 'tramp-cache-read-persistent-data) | |||
async-fn-list | |||
(cl-loop for (_from . to) in async-fn-list | |||
thereis (file-remote-p to))) | |||
"-q" "-Q")) | |||
;; When failures have been printed to dired log add the date at bob. | |||
(when (or failures skipped) (dired-log t)) | |||
;; When async-fn-list is empty that's mean only one file | |||
;; had to be copied and user finally answer NO. | |||
;; In this case async process will never start and callback | |||
;; will have no chance to run, so notify failures here. | |||
(unless async-fn-list | |||
(cond (failures | |||
(funcall dired-async-message-function | |||
"%s failed for %d of %d file%s -- See *Dired log* buffer" | |||
'dired-async-failures | |||
operation (length failures) | |||
total (dired-plural-s total))) | |||
(skipped | |||
(funcall dired-async-message-function | |||
"%s: %d of %d file%s skipped -- See *Dired log* buffer" | |||
'dired-async-failures | |||
operation (length skipped) total | |||
(dired-plural-s total))))) | |||
;; Setup callback. | |||
(setq callback | |||
(lambda (&optional _ignore) | |||
(dired-async-after-file-create | |||
total (list operation (length async-fn-list)) failures skipped) | |||
(when (string= (downcase operation) "rename") | |||
(cl-loop for (file . to) in async-fn-list | |||
for bf = (get-file-buffer file) | |||
for destp = (file-exists-p to) | |||
do (and bf destp | |||
(with-current-buffer bf | |||
(set-visited-file-name to t t)))))))) | |||
;; Start async process. | |||
(when async-fn-list | |||
(async-start `(lambda () | |||
(require 'cl-lib) (require 'dired-aux) (require 'dired-x) | |||
,(async-inject-variables dired-async-env-variables-regexp) | |||
(let ((dired-recursive-copies (quote always)) | |||
(dired-copy-preserve-time | |||
,dired-copy-preserve-time)) | |||
(setq overwrite-backup-query nil) | |||
;; Inline `backup-file' as long as it is not | |||
;; available in emacs. | |||
(defalias 'backup-file | |||
;; Same feature as "cp -f --backup=numbered from to" | |||
;; Symlinks are copied as file from source unlike | |||
;; `dired-copy-file' which is same as cp -d. | |||
;; Directories are omitted. | |||
(lambda (from to ok) | |||
(cond ((file-directory-p from) (ignore)) | |||
(t (let ((count 0)) | |||
(while (let ((attrs (file-attributes to))) | |||
(and attrs (null (nth 0 attrs)))) | |||
(cl-incf count) | |||
(setq to (concat (file-name-sans-versions to) | |||
(format ".~%s~" count))))) | |||
(condition-case err | |||
(copy-file from to ok dired-copy-preserve-time) | |||
(file-date-error | |||
(dired-log "Can't set date on %s:\n%s\n" from err))))))) | |||
;; Now run the FILE-CREATOR function on files. | |||
(cl-loop with fn = (quote ,file-creator) | |||
for (from . dest) in (quote ,async-fn-list) | |||
do (condition-case err | |||
(funcall fn from dest t) | |||
(file-error | |||
(dired-log "%s: %s\n" (car err) (cdr err))) | |||
nil)) | |||
(when (get-buffer dired-log-buffer) | |||
(dired-log t) | |||
(with-current-buffer dired-log-buffer | |||
(write-region (point-min) (point-max) | |||
,dired-async-log-file)))) | |||
,(dired-async-maybe-kill-ftp)) | |||
callback) | |||
;; Run mode-line notifications while process running. | |||
(dired-async--modeline-mode 1) | |||
(message "%s proceeding asynchronously..." operation)))) | |||
(defvar wdired-use-interactive-rename) | |||
(defun dired-async-wdired-do-renames (old-fn &rest args) | |||
;; Perhaps a better fix would be to ask for renaming BEFORE starting | |||
;; OLD-FN when `wdired-use-interactive-rename' is non-nil. For now | |||
;; just bind it to nil to ensure no questions will be asked between | |||
;; each rename. | |||
(let (wdired-use-interactive-rename) | |||
(apply old-fn args))) | |||
(defadvice wdired-do-renames (around wdired-async) | |||
(let (wdired-use-interactive-rename) | |||
ad-do-it)) | |||
(defadvice dired-create-files (around dired-async) | |||
(dired-async-create-files file-creator operation fn-list | |||
name-constructor marker-char)) | |||
;;;###autoload | |||
(define-minor-mode dired-async-mode | |||
"Do dired actions asynchronously." | |||
:group 'dired-async | |||
:lighter dired-async-mode-lighter | |||
:global t | |||
(if dired-async-mode | |||
(if (fboundp 'advice-add) | |||
(progn (advice-add 'dired-create-files :override #'dired-async-create-files) | |||
(advice-add 'wdired-do-renames :around #'dired-async-wdired-do-renames)) | |||
(ad-activate 'dired-create-files) | |||
(ad-activate 'wdired-do-renames)) | |||
(if (fboundp 'advice-remove) | |||
(progn (advice-remove 'dired-create-files #'dired-async-create-files) | |||
(advice-remove 'wdired-do-renames #'dired-async-wdired-do-renames)) | |||
(ad-deactivate 'dired-create-files) | |||
(ad-deactivate 'wdired-do-renames)))) | |||
(defmacro dired-async--with-async-create-files (&rest body) | |||
"Evaluate BODY with ‘dired-create-files’ set to ‘dired-async-create-files’." | |||
(declare (indent 0)) | |||
`(cl-letf (((symbol-function 'dired-create-files) #'dired-async-create-files)) | |||
,@body)) | |||
;;;###autoload | |||
(defun dired-async-do-copy (&optional arg) | |||
"Run ‘dired-do-copy’ asynchronously." | |||
(interactive "P") | |||
(dired-async--with-async-create-files | |||
(dired-do-copy arg))) | |||
;;;###autoload | |||
(defun dired-async-do-symlink (&optional arg) | |||
"Run ‘dired-do-symlink’ asynchronously." | |||
(interactive "P") | |||
(dired-async--with-async-create-files | |||
(dired-do-symlink arg))) | |||
;;;###autoload | |||
(defun dired-async-do-hardlink (&optional arg) | |||
"Run ‘dired-do-hardlink’ asynchronously." | |||
(interactive "P") | |||
(dired-async--with-async-create-files | |||
(dired-do-hardlink arg))) | |||
;;;###autoload | |||
(defun dired-async-do-rename (&optional arg) | |||
"Run ‘dired-do-rename’ asynchronously." | |||
(interactive "P") | |||
(dired-async--with-async-create-files | |||
(dired-do-rename arg))) | |||
(provide 'dired-async) | |||
;;; dired-async.el ends here |
@ -0,0 +1,73 @@ | |||
;;; smtpmail-async.el --- Send e-mail with smtpmail.el asynchronously -*- lexical-binding: t -*- | |||
;; Copyright (C) 2012-2016 Free Software Foundation, Inc. | |||
;; Author: John Wiegley <jwiegley@gmail.com> | |||
;; Created: 18 Jun 2012 | |||
;; Keywords: email async | |||
;; X-URL: https://github.com/jwiegley/emacs-async | |||
;; This program is free software; you can redistribute it and/or | |||
;; modify it under the terms of the GNU General Public License as | |||
;; published by the Free Software Foundation; either version 2, or (at | |||
;; your option) any later version. | |||
;; This program is distributed in the hope that it will be useful, but | |||
;; WITHOUT ANY WARRANTY; without even the implied warranty of | |||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
;; General Public License for more details. | |||
;; You should have received a copy of the GNU General Public License | |||
;; along with GNU Emacs; see the file COPYING. If not, write to the | |||
;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |||
;; Boston, MA 02111-1307, USA. | |||
;;; Commentary: | |||
;; Send e-mail with smtpmail.el asynchronously. To use: | |||
;; | |||
;; (require 'smtpmail-async) | |||
;; | |||
;; (setq send-mail-function 'async-smtpmail-send-it | |||
;; message-send-mail-function 'async-smtpmail-send-it) | |||
;; | |||
;; This assumes you already have smtpmail.el working. | |||
;;; Code: | |||
(defgroup smtpmail-async nil | |||
"Send e-mail with smtpmail.el asynchronously" | |||
:group 'smptmail) | |||
(require 'async) | |||
(require 'smtpmail) | |||
(require 'message) | |||
(defvar async-smtpmail-before-send-hook nil | |||
"Hook running in the child emacs in `async-smtpmail-send-it'. | |||
It is called just before calling `smtpmail-send-it'.") | |||
(defun async-smtpmail-send-it () | |||
(let ((to (message-field-value "To")) | |||
(buf-content (buffer-substring-no-properties | |||
(point-min) (point-max)))) | |||
(message "Delivering message to %s..." to) | |||
(async-start | |||
`(lambda () | |||
(require 'smtpmail) | |||
(with-temp-buffer | |||
(insert ,buf-content) | |||
(set-buffer-multibyte nil) | |||
;; Pass in the variable environment for smtpmail | |||
,(async-inject-variables | |||
"\\`\\(smtpmail\\|async-smtpmail\\|\\(user-\\)?mail\\)-\\|auth-sources\\|epg\\|nsm" | |||
nil "\\`\\(mail-header-format-function\\|smtpmail-address-buffer\\|mail-mode-abbrev-table\\)") | |||
(run-hooks 'async-smtpmail-before-send-hook) | |||
(smtpmail-send-it))) | |||
(lambda (&optional _ignore) | |||
(message "Delivering message to %s...done" to))))) | |||
(provide 'smtpmail-async) | |||
;;; smtpmail-async.el ends here |
@ -0,0 +1,71 @@ | |||
;;; auto-complete-autoloads.el --- automatically extracted autoloads | |||
;; | |||
;;; Code: | |||
(add-to-list 'load-path (directory-file-name | |||
(or (file-name-directory #$) (car load-path)))) | |||
;;;### (autoloads nil "auto-complete" "auto-complete.el" (0 0 0 0)) | |||
;;; Generated autoloads from auto-complete.el | |||
(autoload 'auto-complete "auto-complete" "\ | |||
Start auto-completion at current point. | |||
\(fn &optional SOURCES)" t nil) | |||
(autoload 'auto-complete-mode "auto-complete" "\ | |||
AutoComplete mode | |||
\(fn &optional ARG)" t nil) | |||
(defvar global-auto-complete-mode nil "\ | |||
Non-nil if Global Auto-Complete mode is enabled. | |||
See the `global-auto-complete-mode' command | |||
for a description of this minor mode. | |||
Setting this variable directly does not take effect; | |||
either customize it (see the info node `Easy Customization') | |||
or call the function `global-auto-complete-mode'.") | |||
(custom-autoload 'global-auto-complete-mode "auto-complete" nil) | |||
(autoload 'global-auto-complete-mode "auto-complete" "\ | |||
Toggle Auto-Complete mode in all buffers. | |||
With prefix ARG, enable Global Auto-Complete mode if ARG is positive; | |||
otherwise, disable it. If called from Lisp, enable the mode if | |||
ARG is omitted or nil. | |||
Auto-Complete mode is enabled in all buffers where | |||
`auto-complete-mode-maybe' would do it. | |||
See `auto-complete-mode' for more information on Auto-Complete mode. | |||
\(fn &optional ARG)" t nil) | |||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "auto-complete" '("auto-complete-mode" "ac-"))) | |||
;;;*** | |||
;;;### (autoloads nil "auto-complete-config" "auto-complete-config.el" | |||
;;;;;; (0 0 0 0)) | |||
;;; Generated autoloads from auto-complete-config.el | |||
(autoload 'ac-config-default "auto-complete-config" "\ | |||
\(fn)" nil nil) | |||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "auto-complete-config" '("ac-"))) | |||
;;;*** | |||
;;;### (autoloads nil nil ("auto-complete-pkg.el") (0 0 0 0)) | |||
;;;*** | |||
;; Local Variables: | |||
;; version-control: never | |||
;; no-byte-compile: t | |||
;; no-update-autoloads: t | |||
;; coding: utf-8 | |||
;; End: | |||
;;; auto-complete-autoloads.el ends here |
@ -0,0 +1,551 @@ | |||
;;; auto-complete-config.el --- auto-complete additional configuations | |||
;; Copyright (C) 2009, 2010 Tomohiro Matsuyama | |||
;; Author: Tomohiro Matsuyama <m2ym.pub@gmail.com> | |||
;; Keywords: convenience | |||
;; Version: 1.5.0 | |||
;; This program is free software; you can redistribute it and/or modify | |||
;; it under the terms of the GNU General Public License as published by | |||
;; the Free Software Foundation, either version 3 of the License, or | |||
;; (at your option) any later version. | |||
;; This program is distributed in the hope that it will be useful, | |||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
;; GNU General Public License for more details. | |||
;; You should have received a copy of the GNU General Public License | |||
;; along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
;;; Commentary: | |||
;; | |||
;;; Code: | |||
(require 'cl-lib) | |||
(require 'auto-complete) | |||
(declare-function semantic-analyze-current-context "semantic/analyze") | |||
(declare-function semantic-tag-class "semantic/tag") | |||
(declare-function semantic-tag-function-arguments "semantic/tag") | |||
(declare-function semantic-format-tag-type "semantic/format") | |||
(declare-function semantic-format-tag-name "semantic/format") | |||
(declare-function yas-expand-snippet "yasnippet") | |||
(declare-function oref "eieio" (obj slot)) | |||
;;;; Additional sources | |||
;; imenu | |||
(defvar ac-imenu-index nil) | |||
(ac-clear-variable-every-10-minutes 'ac-imenu-index) | |||
(defun ac-imenu-candidates () | |||
(cl-loop with i = 0 | |||
with stack = (progn | |||
(unless (local-variable-p 'ac-imenu-index) | |||
(make-local-variable 'ac-imenu-index)) | |||
(or ac-imenu-index | |||
(setq ac-imenu-index | |||
(ignore-errors | |||
(with-no-warnings | |||
(imenu--make-index-alist)))))) | |||
with result | |||
while (and stack (or (not (integerp ac-limit)) | |||
(< i ac-limit))) | |||
for node = (pop stack) | |||
if (consp node) | |||
do | |||
(let ((car (car node)) | |||
(cdr (cdr node))) | |||
(if (consp cdr) | |||
(mapc (lambda (child) | |||
(push child stack)) | |||
cdr) | |||
(when (and (stringp car) | |||
(string-match (concat "^" (regexp-quote ac-prefix)) car)) | |||
;; Remove extra characters | |||
(if (string-match "^.*\\(()\\|=\\|<>\\)$" car) | |||
(setq car (substring car 0 (match-beginning 1)))) | |||
(push car result) | |||
(cl-incf i)))) | |||
finally return (nreverse result))) | |||
(ac-define-source imenu | |||
'((depends imenu) | |||
(candidates . ac-imenu-candidates) | |||
(symbol . "s"))) | |||
;; gtags | |||
(defface ac-gtags-candidate-face | |||
'((t (:inherit ac-candidate-face :foreground "navy"))) | |||
"Face for gtags candidate" | |||
:group 'auto-complete) | |||
(defface ac-gtags-selection-face | |||
'((t (:inherit ac-selection-face :background "navy"))) | |||
"Face for the gtags selected candidate." | |||
:group 'auto-complete) | |||
(defun ac-gtags-candidate () | |||
(ignore-errors | |||
(split-string (shell-command-to-string (format "global -ciq %s" ac-prefix)) "\n"))) | |||
(ac-define-source gtags | |||
'((candidates . ac-gtags-candidate) | |||
(candidate-face . ac-gtags-candidate-face) | |||
(selection-face . ac-gtags-selection-face) | |||
(requires . 3) | |||
(symbol . "s"))) | |||
;; yasnippet | |||
(defface ac-yasnippet-candidate-face | |||
'((t (:inherit ac-candidate-face | |||
:background "sandybrown" :foreground "black"))) | |||
"Face for yasnippet candidate." | |||
:group 'auto-complete) | |||
(defface ac-yasnippet-selection-face | |||
'((t (:inherit ac-selection-face :background "coral3"))) | |||
"Face for the yasnippet selected candidate." | |||
:group 'auto-complete) | |||
(defun ac-yasnippet-table-hash (table) | |||
(cond | |||
((fboundp 'yas/snippet-table-hash) | |||
(yas/snippet-table-hash table)) | |||
((fboundp 'yas/table-hash) | |||
(yas/table-hash table)))) | |||
(defun ac-yasnippet-table-parent (table) | |||
(cond | |||
((fboundp 'yas/snippet-table-parent) | |||
(yas/snippet-table-parent table)) | |||
((fboundp 'yas/table-parent) | |||
(yas/table-parent table)))) | |||
(defun ac-yasnippet-candidate-1 (table) | |||
(with-no-warnings | |||
(let ((hashtab (ac-yasnippet-table-hash table)) | |||
(parent (ac-yasnippet-table-parent table)) | |||
candidates) | |||
(maphash (lambda (key value) | |||
(push key candidates)) | |||
hashtab) | |||
(setq candidates (all-completions ac-prefix (nreverse candidates))) | |||
(if parent | |||
(setq candidates | |||
(append candidates (ac-yasnippet-candidate-1 parent)))) | |||
candidates))) | |||
(defun ac-yasnippet-candidates () | |||
(with-no-warnings | |||
(cond (;; 0.8 onwards | |||
(fboundp 'yas-active-keys) | |||
(all-completions ac-prefix (yas-active-keys))) | |||
(;; >0.6.0 | |||
(fboundp 'yas/get-snippet-tables) | |||
(apply 'append (mapcar 'ac-yasnippet-candidate-1 | |||
(condition-case nil | |||
(yas/get-snippet-tables major-mode) | |||
(wrong-number-of-arguments | |||
(yas/get-snippet-tables))))) | |||
) | |||
(t | |||
(let ((table | |||
(if (fboundp 'yas/snippet-table) | |||
;; <0.6.0 | |||
(yas/snippet-table major-mode) | |||
;; 0.6.0 | |||
(yas/current-snippet-table)))) | |||
(if table | |||
(ac-yasnippet-candidate-1 table))))))) | |||
(ac-define-source yasnippet | |||
'((depends yasnippet) | |||
(candidates . ac-yasnippet-candidates) | |||
(action . yas/expand) | |||
(candidate-face . ac-yasnippet-candidate-face) | |||
(selection-face . ac-yasnippet-selection-face) | |||
(symbol . "a"))) | |||
;; semantic | |||
(defun ac-semantic-candidates (prefix) | |||
(with-no-warnings | |||
(delete "" ; semantic sometimes returns an empty string | |||
(mapcar (lambda (elem) | |||
(cons (semantic-tag-name elem) | |||
(semantic-tag-clone elem))) | |||
(ignore-errors | |||
(or (semantic-analyze-possible-completions | |||
(semantic-analyze-current-context)) | |||
(senator-find-tag-for-completion prefix))))))) | |||
(defun ac-semantic-doc (symbol) | |||
(with-no-warnings | |||
(let* ((proto (semantic-format-tag-summarize-with-file symbol nil t)) | |||
(doc (semantic-documentation-for-tag symbol)) | |||
(res proto)) | |||
(when doc | |||
(setq res (concat res "\n\n" doc))) | |||
res))) | |||
(defun ac-semantic-action () | |||
(when (and (boundp 'yas-minor-mode) yas-minor-mode) | |||
(let* ((tag (car (last (oref (semantic-analyze-current-context) prefix)))) | |||
(class (semantic-tag-class tag)) | |||
(args)) | |||
(when (eq class 'function) | |||
(setq args (semantic-tag-function-arguments tag)) | |||
(yas-expand-snippet | |||
(concat "(" | |||
(mapconcat | |||
(lambda (arg) | |||
(let ((arg-type (semantic-format-tag-type arg nil)) | |||
(arg-name (semantic-format-tag-name arg nil))) | |||
(concat "${" | |||
(if (string= arg-name "") | |||
arg-type | |||
(concat arg-type " " arg-name)) | |||
"}"))) | |||
args | |||
", ") | |||
")$0")))))) | |||
(ac-define-source semantic | |||
'((available . (or (require 'semantic-ia nil t) | |||
(require 'semantic/ia nil t))) | |||
(candidates . (ac-semantic-candidates ac-prefix)) | |||
(document . ac-semantic-doc) | |||
(action . ac-semantic-action) | |||
(prefix . cc-member) | |||
(requires . 0) | |||
(symbol . "m"))) | |||
(ac-define-source semantic-raw | |||
'((available . (or (require 'semantic-ia nil t) | |||
(require 'semantic/ia nil t))) | |||
(candidates . (ac-semantic-candidates ac-prefix)) | |||
(document . ac-semantic-doc) | |||
(action . ac-semantic-action) | |||
(symbol . "s"))) | |||
;; eclim | |||
(defun ac-eclim-candidates () | |||
(with-no-warnings | |||
(cl-loop for c in (eclim/java-complete) | |||
collect (nth 1 c)))) | |||
(ac-define-source eclim | |||
'((candidates . ac-eclim-candidates) | |||
(prefix . c-dot) | |||
(requires . 0) | |||
(symbol . "f"))) | |||
;; css | |||
;; Copied from company-css.el | |||
(defconst ac-css-property-alist | |||
;; see http://www.w3.org/TR/CSS21/propidx.html | |||
'(("azimuth" angle "left-side" "far-left" "left" "center-left" "center" | |||
"center-right" "right" "far-right" "right-side" "behind" "leftwards" | |||
"rightwards") | |||
("background" background-color background-image background-repeat | |||
background-attachment background-position) | |||
("background-attachment" "scroll" "fixed") | |||
("background-color" color "transparent") | |||
("background-image" uri "none") | |||
("background-position" percentage length "left" "center" "right" percentage | |||
length "top" "center" "bottom" "left" "center" "right" "top" "center" | |||
"bottom") | |||
("background-repeat" "repeat" "repeat-x" "repeat-y" "no-repeat") | |||
("border" border-width border-style border-color) | |||
("border-bottom" border) | |||
("border-bottom-color" border-color) | |||
("border-bottom-style" border-style) | |||
("border-bottom-width" border-width) | |||
("border-collapse" "collapse" "separate") | |||
("border-color" color "transparent") | |||
("border-left" border) | |||
("border-left-color" border-color) | |||
("border-left-style" border-style) | |||
("border-left-width" border-width) | |||
("border-right" border) | |||
("border-right-color" border-color) | |||
("border-right-style" border-style) | |||
("border-right-width" border-width) | |||
("border-spacing" length length) | |||
("border-style" border-style) | |||
("border-top" border) | |||
("border-top-color" border-color) | |||
("border-top-style" border-style) | |||
("border-top-width" border-width) | |||
("border-width" border-width) | |||
("bottom" length percentage "auto") | |||
("caption-side" "top" "bottom") | |||
("clear" "none" "left" "right" "both") | |||
("clip" shape "auto") | |||
("color" color) | |||
("content" "normal" "none" string uri counter "attr()" "open-quote" | |||
"close-quote" "no-open-quote" "no-close-quote") | |||
("counter-increment" identifier integer "none") | |||
("counter-reset" identifier integer "none") | |||
("cue" cue-before cue-after) | |||
("cue-after" uri "none") | |||
("cue-before" uri "none") | |||
("cursor" uri "*" "auto" "crosshair" "default" "pointer" "move" "e-resize" | |||
"ne-resize" "nw-resize" "n-resize" "se-resize" "sw-resize" "s-resize" | |||
"w-resize" "text" "wait" "help" "progress") | |||
("direction" "ltr" "rtl") | |||
("display" "inline" "block" "list-item" "run-in" "inline-block" "table" | |||
"inline-table" "table-row-group" "table-header-group" "table-footer-group" | |||
"table-row" "table-column-group" "table-column" "table-cell" | |||
"table-caption" "none") | |||
("elevation" angle "below" "level" "above" "higher" "lower") | |||
("empty-cells" "show" "hide") | |||
("float" "left" "right" "none") | |||
("font" font-style font-variant font-weight font-size "/" line-height | |||
font-family "caption" "icon" "menu" "message-box" "small-caption" | |||
"status-bar") | |||
("font-family" family-name generic-family) | |||
("font-size" absolute-size relative-size length percentage) | |||
("font-style" "normal" "italic" "oblique") | |||
("font-variant" "normal" "small-caps") | |||
("font-weight" "normal" "bold" "bolder" "lighter" "100" "200" "300" "400" | |||
"500" "600" "700" "800" "900") | |||
("height" length percentage "auto") | |||
("left" length percentage "auto") | |||
("letter-spacing" "normal" length) | |||
("line-height" "normal" number length percentage) | |||
("list-style" list-style-type list-style-position list-style-image) | |||
("list-style-image" uri "none") | |||
("list-style-position" "inside" "outside") | |||
("list-style-type" "disc" "circle" "square" "decimal" "decimal-leading-zero" | |||
"lower-roman" "upper-roman" "lower-greek" "lower-latin" "upper-latin" | |||
"armenian" "georgian" "lower-alpha" "upper-alpha" "none") | |||
("margin" margin-width) | |||
("margin-bottom" margin-width) | |||
("margin-left" margin-width) | |||
("margin-right" margin-width) | |||
("margin-top" margin-width) | |||
("max-height" length percentage "none") | |||
("max-width" length percentage "none") | |||
("min-height" length percentage) | |||
("min-width" length percentage) | |||
("orphans" integer) | |||
("outline" outline-color outline-style outline-width) | |||
("outline-color" color "invert") | |||
("outline-style" border-style) | |||
("outline-width" border-width) | |||
("overflow" "visible" "hidden" "scroll" "auto") | |||
("padding" padding-width) | |||
("padding-bottom" padding-width) | |||
("padding-left" padding-width) | |||
("padding-right" padding-width) | |||
("padding-top" padding-width) | |||
("page-break-after" "auto" "always" "avoid" "left" "right") | |||
("page-break-before" "auto" "always" "avoid" "left" "right") | |||
("page-break-inside" "avoid" "auto") | |||
("pause" time percentage) | |||
("pause-after" time percentage) | |||
("pause-before" time percentage) | |||
("pitch" frequency "x-low" "low" "medium" "high" "x-high") | |||
("pitch-range" number) | |||
("play-during" uri "mix" "repeat" "auto" "none") | |||
("position" "static" "relative" "absolute" "fixed") | |||
("quotes" string string "none") | |||
("richness" number) | |||
("right" length percentage "auto") | |||
("speak" "normal" "none" "spell-out") | |||
("speak-header" "once" "always") | |||
("speak-numeral" "digits" "continuous") | |||
("speak-punctuation" "code" "none") | |||
("speech-rate" number "x-slow" "slow" "medium" "fast" "x-fast" "faster" | |||
"slower") | |||
("stress" number) | |||
("table-layout" "auto" "fixed") | |||
("text-align" "left" "right" "center" "justify") | |||
("text-decoration" "none" "underline" "overline" "line-through" "blink") | |||
("text-indent" length percentage) | |||
("text-transform" "capitalize" "uppercase" "lowercase" "none") | |||
("top" length percentage "auto") | |||
("unicode-bidi" "normal" "embed" "bidi-override") | |||
("vertical-align" "baseline" "sub" "super" "top" "text-top" "middle" | |||
"bottom" "text-bottom" percentage length) | |||
("visibility" "visible" "hidden" "collapse") | |||
("voice-family" specific-voice generic-voice "*" specific-voice | |||
generic-voice) | |||
("volume" number percentage "silent" "x-soft" "soft" "medium" "loud" | |||
"x-loud") | |||
("white-space" "normal" "pre" "nowrap" "pre-wrap" "pre-line") | |||
("widows" integer) | |||
("width" length percentage "auto") | |||
("word-spacing" "normal" length) | |||
("z-index" "auto" integer)) | |||
"A list of CSS properties and their possible values.") | |||
(defconst ac-css-value-classes | |||
'((absolute-size "xx-small" "x-small" "small" "medium" "large" "x-large" | |||
"xx-large") | |||
(border-style "none" "hidden" "dotted" "dashed" "solid" "double" "groove" | |||
"ridge" "inset" "outset") | |||
(color "aqua" "black" "blue" "fuchsia" "gray" "green" "lime" "maroon" "navy" | |||
"olive" "orange" "purple" "red" "silver" "teal" "white" "yellow" | |||
"rgb") | |||
(counter "counter") | |||
(family-name "Courier" "Helvetica" "Times") | |||
(generic-family "serif" "sans-serif" "cursive" "fantasy" "monospace") | |||
(generic-voice "male" "female" "child") | |||
(margin-width "auto") ;; length percentage | |||
(relative-size "larger" "smaller") | |||
(shape "rect") | |||
(uri "url")) | |||
"A list of CSS property value classes and their contents.") | |||
(defconst ac-css-pseudo-classes | |||
'("active" "after" "before" "first" "first-child" "first-letter" "first-line" | |||
"focus" "hover" "lang" "left" "link" "right" "visited") | |||
"Identifiers for CSS pseudo-elements and pseudo-classes.") | |||
(defvar ac-css-property nil | |||
"Current editing property.") | |||
(defun ac-css-prefix () | |||
(when (save-excursion (re-search-backward "\\_<\\(.+?\\)\\_>\\s *:[^;]*\\=" nil t)) | |||
(setq ac-css-property (match-string 1)) | |||
(or (ac-prefix-symbol) (point)))) | |||
(defun ac-css-property-candidates () | |||
(let ((list (assoc-default ac-css-property ac-css-property-alist))) | |||
(if list | |||
(cl-loop with seen | |||
with value | |||
while (setq value (pop list)) | |||
if (symbolp value) | |||
do (unless (memq value seen) | |||
(push value seen) | |||
(setq list | |||
(append list | |||
(or (assoc-default value ac-css-value-classes) | |||
(assoc-default (symbol-name value) ac-css-property-alist))))) | |||
else collect value) | |||
ac-css-pseudo-classes))) | |||
(ac-define-source css-property | |||
'((candidates . ac-css-property-candidates) | |||
(prefix . ac-css-prefix) | |||
(requires . 0))) | |||
;; slime | |||
(ac-define-source slime | |||
'((depends slime) | |||
(candidates . (car (slime-simple-completions ac-prefix))) | |||
(symbol . "s") | |||
(cache))) | |||
;; ghc-mod | |||
(ac-define-source ghc-mod | |||
'((depends ghc) | |||
(candidates . (ghc-select-completion-symbol)) | |||
(symbol . "s") | |||
(cache))) | |||
;;;; Not maintained sources | |||
;; ropemacs | |||
(defvar ac-ropemacs-loaded nil) | |||
(defun ac-ropemacs-require () | |||
(with-no-warnings | |||
(unless ac-ropemacs-loaded | |||
(pymacs-load "ropemacs" "rope-") | |||
(if (boundp 'ropemacs-enable-autoimport) | |||
(setq ropemacs-enable-autoimport t)) | |||
(setq ac-ropemacs-loaded t)))) | |||
(defun ac-ropemacs-setup () | |||
(ac-ropemacs-require) | |||
;(setq ac-sources (append (list 'ac-source-ropemacs) ac-sources)) | |||
(setq ac-omni-completion-sources '(("\\." ac-source-ropemacs)))) | |||
(defun ac-ropemacs-initialize () | |||
(autoload 'pymacs-apply "pymacs") | |||
(autoload 'pymacs-call "pymacs") | |||
(autoload 'pymacs-eval "pymacs" nil t) | |||
(autoload 'pymacs-exec "pymacs" nil t) | |||
(autoload 'pymacs-load "pymacs" nil t) | |||
(add-hook 'python-mode-hook 'ac-ropemacs-setup) | |||
t) | |||
(defvar ac-ropemacs-completions-cache nil) | |||
(defvar ac-source-ropemacs | |||
'((init | |||
. (lambda () | |||
(setq ac-ropemacs-completions-cache | |||
(mapcar | |||
(lambda (completion) | |||
(concat ac-prefix completion)) | |||
(ignore-errors | |||
(rope-completions)))))) | |||
(candidates . ac-ropemacs-completions-cache))) | |||
;; rcodetools | |||
(defvar ac-source-rcodetools | |||
'((init . (lambda () | |||
(require 'rcodetools) | |||
(condition-case x | |||
(save-excursion | |||
(rct-exec-and-eval rct-complete-command-name "--completion-emacs-icicles")) | |||
(error) (setq rct-method-completion-table nil)))) | |||
(candidates . (lambda () | |||
(all-completions | |||
ac-prefix | |||
(mapcar | |||
(lambda (completion) | |||
(replace-regexp-in-string "\t.*$" "" (car completion))) | |||
rct-method-completion-table)))))) | |||
;;;; Default settings | |||
(defun ac-common-setup () | |||
;(add-to-list 'ac-sources 'ac-source-filename) | |||
) | |||
(defun ac-emacs-lisp-mode-setup () | |||
(setq ac-sources (append '(ac-source-features ac-source-functions ac-source-yasnippet ac-source-variables ac-source-symbols) ac-sources))) | |||
(defun ac-cc-mode-setup () | |||
(setq ac-sources (append '(ac-source-yasnippet ac-source-gtags) ac-sources))) | |||
(defun ac-ruby-mode-setup ()) | |||
(defun ac-css-mode-setup () | |||
(setq ac-sources (append '(ac-source-css-property) ac-sources))) | |||
;;;###autoload | |||
(defun ac-config-default () | |||
(setq-default ac-sources '(ac-source-abbrev ac-source-dictionary ac-source-words-in-same-mode-buffers)) | |||
(add-hook 'emacs-lisp-mode-hook 'ac-emacs-lisp-mode-setup) | |||
(add-hook 'c-mode-common-hook 'ac-cc-mode-setup) | |||
(add-hook 'ruby-mode-hook 'ac-ruby-mode-setup) | |||
(add-hook 'css-mode-hook 'ac-css-mode-setup) | |||
(add-hook 'auto-complete-mode-hook 'ac-common-setup) | |||
(global-auto-complete-mode t)) | |||
(provide 'auto-complete-config) | |||
;;; auto-complete-config.el ends here |
@ -0,0 +1,6 @@ | |||
(define-package "auto-complete" "20170125.245" "Auto Completion for GNU Emacs" | |||
'((popup "0.5.0") | |||
(cl-lib "0.5"))) | |||
;; Local Variables: | |||
;; no-byte-compile: t | |||
;; End: |
@ -0,0 +1,72 @@ | |||
abort | |||
abs | |||
abstract | |||
accept | |||
access | |||
aliased | |||
all | |||
and | |||
array | |||
at | |||
begin | |||
body | |||
case | |||
constant | |||
declare | |||
delay | |||
delta | |||
digits | |||
do | |||
else | |||
elsif | |||
end | |||
entry | |||
exception | |||
exit | |||
for | |||
function | |||
generic | |||
goto | |||
if | |||
in | |||
interface | |||
is | |||
limited | |||
loop | |||
mod | |||
new | |||
not | |||
null | |||
of | |||
or | |||
others | |||
out | |||
overriding | |||
package | |||
pragma | |||
private | |||
procedure | |||
protected | |||
raise | |||
range | |||
record | |||
rem | |||
renames | |||
requeue | |||
return | |||
reverse | |||
select | |||
separate | |||
subtype | |||
synchronized | |||
tagged | |||
task | |||
terminate | |||
then | |||
type | |||
until | |||
use | |||
when | |||
while | |||
with | |||
xor |
@ -0,0 +1,99 @@ | |||
alignas | |||
alignof | |||
and | |||
and_eq | |||
asm | |||
auto | |||
bitand | |||
bitor | |||
bool | |||
break | |||
case | |||
catch | |||
char | |||
char16_t | |||
char32_t | |||
class | |||
compl | |||
concept | |||
const | |||
const_cast | |||
constexpr | |||
continue | |||
decltype | |||
default | |||
define | |||
defined | |||
delete | |||
do | |||
double | |||
dynamic_cast | |||
elif | |||
else | |||
endif | |||
enum | |||
error | |||
explicit | |||
export | |||
extern | |||
false | |||
final | |||
float | |||
for | |||
friend | |||
goto | |||
if | |||
ifdef | |||
ifndef | |||
include | |||
inline | |||
int | |||
line | |||
long | |||
mutable | |||
namespace | |||
new | |||
noexcept | |||
not | |||
not_eq | |||
nullptr | |||
operator | |||
or | |||
or_eq | |||
override | |||
pragma | |||
_Pragma | |||
private | |||
protected | |||
public | |||
register | |||
reinterpret_cast | |||
requires | |||
return | |||
short | |||
signed | |||
sizeof | |||
static | |||
static_assert | |||
static_cast | |||
struct | |||
switch | |||
template | |||
this | |||
thread_local | |||
throw | |||
true | |||
try | |||
typedef | |||
typeid | |||
typename | |||
union | |||
unsigned | |||
using | |||
virtual | |||
void | |||
volatile | |||
wchar_t | |||
while | |||
xor | |||
xor_eq |
@ -0,0 +1,55 @@ | |||
auto | |||
_Alignas | |||
_Alignof | |||
_Atomic | |||
_Bool | |||
break | |||
case | |||
char | |||
_Complex | |||
const | |||
continue | |||
default | |||
define | |||
defined | |||
do | |||
double | |||
elif | |||
else | |||
endif | |||
enum | |||
error | |||
extern | |||
float | |||
for | |||
goto | |||
_Generic | |||
if | |||
ifdef | |||
ifndef | |||
_Imaginary | |||
include | |||
inline | |||
int | |||
line | |||
long | |||
_Noreturn | |||
pragma | |||
register | |||
restrict | |||
return | |||
short | |||
signed | |||
sizeof | |||
static | |||
struct | |||
switch | |||
_Static_assert | |||
typedef | |||
_Thread_local | |||
undef | |||
union | |||
unsigned | |||
void | |||
volatile | |||
while |
@ -0,0 +1,231 @@ | |||
# OCaml 3.12.1 | |||
# Keywords | |||
and | |||
as | |||
assert | |||
begin | |||
class | |||
constraint | |||
do | |||
done | |||
downto | |||
else | |||
end | |||
exception | |||
external | |||
false | |||
for | |||
fun | |||
function | |||
functor | |||
if | |||
in | |||
include | |||
inherit | |||
initializer | |||
lazy | |||
let | |||
match | |||
method | |||
module | |||
mutable | |||
new | |||
object | |||
of | |||
open | |||
or | |||
private | |||
rec | |||
sig | |||
struct | |||
then | |||
to | |||
true | |||
try | |||
type | |||
val | |||
virtual | |||
when | |||
while | |||
with | |||
# Pervasives | |||
! | |||
!= | |||
& | |||
&& | |||
* | |||
** | |||
*. | |||
+ | |||
+. | |||
- | |||
-. | |||
/ | |||
/. | |||
:= | |||
< | |||
<= | |||
<> | |||
= | |||
== | |||
> | |||
>= | |||
@ | |||
FP_infinite | |||
FP_nan | |||
FP_normal | |||
FP_subnormal | |||
FP_zero | |||
LargeFile | |||
Open_append | |||
Open_binary | |||
Open_creat | |||
Open_nonblock | |||
Open_rdonly | |||
Open_text | |||
Open_trunc | |||
Open_wronly | |||
Oupen_excl | |||
^ | |||
^^ | |||
abs | |||
abs_float | |||
acos | |||
asin | |||
asr | |||
at_exit | |||
atan | |||
atan2 | |||
bool_of_string | |||
ceil | |||
char_of_int | |||
classify_float | |||
close_in | |||
close_in_noerr | |||
close_out | |||
close_out_noerr | |||
compare | |||
cos | |||
cosh | |||
decr | |||
do_at_exit | |||
epsilon_float | |||
exit | |||
exp | |||
expm1 | |||
failwith | |||
float | |||
float_of_int | |||
float_of_string | |||
floor | |||
flush | |||
flush_all | |||
format | |||
format4 | |||
format_of_string | |||
fpclass | |||
frexp | |||
fst | |||
ignore | |||
in_channel | |||
in_channel_length | |||
incr | |||
infinity | |||
input | |||
input_binary_int | |||
input_byte | |||
input_char | |||
input_line | |||
input_value | |||
int_of_char | |||
int_of_float | |||
int_of_string | |||
invalid_arg | |||
land | |||
ldexp | |||
lnot | |||
log | |||
log10 | |||
log1p | |||
lor | |||
lsl | |||
lsr | |||
lxor | |||
max | |||
max_float | |||
max_int | |||
min | |||
min_float | |||
min_int | |||
mod | |||
mod_float | |||
modf | |||
nan | |||
neg_infinity | |||
not | |||
open_flag | |||
open_in | |||
open_in_bin | |||
open_in_gen | |||
open_out | |||
open_out_bin | |||
open_out_gen | |||
or | |||
out_channel | |||
out_channel_length | |||
output | |||
output_binary_int | |||
output_byte | |||
output_char | |||
output_string | |||
output_value | |||
pos_in | |||
pos_out | |||
pred | |||
prerr_char | |||
prerr_endline | |||
prerr_float | |||
prerr_int | |||
prerr_newline | |||
prerr_string | |||
print_char | |||
print_endline | |||
print_float | |||
print_int | |||
print_newline | |||
print_string | |||
raise | |||
read_float | |||
read_int | |||
read_line | |||
really_input | |||
ref | |||
seek_in | |||
seek_out | |||
set_binary_mode_in | |||
set_binary_mode_out | |||
sin | |||
sinh | |||
snd | |||
sqrt | |||
stderr | |||
stdin | |||
stdout | |||
string_of_bool | |||
string_of_float | |||
string_of_format | |||
string_of_int | |||
succ | |||
tan | |||
tanh | |||
truncate | |||
unsafe_really_input | |||
valid_float_lexem | |||
|| | |||
~ | |||
~+ | |||
~+. | |||
~- | |||
~-. |
@ -0,0 +1,580 @@ | |||
*agent* | |||
*allow-unresolved-vars* | |||
*assert* | |||
*clojure-version* | |||
*command-line-args* | |||
*compile-files* | |||
*compile-path* | |||
*compiler-options* | |||
*data-readers* | |||
*default-data-reader-fn* | |||
*err* | |||
*file* | |||
*flush-on-newline* | |||
*fn-loader* | |||
*in* | |||
*math-context* | |||
*ns* | |||
*out* | |||
*print-dup* | |||
*print-length* | |||
*print-level* | |||
*print-meta* | |||
*print-readably* | |||
*read-eval* | |||
*source-path* | |||
*unchecked-math* | |||
*use-context-classloader* | |||
*verbose-defrecords* | |||
*warn-on-reflection* | |||
->ArrayChunk | |||
->Vec | |||
->VecNode | |||
->VecSeq | |||
-cache-protocol-fn | |||
-reset-methods | |||
accessor | |||
aclone | |||
add-classpath | |||
add-watch | |||
agent | |||
agent-error | |||
agent-errors | |||
aget | |||
alength | |||
alias | |||
all-ns | |||
alter | |||
alter-meta! | |||
alter-var-root | |||
amap | |||
ancestors | |||
and | |||
apply | |||
areduce | |||
array-map | |||
as-> | |||
aset | |||
aset-boolean | |||
aset-byte | |||
aset-char | |||
aset-double | |||
aset-float | |||
aset-int | |||
aset-long | |||
aset-short | |||
assert | |||
assoc | |||
assoc! | |||
assoc-in | |||
associative? | |||
atom | |||
await | |||
await-for | |||
await1 | |||
bases | |||
bean | |||
bigdec | |||
bigint | |||
biginteger | |||
binding | |||
bit-and | |||
bit-and-not | |||
bit-clear | |||
bit-flip | |||
bit-not | |||
bit-or | |||
bit-set | |||
bit-shift-left | |||
bit-shift-right | |||
bit-test | |||
bit-xor | |||
boolean | |||
boolean-array | |||
booleans | |||
bound-fn | |||
bound-fn* | |||
bound? | |||
butlast | |||
byte | |||
byte-array | |||
bytes | |||
case | |||
cast | |||
char | |||
char-array | |||
char-escape-string | |||
char-name-string | |||
char? | |||
chars | |||
chunk | |||
chunk-append | |||
chunk-buffer | |||
chunk-cons | |||
chunk-first | |||
chunk-next | |||
chunk-rest | |||
chunked-seq? | |||
class | |||
class? | |||
clear-agent-errors | |||
clojure-version | |||
coll? | |||
comment | |||
commute | |||
comp | |||
comparator | |||
compare | |||
compare-and-set! | |||
compile | |||
complement | |||
concat | |||
cond | |||
cond-> | |||
cond->> | |||
condp | |||
conj | |||
conj! | |||
cons | |||
constantly | |||
construct-proxy | |||
contains? | |||
count | |||
counted? | |||
create-ns | |||
create-struct | |||
cycle | |||
dec | |||
dec' | |||
decimal? | |||
declare | |||
default-data-readers | |||
definline | |||
definterface | |||
defmacro | |||
defmethod | |||
defmulti | |||
defn | |||
defn- | |||
defonce | |||
defprotocol | |||
defrecord | |||
defstruct | |||
deftype | |||
delay | |||
delay? | |||
deliver | |||
denominator | |||
deref | |||
derive | |||
descendants | |||
destructure | |||
disj | |||
disj! | |||
dissoc | |||
dissoc! | |||
distinct | |||
distinct? | |||
doall | |||
doc | |||
dorun | |||
doseq | |||
dosync | |||
dotimes | |||
doto | |||
double | |||
double-array | |||
doubles | |||
drop | |||
drop-last | |||
drop-while | |||
dtype | |||
empty | |||
empty? | |||
ensure | |||
enumeration-seq | |||
error-handler | |||
error-mode | |||
eval | |||
even? | |||
every-pred | |||
every? | |||
ex-data | |||
ex-info | |||
extend | |||
extend-class | |||
extend-protocol | |||
extend-type | |||
extenders | |||
extends? | |||
false? | |||
ffirst | |||
file-seq | |||
filter | |||
filterv | |||
find | |||
find-doc | |||
find-keyword | |||
find-ns | |||
find-protocol-impl | |||
find-protocol-method | |||
find-var | |||
first | |||
flatten | |||
float | |||
float-array | |||
float? | |||
floats | |||
flush | |||
fn | |||
fn? | |||
fnext | |||
fnil | |||
for | |||
force | |||
format | |||
frequencies | |||
future | |||
future-call | |||
future-cancel | |||
future-cancelled? | |||
future-done? | |||
future? | |||
gen-class | |||
gen-interface | |||
gensym | |||
get | |||
get-in | |||
get-method | |||
get-proxy-class | |||
get-thread-bindings | |||
get-validator | |||
group-by | |||
hash | |||
hash-combine | |||
hash-map | |||
hash-set | |||
identical? | |||
identity | |||
if-let | |||
if-not | |||
ifn? | |||
import | |||
in-ns | |||
inc | |||
inc' | |||
init-proxy | |||
instance? | |||
int | |||
int-array | |||
integer? | |||
interleave | |||
intern | |||
interpose | |||
into | |||
into-array | |||
ints | |||
io! | |||
isa? | |||
iterate | |||
iterator-seq | |||
juxt | |||
keep | |||
keep-indexed | |||
key | |||
keys | |||
keyword | |||
keyword? | |||
last | |||
lazy-cat | |||
lazy-seq | |||
let | |||
letfn | |||
line-seq | |||
list | |||
list* | |||
list? | |||
load | |||
load-file | |||
load-reader | |||
load-string | |||
loaded-libs | |||
locking | |||
long | |||
long-array | |||
longs | |||
loop | |||
macroexpand | |||
macroexpand-1 | |||
make-array | |||
make-hierarchy | |||
map | |||
map-indexed | |||
map? | |||
mapcat | |||
mapv | |||
max | |||
max-key | |||
memfn | |||
memoize | |||
merge | |||
merge-with | |||
meta | |||
method-sig | |||
methods | |||
min | |||
min-key | |||
mod | |||
munge | |||
name | |||
namespace | |||
namespace-munge | |||
neg? | |||
newline | |||
next | |||
nfirst | |||
nil? | |||
nnext | |||
not | |||
not-any? | |||
not-empty | |||
not-every? | |||
not= | |||
ns | |||
ns-aliases | |||
ns-imports | |||
ns-interns | |||
ns-map | |||
ns-name | |||
ns-publics | |||
ns-refers | |||
ns-resolve | |||
ns-unalias | |||
ns-unmap | |||
nth | |||
nthnext | |||
nthrest | |||
num | |||
number? | |||
numerator | |||
object-array | |||
odd? | |||
or | |||
parents | |||
partial | |||
partition | |||
partition-all | |||
partition-by | |||
pcalls | |||
peek | |||
persistent! | |||
pmap | |||
pop | |||
pop! | |||
pop-thread-bindings | |||
pos? | |||
pr | |||
pr-str | |||
prefer-method | |||
prefers | |||
primitives-classnames | |||
print-ctor | |||
print-dup | |||
print-method | |||
print-namespace-doc | |||
print-simple | |||
print-str | |||
printf | |||
println | |||
println-str | |||
prn | |||
prn-str | |||
promise | |||
proxy | |||
proxy-call-with-super | |||
proxy-mappings | |||
proxy-name | |||
proxy-super | |||
push-thread-bindings | |||
pvalues | |||
quot | |||
rand | |||
rand-int | |||
rand-nth | |||
range | |||
ratio? | |||
rational? | |||
rationalize | |||
re-find | |||
re-groups | |||
re-matcher | |||
re-matches | |||
re-pattern | |||
re-seq | |||
read | |||
read-line | |||
read-string | |||
realized? | |||
reduce | |||
reduce-kv | |||
reduced | |||
reduced? | |||
reductions | |||
ref | |||
ref-history-count | |||
ref-max-history | |||
ref-min-history | |||
ref-set | |||
refer | |||
refer-clojure | |||
reify | |||
release-pending-sends | |||
rem | |||
remove | |||
remove-all-methods | |||
remove-method | |||
remove-ns | |||
remove-watch | |||
repeat | |||
repeatedly | |||
replace | |||
replicate | |||
require | |||
reset! | |||
reset-meta! | |||
resolve | |||
rest | |||
restart-agent | |||
resultset-seq | |||
reverse | |||
reversible? | |||
rseq | |||
rsubseq | |||
satisfies? | |||
second | |||
select-keys | |||
send | |||
send-off | |||
send-via | |||
seq | |||
seq? | |||
seque | |||
sequence | |||
sequential? | |||
set | |||
set-agent-send-executor! | |||
set-agent-send-off-executor! | |||
set-error-handler! | |||
set-error-mode! | |||
set-validator! | |||
set? | |||
short | |||
short-array | |||
shorts | |||
shuffle | |||
shutdown-agents | |||
slurp | |||
some | |||
some-> | |||
some->> | |||
some-fn | |||
sort | |||
sort-by | |||
sorted-map | |||
sorted-map-by | |||
sorted-set | |||
sorted-set-by | |||
sorted? | |||
special-form-anchor | |||
special-symbol? | |||
spit | |||
split-at | |||
split-with | |||
str | |||
stream? | |||
string? | |||
struct | |||
struct-map | |||
subs | |||
subseq | |||
subvec | |||
supers | |||
swap! | |||
symbol | |||
symbol? | |||
sync | |||
syntax-symbol-anchor | |||
take | |||
take-last | |||
take-nth | |||
take-while | |||
test | |||
the-ns | |||
thread-bound? | |||
time | |||
to-array | |||
to-array-2d | |||
trampoline | |||
transient | |||
tree-seq | |||
true? | |||
type | |||
unchecked-add | |||
unchecked-add-int | |||
unchecked-byte | |||
unchecked-char | |||
unchecked-dec | |||
unchecked-dec-int | |||
unchecked-divide | |||
unchecked-divide-int | |||
unchecked-double | |||
unchecked-float | |||
unchecked-inc | |||
unchecked-inc-int | |||
unchecked-int | |||
unchecked-long | |||
unchecked-multiply | |||
unchecked-multiply-int | |||
unchecked-negate | |||
unchecked-negate-int | |||
unchecked-remainder | |||
unchecked-remainder-int | |||
unchecked-short | |||
unchecked-subtract | |||
unchecked-subtract-int | |||
underive | |||
unquote | |||
unquote-splicing | |||
update-in | |||
update-proxy | |||
use | |||
val | |||
vals | |||
var-get | |||
var-set | |||
var? | |||
vary-meta | |||
vec | |||
vector | |||
vector-of | |||
vector? | |||
when | |||
when-first | |||
when-let | |||
when-not | |||
while | |||
with-bindings | |||
with-bindings* | |||
with-in-str | |||
with-loading-context | |||
with-local-vars | |||
with-meta | |||
with-open | |||
with-out-str | |||
with-precision | |||
with-redefs | |||
with-redefs-fn | |||
xml-seq | |||
zero? | |||
zipmap |
@ -0,0 +1,475 @@ | |||
*agent* | |||
*clojure-version* | |||
*command-line-args* | |||
*compile-files* | |||
*compile-path* | |||
*err* | |||
*file* | |||
*flush-on-newline* | |||
*in* | |||
*ns* | |||
*out* | |||
*print-dup* | |||
*print-length* | |||
*print-level* | |||
*print-meta* | |||
*print-readably* | |||
*read-eval* | |||
*warn-on-reflection* | |||
accessor | |||
aclone | |||
add-classpath | |||
add-watch | |||
agent | |||
agent-error | |||
agent-errors | |||
aget | |||
alength | |||
alias | |||
all-ns | |||
alter | |||
alter-meta! | |||
alter-var-root | |||
amap | |||
ancestors | |||
and | |||
apply | |||
areduce | |||
array-map | |||
aset | |||
aset-boolean | |||
aset-byte | |||
aset-char | |||
aset-double | |||
aset-float | |||
aset-int | |||
aset-long | |||
aset-short | |||
assert | |||
assoc | |||
assoc! | |||
assoc-in | |||
associative? | |||
atom | |||
await | |||
await-for | |||
bases | |||
bean | |||
bigdec | |||
bigint | |||
binding | |||
bit-and | |||
bit-and-not | |||
bit-clear | |||
bit-flip | |||
bit-not | |||
bit-or | |||
bit-set | |||
bit-shift-left | |||
bit-shift-right | |||
bit-test | |||
bit-xor | |||
boolean | |||
boolean-array | |||
booleans | |||
bound-fn | |||
bound-fn* | |||
butlast | |||
byte | |||
byte-array | |||
bytes | |||
case | |||
cast | |||
char | |||
char-array | |||
char-escape-string | |||
char-name-string | |||
char? | |||
chars | |||
class | |||
class? | |||
clear-agent-errors | |||
clojure-version | |||
coll? | |||
comment | |||
commute | |||
comp | |||
comparator | |||
compare | |||
compare-and-set! | |||
compile | |||
complement | |||
concat | |||
cond | |||
condp | |||
conj | |||
conj! | |||
cons | |||
constantly | |||
construct-proxy | |||
contains? | |||
count | |||
counted? | |||
create-ns | |||
create-struct | |||
cycle | |||
dec | |||
decimal? | |||
declare | |||
definline | |||
defmacro | |||
defmethod | |||
defmulti | |||
defn | |||
defn- | |||
defonce | |||
defprotocol | |||
defstruct | |||
deftype | |||
delay | |||
delay? | |||
deliver | |||
deref | |||
derive | |||
descendants | |||
disj | |||
disj! | |||
dissoc | |||
dissoc! | |||
distinct | |||
distinct? | |||
doall | |||
doc | |||
dorun | |||
doseq | |||
dosync | |||
dotimes | |||
doto | |||
double | |||
double-array | |||
doubles | |||
drop | |||
drop-last | |||
drop-while | |||
dtype | |||
empty | |||
empty? | |||
ensure | |||
enumeration-seq | |||
error-handler | |||
error-mode | |||
eval | |||
even? | |||
every? | |||
extend | |||
extend-class | |||
extend-protocol | |||
extend-type | |||
extenders | |||
extends? | |||
false? | |||
ffirst | |||
file-seq | |||
filter | |||
find | |||
find-doc | |||
find-ns | |||
find-var | |||
first | |||
float | |||
float-array | |||
float? | |||
floats | |||
flush | |||
fn | |||
fn? | |||
fnext | |||
for | |||
force | |||
format | |||
future | |||
future-call | |||
future-cancel | |||
future-cancelled? | |||
future-done? | |||
future? | |||
gen-class | |||
gen-interface | |||
gensym | |||
get | |||
get-in | |||
get-method | |||
get-proxy-class | |||
get-thread-bindings | |||
get-validator | |||
hash | |||
hash-map | |||
hash-set | |||
identical? | |||
identity | |||
if-let | |||
if-not | |||
ifn? | |||
import | |||
in-ns | |||
inc | |||
init-proxy | |||
instance? | |||
int | |||
int-array | |||
integer? | |||
interleave | |||
intern | |||
interpose | |||
into | |||
into-array | |||
ints | |||
io! | |||
isa? | |||
iterate | |||
iterator-seq | |||
juxt | |||
key | |||
keys | |||
keyword | |||
keyword? | |||
last | |||
lazy-cat | |||
lazy-seq | |||
let | |||
letfn | |||
line-seq | |||
list | |||
list* | |||
list? | |||
load | |||
load-file | |||
load-reader | |||
load-string | |||
loaded-libs | |||
locking | |||
long | |||
long-array | |||
longs | |||
loop | |||
macroexpand | |||
macroexpand-1 | |||
make-array | |||
make-hierarchy | |||
map | |||
map? | |||
mapcat | |||
max | |||
max-key | |||
memfn | |||
memoize | |||
merge | |||
merge-with | |||
meta | |||
methods | |||
min | |||
min-key | |||
mod | |||
name | |||
namespace | |||
neg? | |||
newline | |||
next | |||
nfirst | |||
nil? | |||
nnext | |||
not | |||
not-any? | |||
not-empty | |||
not-every? | |||
not= | |||
ns | |||
ns-aliases | |||
ns-imports | |||
ns-interns | |||
ns-map | |||
ns-name | |||
ns-publics | |||
ns-refers | |||
ns-resolve | |||
ns-unalias | |||
ns-unmap | |||
nth | |||
nthnext | |||
num | |||
number? | |||
object-array | |||
odd? | |||
or | |||
parents | |||
partial | |||
partition | |||
pcalls | |||
peek | |||
persistent! | |||
pmap | |||
pop | |||
pop! | |||
pop-thread-bindings | |||
pos? | |||
pr | |||
pr-str | |||
prefer-method | |||
prefers | |||
print-namespace-doc | |||
print-str | |||
printf | |||
println | |||
println-str | |||
prn | |||
prn-str | |||
promise | |||
proxy | |||
proxy-mappings | |||
proxy-super | |||
push-thread-bindings | |||
pvalues | |||
quot | |||
rand | |||
rand-int | |||
range | |||
ratio? | |||
rationalize | |||
re-find | |||
re-groups | |||
re-matcher | |||
re-matches | |||
re-pattern | |||
re-seq | |||
read | |||
read-line | |||
read-string | |||
reduce | |||
ref | |||
ref-history-count | |||
ref-max-history | |||
ref-min-history | |||
ref-set | |||
refer | |||
refer-clojure | |||
reify | |||
release-pending-sends | |||
rem | |||
remove | |||
remove-method | |||
remove-ns | |||
remove-watch | |||
repeat | |||
repeatedly | |||
replace | |||
replicate | |||
require | |||
reset! | |||
reset-meta! | |||
resolve | |||
rest | |||
restart-agent | |||
resultset-seq | |||
reverse | |||
reversible? | |||
rseq | |||
rsubseq | |||
satisfies? | |||
second | |||
select-keys | |||
send | |||
send-off | |||
seq | |||
seq? | |||
seque | |||
sequence | |||
sequential? | |||
set | |||
set-error-handler! | |||
set-error-mode! | |||
set-validator! | |||
set? | |||
short | |||
short-array | |||
shorts | |||
shutdown-agents | |||
slurp | |||
some | |||
sort | |||
sort-by | |||
sorted-map | |||
sorted-map-by | |||
sorted-set | |||
sorted-set-by | |||
sorted? | |||
special-form-anchor | |||
special-symbol? | |||
split-at | |||
split-with | |||
str | |||
stream? | |||
string? | |||
struct | |||
struct-map | |||
subs | |||
subseq | |||
subvec | |||
supers | |||
swap! | |||
symbol | |||
symbol? | |||
sync | |||
syntax-symbol-anchor | |||
take | |||
take-last | |||
take-nth | |||
take-while | |||
test | |||
the-ns | |||
time | |||
to-array | |||
to-array-2d | |||
trampoline | |||
transient | |||
tree-seq | |||
true? | |||
type | |||
unchecked-add | |||
unchecked-dec | |||
unchecked-divide | |||
unchecked-inc | |||
unchecked-multiply | |||
unchecked-negate | |||
unchecked-remainder | |||
unchecked-subtract | |||
underive | |||
update-in | |||
update-proxy | |||
use | |||
val | |||
vals | |||
var-get | |||
var-set | |||
var? | |||
vary-meta | |||
vec | |||
vector | |||
vector-of | |||
vector? | |||
when | |||
when-first | |||
when-let | |||
when-not | |||
while | |||
with-bindings | |||
with-bindings* | |||
with-in-str | |||
with-local-vars | |||
with-meta | |||
with-open | |||
with-out-str | |||
with-precision | |||
xml-seq | |||
zero? | |||
zipmap |
@ -0,0 +1,278 @@ | |||
# Generated by the following form. | |||
# (loop for regexp in (append | |||
# coq-solve-tactics | |||
# coq-keywords | |||
# coq-reserved | |||
# coq-tactics | |||
# coq-tacticals | |||
# (list "Set" "Type" "Prop")) | |||
# append (split-string regexp (regexp-quote "\\s-+")) into words | |||
# finally (loop initially (goto-char (point-max)) | |||
# for word in (delete-dups (sort words 'string<)) | |||
# do (insert word) (newline))) | |||
Abort | |||
About | |||
Abstract | |||
Add | |||
Admit | |||
Admitted | |||
All | |||
Arguments | |||
AutoInline | |||
Axiom | |||
Bind | |||
Canonical | |||
Cd | |||
Chapter | |||
Check | |||
Close | |||
CoFixpoint | |||
CoInductive | |||
Coercion | |||
Coercions | |||
Comments | |||
Conjecture | |||
Constant | |||
Constructors | |||
Corollary | |||
Declare | |||
Defined | |||
Definition | |||
Delimit | |||
Dependent | |||
Depth | |||
Derive | |||
End | |||
Eval | |||
Export | |||
Extern | |||
Extract | |||
Extraction | |||
Fact | |||
False | |||
Field | |||
File | |||
Fixpoint | |||
Focus | |||
Function | |||
Functional | |||
Goal | |||
Hint | |||
Hypotheses | |||
Hypothesis | |||
Hyps | |||
Identity | |||
If | |||
Immediate | |||
Implicit | |||
Import | |||
Inductive | |||
Infix | |||
Inline | |||
Inlined | |||
Inspect | |||
Inversion | |||
Language | |||
Lemma | |||
Let | |||
Library | |||
Limit | |||
LoadPath | |||
Local | |||
Locate | |||
Ltac | |||
ML | |||
Module | |||
Morphism | |||
Next Obligation | |||
NoInline | |||
Notation | |||
Notations | |||
Obligation | |||
Obligations | |||
Off | |||
On | |||
Opaque | |||
Open | |||
Optimize | |||
Parameter | |||
Parameters | |||
Path | |||
Printing | |||
Program | |||
Proof | |||
Prop | |||
Pwd | |||
Qed | |||
Rec | |||
Record | |||
Recursive | |||
Remark | |||
Remove | |||
Require | |||
Reserved | |||
Reset | |||
Resolve | |||
Rewrite | |||
Ring | |||
Save | |||
Scheme | |||
Scope | |||
Search | |||
SearchAbout | |||
SearchPattern | |||
SearchRewrite | |||
Section | |||
Semi | |||
Set | |||
Setoid | |||
Show | |||
Solve | |||
Sort | |||
Strict | |||
Structure | |||
Synth | |||
Tactic | |||
Test | |||
Theorem | |||
Time | |||
Transparent | |||
True | |||
Type | |||
Undo | |||
Unfocus | |||
Unfold | |||
Unset | |||
Variable | |||
Variables | |||
Width | |||
Wildcard | |||
abstract | |||
absurd | |||
after | |||
apply | |||
as | |||
assert | |||
assumption | |||
at | |||
auto | |||
autorewrite | |||
beta | |||
by | |||
case | |||
cbv | |||
change | |||
clear | |||
clearbody | |||
cofix | |||
coinduction | |||
compare | |||
compute | |||
congruence | |||
constructor | |||
contradiction | |||
cut | |||
cutrewrite | |||
decide | |||
decompose | |||
delta | |||
dependent | |||
dest | |||
destruct | |||
discrR | |||
discriminate | |||
do | |||
double | |||
eapply | |||
eauto | |||
econstructor | |||
eexists | |||
eleft | |||
elim | |||
else | |||
end | |||
equality | |||
esplit | |||
exact | |||
exists | |||
fail | |||
field | |||
first | |||
firstorder | |||
fix | |||
fold | |||
forall | |||
fourier | |||
fun | |||
functional | |||
generalize | |||
hnf | |||
idtac | |||
if | |||
in | |||
induction | |||
info | |||
injection | |||
instantiate | |||
into | |||
intro | |||
intros | |||
intuition | |||
inversion | |||
inversion_clear | |||
iota | |||
lapply | |||
lazy | |||
left | |||
let | |||
linear | |||
load | |||
match | |||
move | |||
omega | |||
pattern | |||
pose | |||
progress | |||
prolog | |||
quote | |||
record | |||
red | |||
refine | |||
reflexivity | |||
rename | |||
repeat | |||
replace | |||
return | |||
rewrite | |||
right | |||
ring | |||
set | |||
setoid | |||
setoid_replace | |||
setoid_rewrite | |||
simpl | |||
simple | |||
simplify_eq | |||
solve | |||
specialize | |||
split | |||
split_Rabs | |||
split_Rmult | |||
stepl | |||
stepr | |||
struct | |||
subst | |||
sum | |||
symmetry | |||
tauto | |||
then | |||
transitivity | |||
trivial | |||
try | |||
unfold | |||
until | |||
using | |||
with | |||
zeta |
@ -0,0 +1,874 @@ | |||
!important | |||
@font-face | |||
@font-feature-values | |||
@keyframes | |||
ActiveBorder | |||
ActiveCaption | |||
Alpha | |||
AppWorkspace | |||
Background | |||
Barn | |||
BasicImage | |||
Blinds | |||
Blur | |||
ButtonFace | |||
ButtonHighlight | |||
ButtonShadow | |||
ButtonText | |||
CaptionText | |||
CheckerBoard | |||
Chroma | |||
Compositor | |||
CradientWipe | |||
DXImageTransform | |||
DropShadow | |||
Emboss | |||
Engrave | |||
Fade | |||
FlipH | |||
FlipV | |||
Glow | |||
Gray | |||
GrayText | |||
Highlight | |||
HighlightText | |||
Hz | |||
ICMFilter | |||
InactiveBorder | |||
InactiveCaption | |||
InactiveCaptionText | |||
InfoBackground | |||
InfoText | |||
Inset | |||
Invert | |||
Iris | |||
Light | |||
MaskFilter | |||
Matrix | |||
Menu | |||
MenuText | |||
Microsoft | |||
MotionBlur | |||
Pixelate | |||
RadialWipe | |||
RandomBars | |||
RandomDissolve | |||
RevealTrans | |||
Scrollbar | |||
Shadow | |||
Slide | |||
Spiral | |||
Stretch | |||
Strips | |||
ThreeDDarkShadow | |||
ThreeDFace | |||
ThreeDHighlight | |||
ThreeDLightShadow | |||
ThreeDShadow | |||
Wave | |||
Wheel | |||
Window | |||
WindowFrame | |||
WindowText | |||
Xray | |||
Zigzag | |||
_azimuth | |||
_background | |||
_background-position-x | |||
_background-position-y | |||
_border | |||
_bottom | |||
_caption | |||
_clear | |||
_clip | |||
_color | |||
_content | |||
_counter | |||
_cue | |||
_cursor | |||
_direction | |||
_display | |||
_elevation | |||
_empty | |||
_filter | |||
_filter:progid:DXImageTransform.Microsoft | |||
_float | |||
_font | |||
_height | |||
_ime | |||
_ime-mode | |||
_layout | |||
_layout-flow | |||
_layout-grid | |||
_layout-grid-char | |||
_layout-grid-line | |||
_layout-grid-mode | |||
_layout-grid-type | |||
_left | |||
_letter | |||
_line | |||
_line-break | |||
_list | |||
_margin | |||
_orphans | |||
_outline | |||
_overflow | |||
_overflow-x | |||
_overflow-y | |||
_padding | |||
_page | |||
_pause | |||
_pitch | |||
_play | |||
_position | |||
_quotes | |||
_richness | |||
_right | |||
_ruby | |||
_ruby-align | |||
_ruby-overhang | |||
_ruby-position | |||
_scrollbar | |||
_scrollbar-3dlight-color | |||
_scrollbar-arrow-color | |||
_scrollbar-base-color | |||
_scrollbar-darkshadow-color | |||
_scrollbar-face-color | |||
_scrollbar-highlight-color | |||
_scrollbar-track-color | |||
_speak | |||
_speech | |||
_stress | |||
_table | |||
_text | |||
_text-align-last | |||
_text-autospace | |||
_text-justify | |||
_text-kashida-space | |||
_text-overflow | |||
_text-underline-position | |||
_top | |||
_unicode | |||
_vertical | |||
_visibility | |||
_voice | |||
_volume | |||
_white | |||
_widows | |||
_width | |||
_word | |||
_word-break | |||
_word-wrap | |||
_writing | |||
_writing-mode | |||
_z | |||
_zoom | |||
above | |||
active | |||
adjust | |||
after | |||
aliceblue | |||
align | |||
align-content | |||
align-items | |||
align-self | |||
always | |||
animation | |||
animation-delay | |||
animation-direction | |||
animation-duration | |||
animation-fill-mode | |||
animation-iteration-count | |||
animation-name | |||
animation-play-state | |||
animation-timing-function | |||
antiquewhite | |||
aqua | |||
aquamarine | |||
armenian | |||
arrow | |||
attachment | |||
auto | |||
autospace | |||
avoid | |||
azimuth | |||
azure | |||
backface-visibility | |||
background | |||
background-attachment | |||
background-clip | |||
background-color | |||
background-image | |||
background-origin | |||
background-position | |||
background-repeat | |||
background-size | |||
bar | |||
base | |||
baseline | |||
before | |||
behind | |||
beige | |||
below | |||
bidi | |||
bidi-override | |||
bisque | |||
black | |||
blanchedalmond | |||
blink | |||
block | |||
blue | |||
blueviolet | |||
bold | |||
bolder | |||
border | |||
border-bottom | |||
border-bottom-color | |||
border-bottom-left-radius | |||
border-bottom-right-radius | |||
border-bottom-style | |||
border-bottom-width | |||
border-collapse | |||
border-color | |||
border-image | |||
border-image-outset | |||
border-image-repeat | |||
border-image-slice | |||
border-image-source | |||
border-image-width | |||
border-left | |||
border-left-color | |||
border-left-style | |||
border-left-width | |||
border-radius | |||
border-right | |||
border-right-color | |||
border-right-style | |||
border-right-width | |||
border-spacing | |||
border-style | |||
border-top | |||
border-top-color | |||
border-top-left-radius | |||
border-top-right-radius | |||
border-top-style | |||
border-top-width | |||
border-width | |||
both | |||
bottom | |||
box | |||
box-decoration-break | |||
box-shadow | |||
box-sizing | |||
break | |||
break-after | |||
break-before | |||
break-inside | |||
brown | |||
burlwood | |||
cadetblue | |||
capitalize | |||
caps | |||
caption | |||
caption-side | |||
cell | |||
cells | |||
center | |||
center-left | |||
center-right | |||
char | |||
chartreuse | |||
chocolate | |||
circle | |||
cjk | |||
cjk-ideographic | |||
clear | |||
clip | |||
close | |||
close-quote | |||
cm | |||
code | |||
collapse | |||
color | |||
column | |||
column-count | |||
column-fill | |||
column-gap | |||
column-rule | |||
column-rule-color | |||
column-rule-style | |||
column-rule-width | |||
column-span | |||
column-width | |||
columns | |||
compact | |||
condensed | |||
content | |||
continuous | |||
coral | |||
cornflowerblue | |||
cornsilk | |||
counter | |||
counter-increment | |||
counter-reset | |||
crimson | |||
crop | |||
cross | |||
crosshair | |||
cue | |||
cue-after | |||
cue-before | |||
cursive | |||
cursor | |||
cyan | |||
darkblue | |||
darkcyan | |||
darkgoldenrod | |||
darkgray | |||
darkgreen | |||
darkkhaki | |||
darkmagenta | |||
darkolivegreen | |||
darkorange | |||
darkorchid | |||
darkred | |||
darksalmon | |||
darkseagreen | |||
darkshadow | |||
darkslateblue | |||
darkslategray | |||
darkturquoise | |||
darkviolet | |||
dashed | |||
decimal | |||
decimal-leading-zero | |||
decoration | |||
deeppink | |||
deepskyblue | |||
default | |||
deg | |||
digits | |||
dimgray | |||
direction | |||
disc | |||
display | |||
dodgerblue | |||
dotted | |||
double | |||
during | |||
e | |||
e-resize | |||
elevation | |||
em | |||
embed | |||
empty | |||
empty-cells | |||
ex | |||
expanded | |||
extra | |||
extra-condensed | |||
extra-expanded | |||
face | |||
family | |||
fantasy | |||
far | |||
far-left | |||
far-right | |||
fast | |||
faster | |||
filter | |||
firebrick | |||
first | |||
first-child | |||
first-letter | |||
first-line | |||
fixed | |||
flex | |||
flex-basis | |||
flex-direction | |||
flex-flow | |||
flex-grow | |||
flex-shrink | |||
flex-wrap | |||
float | |||
floralwhite | |||
flow | |||
focus | |||
font | |||
font-family | |||
font-feature-setting | |||
font-kerning | |||
font-language-override | |||
font-size | |||
font-size-adjust | |||
font-stretch | |||
font-style | |||
font-synthesis | |||
font-variant | |||
font-variant-alternates | |||
font-variant-caps | |||
font-variant-east-asian | |||
font-variant-ligatures | |||
font-variant-numeric | |||
font-variant-position | |||
font-weight | |||
footer | |||
forestgreen | |||
fuchsia | |||
gainsboro | |||
georgian | |||
ghostwhite | |||
gold | |||
goldenrod | |||
gray | |||
greek | |||
green | |||
greenyellow | |||
grid | |||
groove | |||
group | |||
hanging-punctuation | |||
header | |||
hebrew | |||
height | |||
help | |||
hidden | |||
hide | |||
high | |||
higher | |||
hiragana | |||
hiragana-iroha | |||
honeydew | |||
hotpink | |||
hover | |||
hyphens | |||
icon | |||
ideographic | |||
image | |||
image-orientation | |||
image-rendering | |||
image-resolution | |||
ime-mode | |||
in | |||
increment | |||
indent | |||
index | |||
indianred | |||
indigo | |||
inherit | |||
inline | |||
inline-block | |||
inline-table | |||
inset | |||
inside | |||
iroha | |||
italic | |||
item | |||
ivory | |||
justify | |||
justify-content | |||
kHz | |||
kashida | |||
katakana | |||
katakana-iroha | |||
khaki | |||
landscape | |||
lang() | |||
large | |||
larger | |||
last | |||
latin | |||
lavender | |||
lavenderblush | |||
lawngreen | |||
layout | |||
leading | |||
left | |||
left-side | |||
leftwards | |||
lenonchiffon | |||
letter | |||
letter-spacing | |||
level | |||
lightblue | |||
lightcoral | |||
lightcyan | |||
lighter | |||
lightgoldenrodyellow | |||
lightgray | |||
lightgreen | |||
lightgrey | |||
lightpink | |||
lightsalmon | |||
lightseagreen | |||
lightskyblue | |||
lightslategray | |||
lightsteelblue | |||
lightyellow | |||
lime | |||
limegreen | |||
line | |||
line-break | |||
line-height | |||
line-through | |||
linen | |||
link | |||
list | |||
list-item | |||
list-style | |||
list-style-image | |||
list-style-position | |||
list-style-type | |||
loud | |||
low | |||
lower | |||
lower-alpha | |||
lower-greek | |||
lower-latin | |||
lower-roman | |||
lowercase | |||
ltr | |||
magenta | |||
margin | |||
margin-bottom | |||
margin-left | |||
margin-right | |||
margin-top | |||
mark | |||
mark-after | |||
mark-before | |||
marker | |||
marker-offset | |||
marks | |||
maroon | |||
marquee-direction | |||
marquee-play-count | |||
marquee-speed | |||
marquee-style | |||
mask | |||
mask-type | |||
max | |||
max-height | |||
max-width | |||
medium | |||
mediumaquamarine | |||
mediumblue | |||
mediumorchid | |||
mediumpurple | |||
mediumseagreen | |||
mediumslateblue | |||
mediumspringgreen | |||
mediumturquoise | |||
mediumvioletred | |||
menu | |||
message | |||
message-box | |||
middle | |||
midnightblue | |||
min | |||
min-height | |||
min-width | |||
mintcream | |||
mistyrose | |||
mix | |||
mm | |||
moccasin | |||
mode | |||
monospace | |||
move | |||
ms | |||
n | |||
n-resize | |||
naby | |||
narrower | |||
nav-down | |||
nav-index | |||
nav-left | |||
nav-right | |||
nav-up | |||
navajowhite | |||
ne | |||
ne-resize | |||
no | |||
no-close-quote | |||
no-open-quote | |||
no-repeat | |||
none | |||
normal | |||
nowrap | |||
number | |||
numeral | |||
nw | |||
nw-resize | |||
object-fit | |||
object-position | |||
oblique | |||
offset | |||
oldlace | |||
olive | |||
olivedrab | |||
once | |||
opacity | |||
open | |||
open-quote | |||
orange | |||
orangered | |||
orchid | |||
order | |||
orphans | |||
out | |||
outline | |||
outline-color | |||
outline-offset | |||
outline-style | |||
outline-width | |||
outset | |||
outside | |||
overflow | |||
overflow-wrap | |||
overflow-x | |||
overflow-y | |||
overhang | |||
overline | |||
override | |||
padding | |||
padding-bottom | |||
padding-left | |||
padding-right | |||
padding-top | |||
page | |||
page-break-after | |||
page-break-before | |||
page-break-inside | |||
palegoldenrod | |||
palegreen | |||
paleturquoise | |||
palevioletred | |||
papayawhip | |||
pause | |||
pause-after | |||
pause-before | |||
pc | |||
peachpuff | |||
perspective | |||
perspective-origin | |||
peru | |||
phonemes | |||
pink | |||
pitch | |||
pitch-range | |||
play | |||
play-during | |||
plum | |||
pointer | |||
portrait | |||
position | |||
powderblue | |||
pre | |||
pre-line | |||
pre-wrap | |||
progid | |||
progress | |||
pt | |||
punctuation | |||
purple | |||
px | |||
quote | |||
quotes | |||
rad | |||
range | |||
rate | |||
red | |||
relative | |||
repeat | |||
repeat-x | |||
repeat-y | |||
reset | |||
resize | |||
rest | |||
rest-after | |||
rest-before | |||
richness | |||
ridge | |||
right | |||
right-side | |||
rightwards | |||
roman | |||
rosybrown | |||
row | |||
royalblue | |||
rtl | |||
run | |||
run-in | |||
s | |||
s-resize | |||
saddlebrown | |||
salmon | |||
sandybrown | |||
sans-serif | |||
scroll | |||
se | |||
se-resize | |||
seagreen | |||
seashell | |||
semi | |||
semi-condensed | |||
semi-expanded | |||
separate | |||
serif | |||
shadow | |||
show | |||
side | |||
sienna | |||
silent | |||
silever | |||
silver | |||
size | |||
skyblue | |||
slateblue | |||
slategray | |||
slow | |||
slower | |||
small | |||
small-caps | |||
small-caption | |||
smaller | |||
snow | |||
soft | |||
solid | |||
space | |||
spacing | |||
speak | |||
speak-header | |||
speak-numeral | |||
speak-punctuation | |||
specific | |||
specific-voice | |||
speech | |||
speech-rate | |||
spell | |||
spell-out | |||
springgreen | |||
square | |||
static | |||
status | |||
status-bar | |||
steelblue | |||
stress | |||
stretch | |||
style | |||
sub | |||
super | |||
sw | |||
sw-resize | |||
tab-size | |||
table | |||
table-caption | |||
table-cell | |||
table-column | |||
table-column-group | |||
table-footer-group | |||
table-header-group | |||
table-layout | |||
table-row | |||
table-row-group | |||
tan | |||
teal | |||
text | |||
text-align | |||
text-align-last | |||
text-bottom | |||
text-combine-horizontal | |||
text-decoration | |||
text-decoration-color | |||
text-decoration-line | |||
text-decoration-style | |||
text-indent | |||
text-justify | |||
text-orientation | |||
text-overflow | |||
text-shadow | |||
text-top | |||
text-transform | |||
text-underline-position | |||
thick | |||
thin | |||
thistle | |||
through | |||
tomato | |||
top | |||
track | |||
transform | |||
transform-origin | |||
transform-style | |||
transition | |||
transition-delay | |||
transition-duration | |||
transition-property | |||
transition-timing-function | |||
transparent | |||
turquoise | |||
type | |||
ultra | |||
ultra-condensed | |||
ultra-expanded | |||
underline | |||
unicode | |||
unicode-bidi | |||
upper | |||
upper-alpha | |||
upper-latin | |||
upper-roman | |||
uppercase | |||
variant | |||
vertical | |||
vertical-align | |||
violet | |||
visibility | |||
visible | |||
visited | |||
voice | |||
voice-balance | |||
voice-duration | |||
voice-family | |||
voice-pitch | |||
voice-pitch-range | |||
voice-rate | |||
voice-stress | |||
voice-volume | |||
volume | |||
w | |||
w-resize | |||
wait | |||
weight | |||
wheat | |||
white | |||
white-space | |||
whitesmoke | |||
wider | |||
widows | |||
width | |||
word | |||
word-break | |||
word-spacing | |||
word-wrap | |||
wrap | |||
writing-mode | |||
x | |||
x-fast | |||
x-high | |||
x-large | |||
x-loud | |||
x-low | |||
x-slow | |||
x-small | |||
x-soft | |||
xx | |||
xx-large | |||
xx-small | |||
y | |||
yellow | |||
yellowgreen | |||
z | |||
z-index | |||
zero |
@ -0,0 +1,216 @@ | |||
after | |||
begin | |||
catch | |||
case | |||
cond | |||
end | |||
fun | |||
if | |||
let | |||
of | |||
query | |||
receive | |||
try | |||
when | |||
and | |||
andalso | |||
band | |||
bnot | |||
bor | |||
bsl | |||
bsr | |||
bxor | |||
div | |||
not | |||
or | |||
orelse | |||
rem | |||
xor | |||
is_atom | |||
is_binary | |||
is_bitstring | |||
is_boolean | |||
is_float | |||
is_function | |||
is_integer | |||
is_list | |||
is_number | |||
is_pid | |||
is_port | |||
is_record | |||
is_reference | |||
is_tuple | |||
atom | |||
binary | |||
bitstring | |||
boolean | |||
function | |||
integer | |||
list | |||
number | |||
pid | |||
port | |||
record | |||
reference | |||
tuple | |||
abs | |||
adler32 | |||
adler32_combine | |||
alive | |||
apply | |||
atom_to_binary | |||
atom_to_list | |||
binary_to_atom | |||
binary_to_existing_atom | |||
binary_to_list | |||
binary_to_term | |||
bit_size | |||
bitstring_to_list | |||
byte_size | |||
check_process_code | |||
contact_binary | |||
crc32 | |||
crc32_combine | |||
date | |||
decode_packet | |||
delete_module | |||
disconnect_node | |||
element | |||
erase | |||
exit | |||
float | |||
float_to_list | |||
garbage_collect | |||
get | |||
get_keys | |||
group_leader | |||
halt | |||
hd | |||
integer_to_list | |||
internal_bif | |||
iolist_size | |||
iolist_to_binary | |||
is_alive | |||
is_atom | |||
is_binary | |||
is_bitstring | |||
is_boolean | |||
is_float | |||
is_function | |||
is_integer | |||
is_list | |||
is_number | |||
is_pid | |||
is_port | |||
is_process_alive | |||
is_record | |||
is_reference | |||
is_tuple | |||
length | |||
link | |||
list_to_atom | |||
list_to_binary | |||
list_to_bitstring | |||
list_to_existing_atom | |||
list_to_float | |||
list_to_integer | |||
list_to_pid | |||
list_to_tuple | |||
load_module | |||
make_ref | |||
module_loaded | |||
monitor_node | |||
node | |||
node_link | |||
node_unlink | |||
nodes | |||
notalive | |||
now | |||
open_port | |||
pid_to_list | |||
port_close | |||
port_command | |||
port_connect | |||
port_control | |||
pre_loaded | |||
process_flag | |||
process_info | |||
processes | |||
purge_module | |||
put | |||
register | |||
registered | |||
round | |||
self | |||
setelement | |||
size | |||
spawn | |||
spawn_link | |||
spawn_monitor | |||
spawn_opt | |||
split_binary | |||
statistics | |||
term_to_binary | |||
time | |||
throw | |||
tl | |||
trunc | |||
tuple_size | |||
tuple_to_list | |||
unlink | |||
unregister | |||
whereis | |||
append_element | |||
bump_reductions | |||
cancel_timer | |||
demonitor | |||
display | |||
fun_info | |||
fun_to_list | |||
function_exported | |||
get_cookie | |||
get_stacktrace | |||
hash | |||
integer_to_list | |||
is_builtin | |||
list_to_integer | |||
loaded | |||
localtime | |||
localtime_to_universaltime | |||
make_tuple | |||
max | |||
md5 | |||
md5_final | |||
md5_init | |||
md5_update | |||
memory | |||
min | |||
monitor | |||
monitor_node | |||
phash | |||
phash2 | |||
port_call | |||
port_info | |||
port_to_list | |||
ports | |||
process_display | |||
read_timer | |||
ref_to_list | |||
resume_process | |||
send | |||
send_after | |||
send_nosuspend | |||
set_cookie | |||
start_timer | |||
suspend_process | |||
system_flag | |||
system_info | |||
system_monitor | |||
system_profile | |||
trace | |||
trace_delivered | |||
trace_info | |||
trace_pattern | |||
universaltime | |||
universaltime_to_localtime | |||
yield |
@ -0,0 +1,37 @@ | |||
abstract | |||
break | |||
case | |||
catch | |||
const | |||
continue | |||
do | |||
else | |||
elseif | |||
end | |||
eval | |||
export | |||
false | |||
finally | |||
for | |||
function | |||
global | |||
if | |||
ifelse | |||
immutable | |||
import | |||
importall | |||
in | |||
let | |||
macro | |||
module | |||
otherwise | |||
quote | |||
return | |||
switch | |||
throw | |||
true | |||
try | |||
type | |||
typealias | |||
using | |||
while |
@ -0,0 +1,25 @@ | |||
break | |||
case | |||
chan | |||
const | |||
continue | |||
default | |||
defer | |||
else | |||
fallthrough | |||
for | |||
func | |||
go | |||
goto | |||
if | |||
import | |||
interface | |||
map | |||
package | |||
range | |||
return | |||
select | |||
struct | |||
switch | |||
type | |||
var |
@ -0,0 +1,679 @@ | |||
Arrows | |||
BangPatterns | |||
Bool | |||
Bounded | |||
CPP | |||
Char | |||
Complex | |||
ConstrainedClassMethods | |||
Control.Applicative | |||
Control.Arrow | |||
Control.Category | |||
Control.Concurrent | |||
Control.Concurrent.MVar | |||
Control.Concurrent.QSem | |||
Control.Concurrent.QSemN | |||
Control.Concurrent.STM | |||
Control.Concurrent.STM.TArray | |||
Control.Concurrent.STM.TChan | |||
Control.Concurrent.STM.TMVar | |||
Control.Concurrent.STM.TVar | |||
Control.Concurrent.SampleVar | |||
Control.Exception | |||
Control.Exception.Base | |||
Control.Monad | |||
Control.Monad.Cont | |||
Control.Monad.Cont.Class | |||
Control.Monad.Error | |||
Control.Monad.Error.Class | |||
Control.Monad.Fix | |||
Control.Monad.Identity | |||
Control.Monad.Instances | |||
Control.Monad.List | |||
Control.Monad.RWS | |||
Control.Monad.RWS.Class | |||
Control.Monad.RWS.Lazy | |||
Control.Monad.RWS.Strict | |||
Control.Monad.Reader | |||
Control.Monad.Reader.Class | |||
Control.Monad.ST | |||
Control.Monad.ST.Lazy | |||
Control.Monad.ST.Strict | |||
Control.Monad.STM | |||
Control.Monad.State | |||
Control.Monad.State.Class | |||
Control.Monad.State.Lazy | |||
Control.Monad.State.Strict | |||
Control.Monad.Trans | |||
Control.Monad.Writer | |||
Control.Monad.Writer.Class | |||
Control.Monad.Writer.Lazy | |||
Control.Monad.Writer.Strict | |||
Control.OldException | |||
Control.Parallel | |||
Control.Parallel.Strategies | |||
DEPRECATED | |||
Data.Array | |||
Data.Array.Diff | |||
Data.Array.IArray | |||
Data.Array.IO | |||
Data.Array.IO.Internals | |||
Data.Array.MArray | |||
Data.Array.Paralell | |||
Data.Array.Paralell.Arr | |||
Data.Array.Paralell.Base | |||
Data.Array.Paralell.Int | |||
Data.Array.Paralell.Lifted | |||
Data.Array.Paralell.PArray | |||
Data.Array.Paralell.Prelude | |||
Data.Array.Paralell.Prelude.Double | |||
Data.Array.Paralell.Stream | |||
Data.Array.Paralell.Unlifted | |||
Data.Array.Paralell.Unlifted.Distributed | |||
Data.Array.Paralell.Unlifted.Paralell | |||
Data.Array.Paralell.Unlifted.Sqeuential | |||
Data.Array.Paralell.Word8 | |||
Data.Array.ST | |||
Data.Array.Storable | |||
Data.Array.Unboxed | |||
Data.Bits | |||
Data.Bool | |||
Data.ByteString | |||
Data.ByteString.Char8 | |||
Data.ByteString.Fusion | |||
Data.ByteString.Internal | |||
Data.ByteString.Lazy | |||
Data.ByteString.Lazy.Char8 | |||
Data.ByteString.Lazy.Fusion | |||
Data.ByteString.Lazy.Internal | |||
Data.ByteString.Unsafe | |||
Data.Char | |||
Data.Complex | |||
Data.Data | |||
Data.Dynamic | |||
Data.Either | |||
Data.Eq | |||
Data.Fixed | |||
Data.Foldable | |||
Data.Function | |||
Data.Generics | |||
Data.Generics.Aliases | |||
Data.Generics.Basics | |||
Data.Generics.Instances | |||
Data.Generics.Schemes | |||
Data.Generics.Text | |||
Data.Generics.Twins | |||
Data.Graph | |||
Data.HashTable | |||
Data.IORef | |||
Data.Int | |||
Data.IntMap | |||
Data.IntSet | |||
Data.Ix | |||
Data.List | |||
Data.Map | |||
Data.Maybe | |||
Data.Monoid | |||
Data.Ord | |||
Data.Ratio | |||
Data.STRef | |||
Data.STRef.Lazy | |||
Data.STRef.Strict | |||
Data.Sequence | |||
Data.Set | |||
Data.String | |||
Data.Time | |||
Data.Time.Calendar | |||
Data.Time.Calendar.Easter | |||
Data.Time.Calendar.Julian | |||
Data.Time.Calendar.MonthDay | |||
Data.Time.Calendar.OrdinalDate | |||
Data.Time.Calendar.WeekDate | |||
Data.Time.Clock | |||
Data.Time.Clock.POSIX | |||
Data.Time.Clock.TAI | |||
Data.Time.Format | |||
Data.Time.LocalTime | |||
Data.Traversable | |||
Data.Tree | |||
Data.Tuple | |||
Data.Typeable | |||
Data.Unique | |||
Data.Version | |||
Data.Word | |||
Debug.Trace | |||
DeriveDataTypeable | |||
DisambiguateRecordFields | |||
Distribution.Compat.ReadP | |||
Distribution.Compiler | |||
Distribution.InstalledPackageInfo | |||
Distribution.License | |||
Distribution.Make | |||
Distribution.ModuleName | |||
Distribution.Package | |||
Distribution.PackageDescription | |||
Distribution.PackageDescription.Check | |||
Distribution.PackageDescription.Configuration | |||
Distribution.PackageDescription.Parse | |||
Distribution.ParseUtils | |||
Distribution.ReadE | |||
Distribution.Simple | |||
Distribution.Simple.Build | |||
Distribution.Simple.Build.Macros | |||
Distribution.Simple.Build.PathsModule | |||
Distribution.Simple.BuildPaths | |||
Distribution.Simple.Command | |||
Distribution.Simple.Compiler | |||
Distribution.Simple.Configure | |||
Distribution.Simple.GHC | |||
Distribution.Simple.Haddock | |||
Distribution.Simple.Hugs | |||
Distribution.Simple.Install | |||
Distribution.Simple.InstallDirs | |||
Distribution.Simple.JHC | |||
Distribution.Simple.LocalBuildInfo | |||
Distribution.Simple.NHC | |||
Distribution.Simple.PackageIndex | |||
Distribution.Simple.PreProcess | |||
Distribution.Simple.PreProcess.Unlit | |||
Distribution.Simple.Program | |||
Distribution.Simple.Register | |||
Distribution.Simple.Setup | |||
Distribution.Simple.SrcDist | |||
Distribution.Simple.UserHooks | |||
Distribution.Simple.Utils | |||
Distribution.System | |||
Distribution.Text | |||
Distribution.Verbosity | |||
Distribution.Version | |||
Double | |||
EQ | |||
Either | |||
EmptyDataDecls | |||
Enum | |||
Eq | |||
ExistentialQuantification | |||
ExtendedDefaultRules | |||
False | |||
FilePath | |||
FlexibleContexts | |||
FlexibleInstances | |||
Float | |||
Floating | |||
Foreign | |||
Foreign.C | |||
Foreign.C.Error | |||
Foreign.C.String | |||
Foreign.C.Types | |||
Foreign.Concurrent | |||
Foreign.ForeignPtr | |||
Foreign.Marshal | |||
Foreign.Marshal.Alloc | |||
Foreign.Marshal.Array | |||
Foreign.Marshal.Error | |||
Foreign.Marshal.Pool | |||
Foreign.Marshal.Utils | |||
Foreign.Ptr | |||
Foreign.StablePtr | |||
Foreign.Storable | |||
ForeignFunctionInterface | |||
Fractional | |||
FunctionnalDependencies | |||
Functor | |||
GADTs | |||
GHC.Arr | |||
GHC.Bool | |||
GHC.Conc | |||
GHC.ConsoleHandler | |||
GHC.Desugar | |||
GHC.Environment | |||
GHC.Err | |||
GHC.Exts | |||
GHC.Generics | |||
GHC.Handle | |||
GHC.Ordering | |||
GHC.PArr | |||
GHC.Prim | |||
GHC.PrimopWrappers | |||
GHC.Tuple | |||
GHC.Types | |||
GHC.Unicode | |||
GHC.Unit | |||
GT | |||
GeneralizedNewtypeDeriving | |||
Generics | |||
INCLUDE | |||
INLINE | |||
IO | |||
IOError | |||
IOException | |||
ImplicitParams | |||
ImplicitPrelude | |||
ImpredicativeTypes | |||
IncoherentInstances | |||
Int | |||
Integer | |||
Integral | |||
Just | |||
KindSignatures | |||
LANGUAGE | |||
LINE | |||
LT | |||
Language.Haskell.Extension | |||
Language.Haskell.Lexer | |||
Language.Haskell.ParseMonad | |||
Language.Haskell.ParseUtils | |||
Language.Haskell.Parser | |||
Language.Haskell.Pretty | |||
Language.Haskell.Syntax | |||
Language.Haskell.TH | |||
Language.Haskell.TH.Lib | |||
Language.Haskell.TH.Ppr | |||
Language.Haskell.TH.PprLib | |||
Language.Haskell.TH.Quote | |||
Language.Haskell.TH.Syntax | |||
Left | |||
LiberalTypeSynonyms | |||
MagicHash | |||
Maybe | |||
Monad | |||
MonoPatBinds | |||
MonomorphismRestriction | |||
MultiParamTypeClasses | |||
NOINLINE | |||
NamedFieldPuns | |||
Network | |||
Network.BSD | |||
Network.Socket | |||
Network.URI | |||
NewQualifiedOperators | |||
NoArrows | |||
NoBangPatterns | |||
NoCPP | |||
NoConstrainedClassMethods | |||
NoDeriveDataTypeable | |||
NoDisambiguateRecordFields | |||
NoEmptyDataDecls | |||
NoExistentialQuantification | |||
NoExtendedDefaultRules | |||
NoFlexibleContexts | |||
NoFlexibleInstances | |||
NoForeignFunctionInterface | |||
NoFunctionnalDependencies | |||
NoGADTs | |||
NoGeneralizedNewtypeDeriving | |||
NoGenerics | |||
NoImplicitParams | |||
NoImplicitPrelude | |||
NoImpredicativeTypes | |||
NoIncoherentInstances | |||
NoKindSignatures | |||
NoLiberalTypeSynonyms | |||
NoMagicHash | |||
NoMonoPatBinds | |||
NoMonomorphismRestriction | |||
NoMultiParamTypeClasses | |||
NoNamedFieldPuns | |||
NoNewQualifiedOperators | |||
NoOverlappingInstances | |||
NoOverloadedStrings | |||
NoPArr | |||
NoPackageImports | |||
NoParallelListComp | |||
NoPatternGuards | |||
NoPolymorphicComponents | |||
NoQuasiQuotes | |||
NoRank2Types | |||
NoRankNTypes | |||
NoRecordWildCards | |||
NoRecursiveDo | |||
NoRelaxedPolyRec | |||
NoScopedTypeVariables | |||
NoStandaloneDeriving | |||
NoTemplateHaskell | |||
NoTransformListComp | |||
NoTypeFamilies | |||
NoTypeOperators | |||
NoTypeSynonymInstances | |||
NoUnboxedTuples | |||
NoUndecidableInstances | |||
NoUnicodeSyntax | |||
NoUnliftedFFITypes | |||
NoViewPatterns | |||
Nothing | |||
Num | |||
Numeric | |||
OPTIONS_GHC | |||
Ord | |||
Ordering | |||
OverlappingInstances | |||
OverloadedStrings | |||
PArr | |||
PackageImports | |||
ParallelListComp | |||
PatternGuards | |||
PolymorphicComponents | |||
Prelude | |||
QuasiQuotes | |||
RULES | |||
Rank2Types | |||
RankNTypes | |||
Ratio | |||
Read | |||
ReadS | |||
Real | |||
RealFloat | |||
RealFrac | |||
RecordWildCards | |||
RecursiveDo | |||
RelaxedPolyRec | |||
Right | |||
SOURCE | |||
SPECIALIZE | |||
ScopedTypeVariables | |||
ShowS | |||
StandaloneDeriving | |||
String | |||
System.CPUTime | |||
System.Cmd | |||
System.Console.Editline | |||
System.Console.GetOpt | |||
System.Console.Readline | |||
System.Directory | |||
System.Environment | |||
System.Exit | |||
System.FilePath | |||
System.FilePath.Posix | |||
System.FilePath.Windows | |||
System.IO | |||
System.IO.Error | |||
System.IO.Unsafe | |||
System.Info | |||
System.Locale | |||
System.Mem | |||
System.Mem.StableName | |||
System.Mem.Weak | |||
System.Posix | |||
System.Posix.Directory | |||
System.Posix.DynamicLinker | |||
System.Posix.DynamicLinker.Module | |||
System.Posix.DynamicLinker.Prim | |||
System.Posix.Env | |||
System.Posix.Error | |||
System.Posix.Files | |||
System.Posix.IO | |||
System.Posix.Process | |||
System.Posix.Process.Internals | |||
System.Posix.Resource | |||
System.Posix.Semaphore | |||
System.Posix.SharedMem | |||
System.Posix.Signals | |||
System.Posix.Signals.Exts | |||
System.Posix.Temp | |||
System.Posix.Terminal | |||
System.Posix.Time | |||
System.Posix.Types | |||
System.Posix.Unistd | |||
System.Posix.User | |||
System.Process | |||
System.Random | |||
System.Time | |||
System.Timeout | |||
TemplateHaskell | |||
Test.HUnit | |||
Test.HUnit.Base | |||
Test.HUnit.Lang | |||
Test.HUnit.Terminal | |||
Test.HUnit.Text | |||
Test.QuickCheck | |||
Test.QuickCheck.Batch | |||
Test.QuickCheck.Poly | |||
Test.QuickCheck.Utils | |||
Text.Html | |||
Text.Html.BlockTable | |||
Text.ParserCombinators.Parsec | |||
Text.ParserCombinators.Parsec.Char | |||
Text.ParserCombinators.Parsec.Combinator | |||
Text.ParserCombinators.Parsec.Error | |||
Text.ParserCombinators.Parsec.Expr | |||
Text.ParserCombinators.Parsec.Language | |||
Text.ParserCombinators.Parsec.Perm | |||
Text.ParserCombinators.Parsec.Pos | |||
Text.ParserCombinators.Parsec.Prim | |||
Text.ParserCombinators.Parsec.Token | |||
Text.ParserCombinators.ReadP | |||
Text.ParserCombinators.ReadPrec | |||
Text.PrettyPrint | |||
Text.PrettyPrint.HughesPJ | |||
Text.Printf | |||
Text.Read | |||
Text.Read.Lex | |||
Text.Regex.Base | |||
Text.Regex.Base.Context | |||
Text.Regex.Base.Impl | |||
Text.Regex.Base.RegexLike | |||
Text.Regex.Posix | |||
Text.Regex.Posix.ByteString | |||
Text.Regex.Posix.String | |||
Text.Regex.Posix.Wrap | |||
Text.Show | |||
Text.Show.Functions | |||
Text.XHtml | |||
Text.XHtml.Debug | |||
Text.XHtml.Frameset | |||
Text.XHtml.Strict | |||
Text.XHtml.Table | |||
Text.XHtml.Transitional | |||
Trace.Hpc.Mix | |||
Trace.Hpc.Reflect | |||
Trace.Hpc.Tix | |||
Trace.Hpc.Util | |||
TransformListComp | |||
True | |||
TypeFamilies | |||
TypeOperators | |||
TypeSynonymInstances | |||
UNPACK | |||
UnboxedTuples | |||
UndecidableInstances | |||
UnicodeSyntax | |||
UnliftedFFITypes | |||
Unsafe.Coerce | |||
ViewPatterns | |||
WARNING | |||
abs | |||
acos | |||
acosh | |||
all | |||
and | |||
any | |||
appendFile | |||
as | |||
asTypeOf | |||
asin | |||
asinh | |||
atan | |||
atan2 | |||
atanh | |||
break | |||
case | |||
catch | |||
ceiling | |||
class | |||
compare | |||
concat | |||
concatMap | |||
const | |||
cos | |||
cosh | |||
curry | |||
cycle | |||
data | |||
decodeFloat | |||
default | |||
deriving | |||
div | |||
divMod | |||
do | |||
drop | |||
dropWhile | |||
either | |||
elem | |||
else | |||
encodeFloat | |||
enumFrom | |||
enumFromThen | |||
enumFromThenTo | |||
enumFromTo | |||
error | |||
exp | |||
exponent | |||
fail | |||
filter | |||
flip | |||
floatDigits | |||
floatRadix | |||
floatRange | |||
floor | |||
fmap | |||
fold | |||
fold1 | |||
foldr | |||
foldr1 | |||
fromEnum | |||
fromInteger | |||
fromIntegral | |||
fromRational | |||
fst | |||
gcd | |||
getChar | |||
getContents | |||
getLine | |||
head | |||
hiding | |||
id | |||
if | |||
import | |||
in | |||
infix | |||
infixl | |||
infixr | |||
init | |||
instance | |||
intract | |||
ioError | |||
isDenormalized | |||
isIEEE | |||
isInfinite | |||
isNan | |||
isNegativeZero | |||
iterate | |||
last | |||
lcm | |||
length | |||
let | |||
lex | |||
lines | |||
log | |||
logBase | |||
lookup | |||
map | |||
mapM | |||
mapM_ | |||
max | |||
maxBound | |||
maximum | |||
maybe | |||
min | |||
minBound | |||
minimum | |||
mod | |||
module | |||
negate | |||
newtype | |||
not | |||
notElem | |||
null | |||
odd | |||
of | |||
or | |||
otherwise | |||
pi | |||
pred | |||
product | |||
properFraction | |||
putChar | |||
putStr | |||
putStrLn | |||
qualified | |||
quot | |||
quotRem | |||
read | |||
readFile | |||
readIO | |||
readList | |||
readLn | |||
readParen | |||
reads | |||
readsPrec | |||
realtoFrac | |||
recip | |||
rem | |||
repeat | |||
replicate | |||
return | |||
reverse | |||
round | |||
scaleFloat | |||
scanl | |||
scanl1 | |||
scanr | |||
scanr1 | |||
seq | |||
sequence | |||
sequence_ | |||
show | |||
showChar | |||
showList | |||
showParen | |||
showString | |||
shows | |||
showsPrec | |||
significand | |||
signum | |||
sin | |||
sinh | |||
snd | |||
span | |||
splitAt | |||
sqrt | |||
subtract | |||
succ | |||
sum | |||
tail | |||
take | |||
takeWhile | |||
tan | |||
tanh | |||
then | |||
toEnum | |||
toInteger | |||
toRational | |||
truncate | |||
type | |||
uncurry | |||
undefined | |||
unlines | |||
until | |||
unwords | |||
unzip | |||
unzip3 | |||
userError | |||
where | |||
words | |||
writeFile | |||
zip | |||
zip3 | |||
zipWith | |||
zipWith3 |
@ -0,0 +1,53 @@ | |||
abstract | |||
assert | |||
boolean | |||
break | |||
byte | |||
case | |||
catch | |||
char | |||
class | |||
const | |||
continue | |||
default | |||
do | |||
double | |||
else | |||
enum | |||
extends | |||
final | |||
finally | |||
float | |||
for | |||
goto | |||
if | |||
implements | |||
import | |||
instanceof | |||
int | |||
interface | |||
long | |||
native | |||
new | |||
package | |||
private | |||
protected | |||
public | |||
return | |||
short | |||
static | |||
strictfp | |||
super | |||
switch | |||
synchronized | |||
this | |||
throw | |||
throws | |||
transient | |||
try | |||
void | |||
volatile | |||
while | |||
@Override | |||
@Deprecated | |||
@SuppressWarnings |
@ -0,0 +1,148 @@ | |||
Anchor | |||
Area | |||
Array | |||
Boolean | |||
Button | |||
Checkbox | |||
Date | |||
Document | |||
Element | |||
FileUpload | |||
Form | |||
Frame | |||
Function | |||
Hidden | |||
History | |||
Image | |||
Infinity | |||
JavaArray | |||
JavaClass | |||
JavaObject | |||
JavaPackage | |||
Link | |||
Location | |||
Math | |||
MimeType | |||
NaN | |||
Navigator | |||
Number | |||
Object | |||
Option | |||
Packages | |||
Password | |||
Plugin | |||
Radio | |||
RegExp | |||
Reset | |||
Select | |||
String | |||
Submit | |||
Text | |||
Textarea | |||
Window | |||
alert | |||
arguments | |||
assign | |||
blur | |||
break | |||
callee | |||
caller | |||
captureEvents | |||
case | |||
clearInterval | |||
clearTimeout | |||
close | |||
closed | |||
comment | |||
confirm | |||
constructor | |||
continue | |||
default | |||
defaultStatus | |||
delete | |||
do | |||
document | |||
else | |||
escape | |||
eval | |||
export | |||
find | |||
focus | |||
for | |||
frames | |||
function | |||
getClass | |||
history | |||
home | |||
if | |||
import | |||
in | |||
innerHeight | |||
innerWidth | |||
isFinite | |||
isNan | |||
java | |||
label | |||
length | |||
location | |||
locationbar | |||
menubar | |||
moveBy | |||
moveTo | |||
name | |||
navigate | |||
navigator | |||
netscape | |||
new | |||
onBlur | |||
onError | |||
onFocus | |||
onLoad | |||
onUnload | |||
open | |||
opener | |||
outerHeight | |||
outerWidth | |||
pageXoffset | |||
pageYoffset | |||
parent | |||
parseFloat | |||
parseInt | |||
personalbar | |||
prompt | |||
prototype | |||
ref | |||
releaseEvents | |||
resizeBy | |||
resizeTo | |||
return | |||
routeEvent | |||
scroll | |||
scrollBy | |||
scrollTo | |||
scrollbars | |||
self | |||
setInterval | |||
setTimeout | |||
status | |||
statusbar | |||
stop | |||
sun | |||
switch | |||
taint | |||
this | |||
toString | |||
toolbar | |||
top | |||
typeof | |||
unescape | |||
untaint | |||
unwatch | |||
valueOf | |||
var | |||
void | |||
watch | |||
while | |||
window | |||
with |
@ -0,0 +1,37 @@ | |||
abstract | |||
break | |||
case | |||
catch | |||
const | |||
continue | |||
do | |||
else | |||
elseif | |||
end | |||
eval | |||
export | |||
false | |||
finally | |||
for | |||
function | |||
global | |||
if | |||
ifelse | |||
immutable | |||
import | |||
importall | |||
in | |||
let | |||
macro | |||
module | |||
otherwise | |||
quote | |||
return | |||
switch | |||
throw | |||
true | |||
try | |||
type | |||
typealias | |||
using | |||
while |
@ -0,0 +1,21 @@ | |||
and | |||
break | |||
do | |||
else | |||
elseif | |||
end | |||
false | |||
for | |||
function | |||
if | |||
in | |||
local | |||
nil | |||
not | |||
or | |||
repeat | |||
return | |||
then | |||
true | |||
until | |||
while |
@ -0,0 +1,70 @@ | |||
addr | |||
and | |||
as | |||
asm | |||
atomic | |||
bind | |||
block | |||
break | |||
case | |||
cast | |||
concept | |||
const | |||
continue | |||
converter | |||
defer | |||
discard | |||
distinct | |||
div | |||
do | |||
elif | |||
else | |||
end | |||
enum | |||
except | |||
export | |||
finally | |||
for | |||
from | |||
func | |||
generic | |||
if | |||
import | |||
in | |||
include | |||
interface | |||
is | |||
isnot | |||
iterator | |||
let | |||
macro | |||
method | |||
mixin | |||
mod | |||
nil | |||
not | |||
notin | |||
object | |||
of | |||
or | |||
out | |||
proc | |||
ptr | |||
raise | |||
ref | |||
return | |||
shl | |||
shr | |||
static | |||
template | |||
try | |||
tuple | |||
type | |||
using | |||
var | |||
when | |||
while | |||
with | |||
without | |||
xor | |||
yield |
@ -0,0 +1,161 @@ | |||
auto | |||
break | |||
case | |||
char | |||
const | |||
continue | |||
default | |||
do | |||
double | |||
else | |||
enum | |||
extern | |||
float | |||
for | |||
goto | |||
if | |||
inline | |||
int | |||
long | |||
register | |||
restrict | |||
return | |||
short | |||
signed | |||
sizeof | |||
static | |||
struct | |||
switch | |||
typedef | |||
union | |||
unsigned | |||
void | |||
volatile | |||
while | |||
_Alignas | |||
_Alignof | |||
_Atomic | |||
_Bool | |||
_Complex | |||
_Generic | |||
_Imaginary | |||
_Noreturn | |||
_Static_assert | |||
_Thread_local | |||
alignas | |||
alignof | |||
atomic_ | |||
bool | |||
complex | |||
imaginary | |||
noreturn | |||
static_assert | |||
thread_local | |||
#if | |||
#elif | |||
#else | |||
#endif | |||
defined | |||
#ifdef | |||
#ifndef | |||
#define | |||
#undef | |||
#include | |||
#line | |||
#error | |||
#pragma | |||
_Pragma | |||
asm | |||
fortran | |||
#import | |||
self | |||
_cmd | |||
instancetype | |||
__bridge | |||
__bridge_transfer | |||
__bridge_retained | |||
__bridge_retain | |||
@not_keyword | |||
@class | |||
@compatibility_alias | |||
@defs | |||
@encode | |||
@end | |||
@implementation | |||
@interface | |||
@private | |||
@protected | |||
@protocol | |||
@public | |||
@selector | |||
@throw | |||
@try | |||
@catch | |||
@finally | |||
@synchronized | |||
@autoreleasepool | |||
@property | |||
@package | |||
@required | |||
@optional | |||
@synthesize | |||
@dynamic | |||
@import | |||
@available | |||
__attribute__((visibility("default"))) | |||
__attribute__((visibility("hidden"))) | |||
__attribute__((deprecated)) | |||
__attribute__((unavailable)) | |||
__attribute__((objc_exception)) | |||
__attribute__((objc_root_class)) | |||
__covariant | |||
__contravariant | |||
__kindof | |||
getter= | |||
setter= | |||
readonly | |||
readwrite | |||
assign | |||
retain | |||
copy | |||
nonatomic | |||
atomic | |||
strong | |||
weak | |||
unsafe_unretained | |||
nonnull | |||
nullable | |||
null_unspecified | |||
null_resettable | |||
class | |||
__attribute__((deprecated)) | |||
in | |||
out | |||
inout | |||
oneway | |||
bycopy | |||
byref | |||
nonnull | |||
nullable | |||
null_unspecified | |||
__attribute__((unused)) | |||
super | |||
true | |||
false | |||
__objc_yes | |||
__objc_no | |||
Class | |||
id | |||
SEL | |||
IMP | |||
BOOL | |||
STR | |||
NSInteger | |||
NSUInteger | |||
YES | |||
NO | |||
Nil | |||
nil | |||
__strong | |||
__unsafe_unretained | |||
__autoreleasing |
@ -0,0 +1,46 @@ | |||
# GNU Octave, and probably proprietary MATLAB | |||
# https://www.gnu.org/software/octave/doc/interpreter/Keywords.html | |||
__FILE__ | |||
__LINE__ | |||
break | |||
case | |||
catch | |||
classdef | |||
continue | |||
do | |||
else | |||
elseif | |||
end | |||
end_try_catch | |||
end_unwind_protect | |||
endclassdef | |||
endenumeration | |||
endevents | |||
endfor | |||
endfunction | |||
endif | |||
endmethods | |||
endparfor | |||
endproperties | |||
endswitch | |||
endwhile | |||
enumeration | |||
events | |||
for | |||
function | |||
global | |||
if | |||
methods | |||
otherwise | |||
parfor | |||
persistent | |||
properties | |||
return | |||
static | |||
switch | |||
try | |||
unitl | |||
unwind_protect | |||
unwind_protect_cleanup | |||
while |
@ -0,0 +1,379 @@ | |||
ArithmeticError | |||
AssertionError | |||
AttributeError | |||
BaseException | |||
BufferError | |||
BytesWarning | |||
DeprecationWarning | |||
EOFError | |||
Ellipsis | |||
EnvironmentError | |||
Exception | |||
False | |||
FloatingPointError | |||
FutureWarning | |||
GeneratorExit | |||
IOError | |||
ImportError | |||
ImportWarning | |||
IndentationError | |||
IndexError | |||
KeyError | |||
KeyboardInterrupt | |||
LookupError | |||
MemoryError | |||
NameError | |||
None | |||
NotImplemented | |||
NotImplementedError | |||
OSError | |||
OverflowError | |||
PendingDeprecationWarning | |||
ReferenceError | |||
RuntimeError | |||
RuntimeWarning | |||
StandardError | |||
StopIteration | |||
SyntaxError | |||
SyntaxWarning | |||
SystemError | |||
SystemExit | |||
TabError | |||
True | |||
TypeError | |||
UnboundLocalError | |||
UnicodeDecodeError | |||
UnicodeEncodeError | |||
UnicodeError | |||
UnicodeTranslateError | |||
UnicodeWarning | |||
UserWarning | |||
ValueError | |||
Warning | |||
ZeroDivisionError | |||
__builtins__ | |||
__debug__ | |||
__doc__ | |||
__file__ | |||
__future__ | |||
__import__ | |||
__init__ | |||
__main__ | |||
__name__ | |||
__package__ | |||
_dummy_thread | |||
_thread | |||
abc | |||
abs | |||
aifc | |||
all | |||
and | |||
any | |||
apply | |||
argparse | |||
array | |||
as | |||
assert | |||
ast | |||
asynchat | |||
asyncio | |||
asyncore | |||
atexit | |||
audioop | |||
base64 | |||
basestring | |||
bdb | |||
bin | |||
binascii | |||
binhex | |||
bisect | |||
bool | |||
break | |||
buffer | |||
builtins | |||
bytearray | |||
bytes | |||
bz2 | |||
calendar | |||
callable | |||
cgi | |||
cgitb | |||
chr | |||
chuck | |||
class | |||
classmethod | |||
cmath | |||
cmd | |||
cmp | |||
code | |||
codecs | |||
codeop | |||
coerce | |||
collections | |||
colorsys | |||
compile | |||
compileall | |||
complex | |||
concurrent | |||
configparser | |||
contextlib | |||
continue | |||
copy | |||
copyreg | |||
copyright | |||
credits | |||
crypt | |||
csv | |||
ctypes | |||
curses | |||
datetime | |||
dbm | |||
decimal | |||
def | |||
del | |||
delattr | |||
dict | |||
difflib | |||
dir | |||
dis | |||
distutils | |||
divmod | |||
doctest | |||
dummy_threading | |||
elif | |||
else | |||
enumerate | |||
ensurepip | |||
enum | |||
errno | |||
eval | |||
except | |||
exec | |||
execfile | |||
exit | |||
faulthandler | |||
fcntl | |||
file | |||
filecmp | |||
fileinput | |||
filter | |||
finally | |||
float | |||
fnmatch | |||
for | |||
format | |||
formatter | |||
fpectl | |||
fractions | |||
from | |||
frozenset | |||
ftplib | |||
functools | |||
gc | |||
getattr | |||
getopt | |||
getpass | |||
gettext | |||
glob | |||
global | |||
globals | |||
grp | |||
gzip | |||
hasattr | |||
hash | |||
hashlib | |||
heapq | |||
help | |||
hex | |||
hmac | |||
html | |||
http | |||
id | |||
if | |||
imghdr | |||
imp | |||
impalib | |||
import | |||
importlib | |||
in | |||
input | |||
inspect | |||
int | |||
intern | |||
io | |||
ipaddress | |||
is | |||
isinstance | |||
issubclass | |||
iter | |||
itertools | |||
json | |||
keyword | |||
lambda | |||
len | |||
license | |||
linecache | |||
list | |||
locale | |||
locals | |||
logging | |||
long | |||
lzma | |||
macpath | |||
mailbox | |||
mailcap | |||
map | |||
marshal | |||
math | |||
max | |||
memoryview | |||
mimetypes | |||
min | |||
mmap | |||
modulefinder | |||
msilib | |||
msvcrt | |||
multiprocessing | |||
netrc | |||
next | |||
nis | |||
nntplib | |||
not | |||
numbers | |||
object | |||
oct | |||
open | |||
operator | |||
optparse | |||
or | |||
ord | |||
os | |||
ossaudiodev | |||
parser | |||
pass | |||
pathlib | |||
pdb | |||
pickle | |||
pickletools | |||
pipes | |||
pkgutil | |||
platform | |||
plistlib | |||
poplib | |||
posix | |||
pow | |||
pprint | |||
profile | |||
property | |||
pty | |||
pwd | |||
py_compiler | |||
pyclbr | |||
pydoc | |||
queue | |||
quit | |||
quopri | |||
raise | |||
random | |||
range | |||
raw_input | |||
re | |||
readline | |||
reduce | |||
reload | |||
repr | |||
reprlib | |||
resource | |||
return | |||
reversed | |||
rlcompleter | |||
round | |||
runpy | |||
sched | |||
select | |||
selectors | |||
self | |||
set | |||
setattr | |||
shelve | |||
shlex | |||
shutil | |||
signal | |||
site | |||
slice | |||
smtpd | |||
smtplib | |||
sndhdr | |||
socket | |||
socketserver | |||
sorted | |||
spwd | |||
sqlite3 | |||
ssl | |||
stat | |||
staticmethod | |||
statistics | |||
str | |||
string | |||
stringprep | |||
struct | |||
subprocess | |||
sum | |||
sunau | |||
super | |||
symbol | |||
symtable | |||
sys | |||
sysconfig | |||
syslog | |||
tabnanny | |||
tarfile | |||
telnetlib | |||
tempfile | |||
termios | |||
test | |||
textwrap | |||
threading | |||
time | |||
timeit | |||
tkinter | |||
token | |||
tokenize | |||
trace | |||
traceback | |||
tracemalloc | |||
try | |||
tty | |||
tuple | |||
turtle | |||
type | |||
types | |||
unichr | |||
unicode | |||
unicodedata | |||
unittest | |||
urllib | |||
uu | |||
uuid | |||
vars | |||
venv | |||
warnings | |||
wave | |||
weakref | |||
webbrowser | |||
while | |||
winsound | |||
winreg | |||
with | |||
wsgiref | |||
xdrlib | |||
xml | |||
xmlrpc | |||
xrange | |||
yield | |||
zip | |||
zipfile | |||
zipimport | |||
zlib |
@ -0,0 +1,183 @@ | |||
AlignBottom | |||
AlignCenter | |||
AlignHCenter | |||
AlignLeft | |||
AlignRight | |||
AlignTop | |||
AlignVCenter | |||
AnchorAnimation | |||
AnchorChanges | |||
Audio | |||
Behavior | |||
Binding | |||
BorderImage | |||
ColorAnimation | |||
Column | |||
Component | |||
Connections | |||
Easing | |||
Flickable | |||
Flipable | |||
Flow | |||
FocusScope | |||
GestureArea | |||
Grid | |||
GridView | |||
Horizontal | |||
Image | |||
InBack | |||
InBounce | |||
InCirc | |||
InCubic | |||
InElastic | |||
InExpo | |||
InOutBack | |||
InOutBounce | |||
InOutCirc | |||
InOutCubic | |||
InOutElastic | |||
InOutExpo | |||
InOutQuad | |||
InOutQuart | |||
InOutQuint | |||
InQuad | |||
InQuart | |||
InQuint | |||
InQuint | |||
InSine | |||
Item | |||
LayoutItem | |||
LeftButton | |||
Linear | |||
ListElement | |||
ListModel | |||
ListView | |||
Loader | |||
MidButton | |||
MiddleButton | |||
MouseArea | |||
NoButton | |||
NumberAnimation | |||
OutBack | |||
OutBounce | |||
OutCirc | |||
OutCubic | |||
OutElastic | |||
OutExpo | |||
OutInBack | |||
OutInBounce | |||
OutInCirc | |||
OutInCubic | |||
OutInElastic | |||
OutInExpo | |||
OutInQuad | |||
OutInQuart | |||
OutInQuint | |||
OutQuad | |||
OutQuart | |||
OutQuint | |||
OutSine | |||
Package | |||
ParallelAnimation | |||
ParentAnimation | |||
ParentChange | |||
ParticleMotionGravity | |||
ParticleMotionLinear | |||
ParticleMotionWander | |||
Particles | |||
Path | |||
PathAttribute | |||
PathCubic | |||
PathLine | |||
PathPercent | |||
PathQuad | |||
PathView | |||
PauseAnimation | |||
PropertyAction | |||
PropertyAnimation | |||
PropertyChanges | |||
Qt | |||
QtObject | |||
Rectangle | |||
Repeater | |||
RightButton | |||
Rotation | |||
RotationAnimation | |||
Row | |||
Scale | |||
ScriptAction | |||
SequentialAnimation | |||
SmoothedAnimation | |||
SoundEffect | |||
SpringFollow | |||
State | |||
StateChangeScript | |||
StateGroup | |||
SystemPalette | |||
Text | |||
TextEdit | |||
TextInput | |||
Timer | |||
Transition | |||
Translate | |||
Vertical | |||
Video | |||
ViewsPositionersMediaEffects | |||
VisualDataModel | |||
VisualItemModel | |||
WebView | |||
WorkerScript | |||
XmlListModel | |||
XmlRole | |||
alias | |||
as | |||
bool | |||
break | |||
case | |||
catch | |||
color | |||
const | |||
continue | |||
date | |||
debugger | |||
default | |||
delete | |||
do | |||
double | |||
else | |||
enum | |||
false | |||
false | |||
finally | |||
for | |||
function | |||
if | |||
import | |||
import | |||
in | |||
instanceof | |||
int | |||
let | |||
new | |||
null | |||
on | |||
parent | |||
property | |||
real | |||
return | |||
signal | |||
string | |||
switch | |||
this | |||
throw | |||
true | |||
try | |||
typeof | |||
undefined | |||
url | |||
var | |||
variant | |||
void | |||
while | |||
with | |||
yield |
@ -0,0 +1,181 @@ | |||
$! | |||
$" | |||
$$ | |||
$& | |||
$' | |||
$* | |||
$+ | |||
$, | |||
$-0 | |||
$-F | |||
$-I | |||
$-K | |||
$-a | |||
$-d | |||
$-i | |||
$-l | |||
$-p | |||
$-v | |||
$-w | |||
$. | |||
$/ | |||
$0 | |||
$1 | |||
$10 | |||
$11 | |||
$2 | |||
$3 | |||
$4 | |||
$5 | |||
$6 | |||
$7 | |||
$8 | |||
$9 | |||
$: | |||
$; | |||
$< | |||
$= | |||
$> | |||
$? | |||
$@ | |||
$DEBUG | |||
$FILENAME | |||
$KCODE | |||
$LOADED_FEATURES | |||
$LOAD_PATH | |||
$PROGRAM_NAME | |||
$SAFE | |||
$VERBOSE | |||
$\ | |||
$_ | |||
$` | |||
$deferr | |||
$defout | |||
$stderr | |||
$stdin | |||
$stdout | |||
$~ | |||
ARGF | |||
ARGV | |||
Array | |||
BEGIN | |||
DATA | |||
END | |||
ENV | |||
FALSE | |||
Float | |||
Integer | |||
NIL | |||
PLATFORM | |||
RELEASE_DATE | |||
RUBY_COPYRIGHT | |||
RUBY_DESCRIPTION | |||
RUBY_PATCHLEVEL | |||
RUBY_PLATFORM | |||
RUBY_RELEASE_DATE | |||
RUBY_VERSION | |||
SCRIPT_LINES__ | |||
STDERR | |||
STDIN | |||
STDOUT | |||
String | |||
TOPLEVEL_BINDING | |||
TRUE | |||
VERSION | |||
__method__ | |||
` | |||
abort | |||
alias | |||
and | |||
at_exit | |||
autoload | |||
autoload? | |||
begin | |||
binding | |||
block_given | |||
break | |||
callcc | |||
caller | |||
case | |||
catch | |||
chomp | |||
chomp! | |||
chop | |||
chop | |||
class | |||
def | |||
defined? | |||
do | |||
else | |||
elsif | |||
end | |||
ensure | |||
eval | |||
exec | |||
exit | |||
exit! | |||
fail | |||
false | |||
for | |||
fork | |||
format | |||
getc | |||
gets | |||
global_variables | |||
gsub | |||
gsub! | |||
if | |||
in | |||
iterator? | |||
lambda | |||
load | |||
local_variables | |||
loop | |||
module | |||
next | |||
nil | |||
not | |||
open | |||
or | |||
p | |||
printf | |||
proc | |||
putc | |||
puts | |||
raise | |||
rand | |||
readline | |||
readlines | |||
redo | |||
require | |||
require_relative | |||
rescue | |||
retry | |||
return | |||
scan | |||
select | |||
self | |||
set_trace_func | |||
sleep | |||
split | |||
sprintf | |||
srand | |||
sub | |||
sub! | |||
super | |||
syscall | |||
system | |||
test | |||
then | |||
throw | |||
trace_var | |||
trap | |||
true | |||
undef | |||
unless | |||
until | |||
untrace_var | |||
warn | |||
when | |||
while | |||
yield |
@ -0,0 +1,216 @@ | |||
case-lambda | |||
call/cc | |||
class | |||
define-class | |||
exit-handler | |||
field | |||
import | |||
inherit | |||
init-field | |||
interface | |||
let*-values | |||
let-values | |||
let/ec | |||
mixin | |||
opt-lambda | |||
override | |||
protect | |||
provide | |||
public | |||
rename | |||
require | |||
require-for-syntax | |||
syntax | |||
syntax-case | |||
syntax-error | |||
unit/sig | |||
unless | |||
when | |||
with-syntax | |||
and | |||
begin | |||
call-with-current-continuation | |||
call-with-input-file | |||
call-with-output-file | |||
case | |||
cond | |||
define | |||
define-syntax | |||
delay | |||
do | |||
dynamic-wind | |||
else | |||
for-each | |||
if | |||
lambda | |||
let | |||
let* | |||
let-syntax | |||
letrec | |||
letrec-syntax | |||
map | |||
or | |||
syntax-rules | |||
abs | |||
acos | |||
angle | |||
append | |||
apply | |||
asin | |||
assoc | |||
assq | |||
assv | |||
atan | |||
boolean? | |||
caar | |||
cadr | |||
call-with-input-file | |||
call-with-output-file | |||
call-with-values | |||
car | |||
cdddar | |||
cddddr | |||
cdr | |||
ceiling | |||
char->integer | |||
char-alphabetic? | |||
char-ci<=? | |||
char-ci<? | |||
char-ci=? | |||
char-ci>=? | |||
char-ci>? | |||
char-downcase | |||
char-lower-case? | |||
char-numeric? | |||
char-ready? | |||
char-upcase | |||
char-upper-case? | |||
char-whitespace? | |||
char<=? | |||
char<? | |||
char=? | |||
char>=? | |||
char>? | |||
char? | |||
close-input-port | |||
close-output-port | |||
complex? | |||
cons | |||
cos | |||
current-input-port | |||
current-output-port | |||
denominator | |||
display | |||
eof-object? | |||
eq? | |||
equal? | |||
eqv? | |||
eval | |||
even? | |||
exact->inexact | |||
exact? | |||
exp | |||
expt | |||
#f | |||
floor | |||
force | |||
gcd | |||
imag-part | |||
inexact->exact | |||
inexact? | |||
input-port? | |||
integer->char | |||
integer? | |||
interaction-environment | |||
lcm | |||
length | |||
list | |||
list->string | |||
list->vector | |||
list-ref | |||
list-tail | |||
list? | |||
load | |||
log | |||
magnitude | |||
make-polar | |||
make-rectangular | |||
make-string | |||
make-vector | |||
max | |||
member | |||
memq | |||
memv | |||
min | |||
modulo | |||
negative? | |||
newline | |||
not | |||
null-environment | |||
null? | |||
number->string | |||
number? | |||
numerator | |||
odd? | |||
open-input-file | |||
open-output-file | |||
output-port? | |||
pair? | |||
peek-char | |||
port? | |||
positive? | |||
procedure? | |||
quasiquote | |||
quote | |||
quotient | |||
rational? | |||
rationalize | |||
read | |||
read-char | |||
real-part | |||
real? | |||
remainder | |||
reverse | |||
round | |||
scheme-report-environment | |||
set! | |||
set-car! | |||
set-cdr! | |||
sin | |||
sqrt | |||
string | |||
string->list | |||
string->number | |||
string->symbol | |||
string-append | |||
string-ci<=? | |||
string-ci<? | |||
string-ci=? | |||
string-ci>=? | |||
string-ci>? | |||
string-copy | |||
string-fill! | |||
string-length | |||
string-ref | |||
string-set! | |||
string<=? | |||
string<? | |||
string=? | |||
string>=? | |||
string>? | |||
string? | |||
substring | |||
symbol->string | |||
symbol? | |||
#t | |||
tan | |||
transcript-off | |||
transcript-on | |||
truncate | |||
values | |||
vector | |||
vector->list | |||
vector-fill! | |||
vector-length | |||
vector-ref | |||
vector-set! |
@ -0,0 +1,182 @@ | |||
# Bash Family Shell Dictionary | |||
# http://www.gnu.org/software/bash/manual/bash.html | |||
. | |||
: | |||
[ | |||
alias | |||
bg | |||
bind | |||
break | |||
builtin | |||
caller | |||
cd | |||
command | |||
compgen | |||
complete | |||
compopt | |||
continue | |||
declare | |||
dirs | |||
disown | |||
echo | |||
enable | |||
eval | |||
exec | |||
exit | |||
export | |||
fc | |||
fg | |||
getopts | |||
hash | |||
help | |||
history | |||
jobs | |||
kill | |||
let | |||
local | |||
logout | |||
mapfile | |||
popd | |||
printf | |||
pushd | |||
pwd | |||
read | |||
readarray | |||
readonly | |||
return | |||
set | |||
shift | |||
shopt | |||
source | |||
suspend | |||
test | |||
times | |||
trap | |||
type | |||
typeset | |||
ulimit | |||
umask | |||
unalias | |||
unset | |||
wait | |||
! | |||
[[ | |||
]] | |||
case | |||
do | |||
done | |||
elif | |||
else | |||
esac | |||
fi | |||
for | |||
function | |||
if | |||
in | |||
select | |||
then | |||
time | |||
until | |||
while | |||
{ | |||
} | |||
! | |||
# | |||
$ | |||
* | |||
- | |||
0 | |||
? | |||
@ | |||
_ | |||
BASH | |||
BASH_ALIASES | |||
BASH_ARGC | |||
BASH_ARGV | |||
BASH_CMDS | |||
BASH_COMMAND | |||
BASH_ENV | |||
BASH_EXECUTION_STRING | |||
BASH_LINENO | |||
BASH_REMATCH | |||
BASH_SOURCE | |||
BASH_SUBSHELL | |||
BASH_VERSINFO | |||
BASH_VERSION | |||
BASH_XTRACEFD | |||
BASHOPTS | |||
BASHPID | |||
CDPATH | |||
COLUMNS | |||
COMP_CWORD | |||
COMP_KEY | |||
COMP_LINE | |||
COMP_POINT | |||
COMP_TYPE | |||
COMP_WORDBREAKS | |||
COMP_WORDS | |||
COMPREPLY | |||
DIRSTACK | |||
EMACS | |||
EUID | |||
FCEDIT | |||
FIGNORE | |||
FUNCNAME | |||
GLOBIGNORE | |||
GROUPS | |||
HISTCMD | |||
HISTCONTROL | |||
HISTFILE | |||
HISTFILESIZE | |||
HISTIGNORE | |||
HISTSIZE | |||
HISTTIMEFORMAT | |||
HOME | |||
HOSTFILE | |||
HOSTNAME | |||
HOSTTYPE | |||
IFS | |||
IGNOREEOF | |||
INPUTRC | |||
LANG | |||
LC_ALL | |||
LC_COLLATE | |||
LC_CTYPE | |||
LC_MESSAGES | |||
LC_MESSAGES | |||
LC_NUMERIC | |||
LINENO | |||
LINES | |||
MACHTYPE | |||
MAILCHECK | |||
MAILPATH | |||
OLDPWD | |||
OPTARG | |||
OPTERR | |||
OPTIND | |||
OSTYPE | |||
PATH | |||
PIPESTATUS | |||
POSIXLY_CORRECT | |||
PPID | |||
PROMPT_COMMAND | |||
PROMPT_DIRTRIM | |||
PS1 | |||
PS2 | |||
PS3 | |||
PS4 | |||
PWD | |||
RANDOM | |||
REPLY | |||
SECONDS | |||
SHELL | |||
SHELLOPTS | |||
SHLVL | |||
TEXTDOMAIN | |||
TEXTDOMAINDIR | |||
TIMEFORMAT | |||
TMOUT | |||
TMPDIR | |||
UID |
@ -0,0 +1,87 @@ | |||
associatedtype | |||
class | |||
deinit | |||
enum | |||