Skip to content

Instantly share code, notes, and snippets.

View nontravis's full-sized avatar

Nonthawit Doungsodsri nontravis

View GitHub Profile
nmap <S-l> gt
nmap <S-h> gT
nmap <S-w>L :action VimWindowRight<CR>
nmap <S-w>H :action VimWindowLeft<CR>
nmap <S-w>J :action VimWindowDown<CR>
nmap <S-w>K :action VimWindowUp<CR>
nmap <M-j> 5j5<C-e>
nmap <M-k> 5k5<C-y>
"for window <C-r>" in insert mode, for mac cmd+v
imap <C-r>" <esc>:action EditorPaste<CR>a
@nontravis
nontravis / settings.json
Created August 11, 2018 13:44
VScode vim setting
// ============ vim ============ //
"vim.easymotion": true,
"vim.incsearch": true,
"vim.useSystemClipboard": true,
"vim.useCtrlKeys": true,
"vim.hlsearch": true,
"vim.otherModesKeyBindingsNonRecursive": [
{
"before": [
"L"
@nontravis
nontravis / ValidateConstantNew.kt
Created August 2, 2018 07:04
ValidateConstantNew.kt
//common validate = 1
const val VALIDATE = 0x000000000000101
const val INVALIDATE = 0x000000000000102
//common string = 2
const val INVALIDATE_EMPTY = 0x000000000000201 or INVALIDATE
//email validate = 3
const val INVALIDATE_EMAIL = 0x000000000000301 or INVALIDATE
const val INVALIDATE_EMAIL_FORMAT = 0x000000000000302 or INVALIDATE_EMAIL
@nontravis
nontravis / ValidateConstant.kt
Last active July 30, 2018 09:45
ValidateLogic.kt
fun @receiver:ValidateString Int.isValidate(): Boolean = this and VALIDATE == VALIDATE
fun @receiver:ValidateString Int.isInvalidate(): Boolean = this and INVALIDATE == INVALIDATE
fun String?.validateCommon(): Int {
if (this.isNullOrEmpty()) return INVALIDATE_EMPTY
return VALIDATE
}
fun @receiver:ValidateString Int.isInvalidateEmail(): Boolean = this and INVALIDATE_EMAIL == INVALIDATE_EMAIL
fun String?.validateEmail(): Int {
if (this.validateCommon().isInvalidate()) return this.validateCommon()
@nontravis
nontravis / Validate.kt
Last active July 30, 2018 09:45
Validate.kt
import android.support.annotation.IntDef
import java.util.regex.Pattern
/**
* Created by「 The Khaeng 」on 27 Mar 2018 :)
*/
//common validate at index 0
const val VALIDATE = 0x0001
const val INVALIDATE = 0x0002
@nontravis
nontravis / ValidateConstant.kt
Last active July 30, 2018 09:39
ValidateConstant.kt
//common validate at index 0
const val VALIDATE = 0x0001
const val INVALIDATE = 0x0002
//common string validate at index 1
const val INVALIDATE_EMPTY = 0x0010 or INVALIDATE
//email validate at index 2
const val INVALIDATE_EMAIL = 0x0100 or INVALIDATE
const val INVALIDATE_EMAIL_FORMAT = 0x0200 or INVALIDATE_EMAIL
@nontravis
nontravis / SystemUISpaceView.kt
Created June 2, 2018 14:42
SystemUISpaceView.kt
package com.thekhaeng.systemui.view
import android.content.Context
import android.graphics.Rect
import android.os.Build
import android.support.annotation.RequiresApi
import android.util.AttributeSet
import android.view.View
import android.view.WindowInsets
import com.thekhaeng.systemui.R
@nontravis
nontravis / get_statusbar_height.kt
Created June 2, 2018 14:39
get_statusbar_height.kt
var statusBarHeight: Int = 0
ViewCompat.setOnApplyWindowInsetsListener(rootView) { view, windowInsets ->
statusBarHeight = windowInsets.systemWindowInsetTop
return windowInsets //pass insets down to child view
}
@nontravis
nontravis / CustomLayout.kt
Last active June 2, 2018 13:58
CustomLayout.kt
class CustomLayout : LinearLayout {
...
@Suppress("OverridingDeprecatedMember")
override
fun fitSystemWindows(insets: Rect): Boolean {
// Pre API 20: do something with insets
return true //consume inset: not pass insets down
@nontravis
nontravis / setOnApplyWindowInsetsListener.kt
Last active June 2, 2018 13:48
setOnApplyWindowInsetsListener.kt
ViewCompat.setOnApplyWindowInsetsListener(rootView) { view, windowInsets ->
// do something with insets
return windowInsets.consumeSystemWindowInsets() //consume inset: not pass insets down
//or
return windowInsets //pass insets down to child view
}